Files
stgsharp/obj/StgSharp.Native/Debug/x64/sn_native.cod
T
2026-02-28 18:08:26 +08:00

61744 lines
1.7 MiB
Plaintext

; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
include listing.inc
INCLUDELIB MSVCRTD
INCLUDELIB OLDNAMES
_DATA SEGMENT
COMM infolog:BYTE:0200H
_DATA ENDS
msvcjmc SEGMENT
__5C8CA4D3_mmintrin@h DB 01H
__8C83BECC_concurrencysal@h DB 01H
__608E3340_sal@h DB 01H
__FB67E29A_vadefs@h DB 01H
__1D1B619C_vcruntime@h DB 01H
__735960E1_corecrt@h DB 01H
__211DB995_corecrt_malloc@h DB 01H
__7CD62D9E_malloc@h DB 01H
__9DCE0DC8_xmmintrin@h DB 01H
__4C2AD0C7_winpackagefamily@h DB 01H
__9DED9ED1_winapifamily@h DB 01H
__12FEDF4E_sdkddkver@h DB 01H
__9BAEE128_excpt@h DB 01H
__B7B53233_stdarg@h DB 01H
__6B04FCB3_specstrings_undef@h DB 01H
__F4027AF7_specstrings_strict@h DB 01H
__B90340D4_sdv_driverspecs@h DB 01H
__BFFF5AD3_driverspecs@h DB 01H
__32847078_specstrings@h DB 01H
__108B2620_corecrt_wctype@h DB 01H
__6CD6613D_ctype@h DB 01H
__30902A1F_kernelspecs@h DB 01H
__376FD5CA_basetsd@h DB 01H
__13DE2371_errno@h DB 01H
__8C6AE390_vcruntime_string@h DB 01H
__8ACB2152_corecrt_memcpy_s@h DB 01H
__EA6C9D17_corecrt_memory@h DB 01H
__0DF2AF52_corecrt_wstring@h DB 01H
__6E889ECC_string@h DB 01H
__9BEDF4DE_guiddef@h DB 01H
__51BFD2FE_pshpack4@h DB 01H
__31652CEA_poppack@h DB 01H
__5532AE4C_pshpack2@h DB 01H
__58A52B9A_pshpack8@h DB 01H
__57741015_pshpack1@h DB 01H
__CDE68C90_apiset@h DB 01H
__0BF06E8D_ktmtypes@h DB 01H
__40C200C0_winnt@h DB 01H
__9336F789_minwindef@h DB 01H
__55136115_windef@h DB 01H
__32205BF0_apisetcconv@h DB 01H
__B48FDEA0_minwinbase@h DB 01H
__3551B028_apiquery2@h DB 01H
__65BE04AA_processenv@h DB 01H
__4767CA46_fileapi@h DB 01H
__282E6C4B_fileapifromapp@h DB 01H
__393AF12C_debugapi@h DB 01H
__EBC502B8_utilapiset@h DB 01H
__1EAD8C69_handleapi@h DB 01H
__D8EF9B29_errhandlingapi@h DB 01H
__97FC1204_fibersapi@h DB 01H
__27448220_namedpipeapi@h DB 01H
__6EA33B2A_profileapi@h DB 01H
__EAC6F673_heapapi@h DB 01H
__D64EEA5A_ioapiset@h DB 01H
__144BD4B6_synchapi@h DB 01H
__03B1C640_interlockedapi@h DB 01H
__DC64CB38_processthreadsapi@h DB 01H
__D719B518_sysinfoapi@h DB 01H
__410385B1_memoryapi@h DB 01H
__C1AD45EF_enclaveapi@h DB 01H
__F4C3AA32_threadpoollegacyapiset@h DB 01H
__AC5A7A9F_threadpoolapiset@h DB 01H
__F5254B21_jobapi@h DB 01H
__BCEA6EE8_jobapi2@h DB 01H
__D18ACE72_wow64apiset@h DB 01H
__669B0D4A_libloaderapi@h DB 01H
__645F7034_securitybaseapi@h DB 01H
__67E58557_namespaceapi@h DB 01H
__599D9D3A_systemtopologyapi@h DB 01H
__2337E373_processtopologyapi@h DB 01H
__02BFF239_securityappcontainer@h DB 01H
__9C196272_realtimeapiset@h DB 01H
__5AB313A4_winerror@h DB 01H
__B7E7187B_timezoneapi@h DB 01H
__6DE9EB6F_winbase@h DB 01H
__56B2AFF2_wingdi@h DB 01H
__BA1161A9_tvout@h DB 01H
__0501A018_winuser@h DB 01H
__EF12FA99_datetimeapi@h DB 01H
__8FA7C3CA_winnls@h DB 01H
__390F0C47_stringapiset@h DB 01H
__28605B0A_wincontypes@h DB 01H
__BFBDE86D_consoleapi@h DB 01H
__C3CAFBF0_consoleapi2@h DB 01H
__C20891C7_consoleapi3@h DB 01H
__717C98B6_wincon@h DB 01H
__2884C177_verrsrc@h DB 01H
__A3FD3A34_winver@h DB 01H
__6F8AD9F1_reason@h DB 01H
__4C90FD6F_winreg@h DB 01H
__68AFEBAD_wnnc@h DB 01H
__5A7AB086_winnetwk@h DB 01H
__2FE8A10C_stralign@h DB 01H
__34558472_winsvc@h DB 01H
__058845F1_mcx@h DB 01H
__7F16006B_ime_cmodes@h DB 01H
__0A3AF599_imm@h DB 01H
__9349FE86_windows@h DB 01H
__639A050C_sn_internal@h DB 01H
__836A8CFC_stdint@h DB 01H
__714FE6D7_sn_target@h DB 01H
__60B45B40_corecrt_stdio_config@h DB 01H
__CFA3741E_corecrt_wstdio@h DB 01H
__B3FE3303_stdio@h DB 01H
__955456CD_stddef@h DB 01H
__99AED4FB_corecrt_search@h DB 01H
__8B813BF6_corecrt_wstdlib@h DB 01H
__3D1CA2C3_limits@h DB 01H
__E8FB0A68_stdlib@h DB 01H
__1D9A7FA2_corecrt_math@h DB 01H
__2E93F1C0_math@h DB 01H
__9FB25DBE_assert@h DB 01H
__F8AC8404_emmintrin@h DB 01H
__47E843D2_intrin0@inl@h DB 01H
__130964FF_setjmp@h DB 01H
__270DEC8D_pmmintrin@h DB 01H
__97D49F0F_tmmintrin@h DB 01H
__BEEF8A8C_smmintrin@h DB 01H
__DB8D0340_nmmintrin@h DB 01H
__0E36F90E_wmmintrin@h DB 01H
__C5A2B409_zmmintrin@h DB 01H
__F2B616C3_immintrin@h DB 01H
__4875F786_ammintrin@h DB 01H
__353FD888_intrin@h DB 01H
__F562FA57_stb_image@h DB 01H
__C95DC661_khrplatform@h DB 01H
__6C577136_gl@h DB 01H
__EE638A2C_wgl@h DB 01H
__8EF9E35C_glfw3@h DB 01H
__4E664295_glfw_function@h DB 01H
__64C0EF11_StgSharpNative@h DB 01H
__73BBCC60_sn_native@c DB 01H
msvcjmc ENDS
CONST SEGMENT
stbi__bmask DD 00H
DD 01H
DD 03H
DD 07H
DD 0fH
DD 01fH
DD 03fH
DD 07fH
DD 0ffH
DD 01ffH
DD 03ffH
DD 07ffH
DD 0fffH
DD 01fffH
DD 03fffH
DD 07fffH
DD 0ffffH
?rgb@?5??stbi__process_frame_header@@9@9 DB 052H ; `stbi__process_frame_header'::`6'::rgb
DB 047H
DB 042H
ORG $+9
stbi__jbias DD 00H
DD 0ffffffffH
DD 0fffffffdH
DD 0fffffff9H
DD 0fffffff1H
DD 0ffffffe1H
DD 0ffffffc1H
DD 0ffffff81H
DD 0ffffff01H
DD 0fffffe01H
DD 0fffffc01H
DD 0fffff801H
DD 0fffff001H
DD 0ffffe001H
DD 0ffffc001H
DD 0ffff8001H
stbi__jpeg_dezigzag DB 00H
DB 01H
DB 08H
DB 010H
DB 09H
DB 02H
DB 03H
DB 0aH
DB 011H
DB 018H
DB 020H
DB 019H
DB 012H
DB 0bH
DB 04H
DB 05H
DB 0cH
DB 013H
DB 01aH
DB 021H
DB 028H
DB 030H
DB 029H
DB 022H
DB 01bH
DB 014H
DB 0dH
DB 06H
DB 07H
DB 0eH
DB 015H
DB 01cH
DB 023H
DB 02aH
DB 031H
DB 038H
DB 039H
DB 032H
DB 02bH
DB 024H
DB 01dH
DB 016H
DB 0fH
DB 017H
DB 01eH
DB 025H
DB 02cH
DB 033H
DB 03aH
DB 03bH
DB 034H
DB 02dH
DB 026H
DB 01fH
DB 027H
DB 02eH
DB 035H
DB 03cH
DB 03dH
DB 036H
DB 02fH
DB 037H
DB 03eH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
DB 03fH
ORG $+1
?tag@?O@??stbi__process_marker@@9@9 DB 04aH ; `stbi__process_marker'::`14'::tag
DB 046H
DB 049H
DB 046H
DB 00H
ORG $+3
?tag@?BA@??stbi__process_marker@@9@9 DB 041H ; `stbi__process_marker'::`16'::tag
DB 064H
DB 06fH
DB 062H
DB 065H
DB 00H
ORG $+2
stbi__zlength_base DD 03H
DD 04H
DD 05H
DD 06H
DD 07H
DD 08H
DD 09H
DD 0aH
DD 0bH
DD 0dH
DD 0fH
DD 011H
DD 013H
DD 017H
DD 01bH
DD 01fH
DD 023H
DD 02bH
DD 033H
DD 03bH
DD 043H
DD 053H
DD 063H
DD 073H
DD 083H
DD 0a3H
DD 0c3H
DD 0e3H
DD 0102H
DD 00H
DD 00H
ORG $+4
stbi__zlength_extra DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 01H
DD 01H
DD 01H
DD 01H
DD 02H
DD 02H
DD 02H
DD 02H
DD 03H
DD 03H
DD 03H
DD 03H
DD 04H
DD 04H
DD 04H
DD 04H
DD 05H
DD 05H
DD 05H
DD 05H
DD 00H
DD 00H
DD 00H
ORG $+4
stbi__zdist_base DD 01H
DD 02H
DD 03H
DD 04H
DD 05H
DD 07H
DD 09H
DD 0dH
DD 011H
DD 019H
DD 021H
DD 031H
DD 041H
DD 061H
DD 081H
DD 0c1H
DD 0101H
DD 0181H
DD 0201H
DD 0301H
DD 0401H
DD 0601H
DD 0801H
DD 0c01H
DD 01001H
DD 01801H
DD 02001H
DD 03001H
DD 04001H
DD 06001H
DD 00H
DD 00H
stbi__zdist_extra DD 00H
DD 00H
DD 00H
DD 00H
DD 01H
DD 01H
DD 02H
DD 02H
DD 03H
DD 03H
DD 04H
DD 04H
DD 05H
DD 05H
DD 06H
DD 06H
DD 07H
DD 07H
DD 08H
DD 08H
DD 09H
DD 09H
DD 0aH
DD 0aH
DD 0bH
DD 0bH
DD 0cH
DD 0cH
DD 0dH
DD 0dH
ORG $+8
?length_dezigzag@?1??stbi__compute_huffman_codes@@9@9 DB 010H ; `stbi__compute_huffman_codes'::`2'::length_dezigzag
DB 011H
DB 012H
DB 00H
DB 08H
DB 07H
DB 09H
DB 06H
DB 0aH
DB 05H
DB 0bH
DB 04H
DB 0cH
DB 03H
DB 0dH
DB 02H
DB 0eH
DB 01H
DB 0fH
ORG $+13
stbi__zdefault_length DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 09H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 07H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
DB 08H
stbi__zdefault_distance DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
DB 05H
?png_sig@?1??stbi__check_png_header@@9@9 DB 089H ; `stbi__check_png_header'::`2'::png_sig
DB 050H
DB 04eH
DB 047H
DB 0dH
DB 0aH
DB 01aH
DB 0aH
stbi__depth_scale_table DB 00H
DB 0ffH
DB 055H
DB 00H
DB 011H
DB 00H
DB 00H
DB 00H
DB 01H
CONST ENDS
PUBLIC stbi_load_from_memory
PUBLIC stbi_load_from_callbacks
PUBLIC stbi_load
PUBLIC stbi_load_from_file
PUBLIC stbi_load_gif_from_memory
PUBLIC stbi_load_16_from_memory
PUBLIC stbi_load_16_from_callbacks
PUBLIC stbi_load_16
PUBLIC stbi_load_from_file_16
PUBLIC stbi_loadf_from_memory
PUBLIC stbi_loadf_from_callbacks
PUBLIC stbi_loadf
PUBLIC stbi_loadf_from_file
PUBLIC stbi_hdr_to_ldr_gamma
PUBLIC stbi_hdr_to_ldr_scale
PUBLIC stbi_ldr_to_hdr_gamma
PUBLIC stbi_ldr_to_hdr_scale
PUBLIC stbi_is_hdr_from_callbacks
PUBLIC stbi_is_hdr_from_memory
PUBLIC stbi_is_hdr
PUBLIC stbi_is_hdr_from_file
PUBLIC stbi_failure_reason
PUBLIC stbi_image_free
PUBLIC stbi_info_from_memory
PUBLIC stbi_info_from_callbacks
PUBLIC stbi_is_16_bit_from_memory
PUBLIC stbi_is_16_bit_from_callbacks
PUBLIC stbi_info
PUBLIC stbi_info_from_file
PUBLIC stbi_is_16_bit
PUBLIC stbi_is_16_bit_from_file
PUBLIC stbi_set_unpremultiply_on_load
PUBLIC stbi_convert_iphone_png_to_rgb
PUBLIC stbi_set_flip_vertically_on_load
PUBLIC stbi_set_unpremultiply_on_load_thread
PUBLIC stbi_convert_iphone_png_to_rgb_thread
PUBLIC stbi_set_flip_vertically_on_load_thread
PUBLIC stbi_zlib_decode_malloc_guesssize
PUBLIC stbi_zlib_decode_malloc_guesssize_headerflag
PUBLIC stbi_zlib_decode_malloc
PUBLIC stbi_zlib_decode_buffer
PUBLIC stbi_zlib_decode_noheader_malloc
PUBLIC stbi_zlib_decode_noheader_buffer
PUBLIC glCheckShaderStat
PUBLIC initGL
PUBLIC linkShaderProgram
PUBLIC loadImageData
PUBLIC loadGlfuncDefault
PUBLIC unloadImageData
PUBLIC readLog
PUBLIC __JustMyCode_Default
PUBLIC ??_C@_0BD@CBEDEJPH@unknown?5image?5type@ ; `string'
PUBLIC ??_C@_08NOGIMCHF@outofmem@ ; `string'
PUBLIC ??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ ; `string'
PUBLIC ??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@ ; `string'
PUBLIC ??_C@_02JDPG@rb@ ; `string'
PUBLIC ??_C@_0M@JPDHFAGK@can?8t?5fopen@ ; `string'
PUBLIC ??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@ ; `string'
PUBLIC ??_C@_13COJANIEC@?$AA0@ ; `string'
PUBLIC ??_C@_0M@MHDBFHD@unsupported@ ; `string'
PUBLIC ??_C@_0O@DEFOLMLB@bad?5size?5list@ ; `string'
PUBLIC ??_C@_0BB@FOKGPEKG@bad?5code?5lengths@ ; `string'
PUBLIC ??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@ ; `string'
PUBLIC ??_C@_0BB@IIMLINA@bad?5huffman?5code@ ; `string'
PUBLIC ??_C@_09IFDKCGFO@bad?5delta@ ; `string'
PUBLIC ??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ ; `string'
PUBLIC ??_C@_0BA@KLNDOKJD@expected?5marker@ ; `string'
PUBLIC ??_C@_0M@LPHNODCG@bad?5DRI?5len@ ; `string'
PUBLIC ??_C@_0N@BOFJCHAP@bad?5DQT?5type@ ; `string'
PUBLIC ??_C@_0O@CNHKKDIM@bad?5DQT?5table@ ; `string'
PUBLIC ??_C@_0P@JLGKOCGN@bad?5DHT?5header@ ; `string'
PUBLIC ??_C@_0M@CICAFFCH@bad?5COM?5len@ ; `string'
PUBLIC ??_C@_0M@EENLKPDI@bad?5APP?5len@ ; `string'
PUBLIC ??_C@_0P@NNGPHMMK@unknown?5marker@ ; `string'
PUBLIC ??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@ ; `string'
PUBLIC ??_C@_0M@GNEHAHOH@bad?5SOS?5len@ ; `string'
PUBLIC ??_C@_0M@NOCCBFAC@bad?5DC?5huff@ ; `string'
PUBLIC ??_C@_0M@JGMCBLGG@bad?5AC?5huff@ ; `string'
PUBLIC ??_C@_07EEJOMGGP@bad?5SOS@ ; `string'
PUBLIC ??_C@_0M@DOFMJEMP@bad?5SOF?5len@ ; `string'
PUBLIC ??_C@_0L@BCINMEBJ@only?58?9bit@ ; `string'
PUBLIC ??_C@_0BB@LNEGOMA@no?5header?5height@ ; `string'
PUBLIC ??_C@_07BIDACDEF@0?5width@ ; `string'
PUBLIC ??_C@_09OJDLMMBJ@too?5large@ ; `string'
PUBLIC ??_C@_0BE@DAPHADHL@bad?5component?5count@ ; `string'
PUBLIC ??_C@_05BLPKENEJ@bad?5H@ ; `string'
PUBLIC ??_C@_05MPLLHCJG@bad?5V@ ; `string'
PUBLIC ??_C@_06LJIHDFHI@bad?5TQ@ ; `string'
PUBLIC ??_C@_06CLMBLEP@no?5SOI@ ; `string'
PUBLIC ??_C@_06IFCEAHIA@no?5SOF@ ; `string'
PUBLIC ??_C@_0M@EPMOIECP@bad?5DNL?5len@ ; `string'
PUBLIC ??_C@_0P@PNCLKCLJ@bad?5DNL?5height@ ; `string'
PUBLIC ??_C@_0N@KBPNPPBJ@bad?5req_comp@ ; `string'
PUBLIC ??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@ ; `string'
PUBLIC ??_C@_09EOHLEIKL@bad?5sizes@ ; `string'
PUBLIC ??_C@_0BA@MDNKOBMC@bad?5codelengths@ ; `string'
PUBLIC ??_C@_0BE@IBFIPFO@output?5buffer?5limit@ ; `string'
PUBLIC ??_C@_0P@CLDJCNKP@unexpected?5end@ ; `string'
PUBLIC ??_C@_08DIAPIMGJ@bad?5dist@ ; `string'
PUBLIC ??_C@_0N@IECDHMDI@zlib?5corrupt@ ; `string'
PUBLIC ??_C@_0BB@PIPBCKIA@read?5past?5buffer@ ; `string'
PUBLIC ??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ ; `string'
PUBLIC ??_C@_0P@DOGMHEBI@no?5preset?5dict@ ; `string'
PUBLIC ??_C@_0BA@MCNBDLPD@bad?5compression@ ; `string'
PUBLIC ??_C@_0M@DMDNBACF@bad?5png?5sig@ ; `string'
PUBLIC ??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@ ; `string'
PUBLIC ??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@ ; `string'
PUBLIC ??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ ; `string'
PUBLIC ??_C@_0P@FBBCPGMN@invalid?5filter@ ; `string'
PUBLIC ??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@ ; `string'
PUBLIC ??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@ ; `string'
PUBLIC ??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@ ; `string'
PUBLIC ??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@ ; `string'
PUBLIC ??_C@_0O@KBHBNJOK@multiple?5IHDR@ ; `string'
PUBLIC ??_C@_0N@POJLKMKK@bad?5IHDR?5len@ ; `string'
PUBLIC ??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@ ; `string'
PUBLIC ??_C@_09MBBNGCKB@bad?5ctype@ ; `string'
PUBLIC ??_C@_0BA@MDMBDDFG@bad?5comp?5method@ ; `string'
PUBLIC ??_C@_0BC@GHLIKKMD@bad?5filter?5method@ ; `string'
PUBLIC ??_C@_0BF@JCGDPBAA@bad?5interlace?5method@ ; `string'
PUBLIC ??_C@_0O@FNFBHCOO@0?9pixel?5image@ ; `string'
PUBLIC ??_C@_0P@JEAFOMAF@first?5not?5IHDR@ ; `string'
PUBLIC ??_C@_0N@JCPAJAKB@invalid?5PLTE@ ; `string'
PUBLIC ??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@ ; `string'
PUBLIC ??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@ ; `string'
PUBLIC ??_C@_0N@KDLCCKCH@bad?5tRNS?5len@ ; `string'
PUBLIC ??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@ ; `string'
PUBLIC ??_C@_07CKIELOEH@no?5PLTE@ ; `string'
PUBLIC ??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ ; `string'
PUBLIC ??_C@_09MNNCNKEO@outofdata@ ; `string'
PUBLIC ??_C@_07MLPECBNA@no?5IDAT@ ; `string'
PUBLIC ??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ ; `string'
PUBLIC ??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@ ; `string'
PUBLIC ??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@ ; `string'
PUBLIC ??_C@_07IANEBNLB@not?5BMP@ ; `string'
PUBLIC ??_C@_07IEJCHBDI@bad?5BMP@ ; `string'
PUBLIC ??_C@_0M@KHBIBJBG@unknown?5BMP@ ; `string'
PUBLIC ??_C@_07IMHMNOIB@BMP?5RLE@ ; `string'
PUBLIC ??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@ ; `string'
PUBLIC ??_C@_0L@PJHPAMCH@bad?5header@ ; `string'
PUBLIC ??_C@_0L@JDPIFELH@bad?5offset@ ; `string'
PUBLIC ??_C@_07MALOAKCI@invalid@ ; `string'
PUBLIC ??_C@_07JNJHIMGH@bad?5bpp@ ; `string'
PUBLIC ??_C@_09DAEBACAB@bad?5masks@ ; `string'
PUBLIC ??_C@_0L@DMAPJJO@bad?5format@ ; `string'
PUBLIC ??_C@_0M@ILLOCNCO@bad?5palette@ ; `string'
PUBLIC ??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@ ; `string'
PUBLIC ??_C@_07ECNCNLIK@not?5PSD@ ; `string'
PUBLIC ??_C@_0O@CHBCDKKC@wrong?5version@ ; `string'
PUBLIC ??_C@_0BE@PJBNGDBE@wrong?5channel?5count@ ; `string'
PUBLIC ??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@ ; `string'
PUBLIC ??_C@_0BD@IOGGBMNK@wrong?5color?5format@ ; `string'
PUBLIC ??_C@_07DPPMCAKL@corrupt@ ; `string'
PUBLIC ??_C@_04KBFEPHFH@S?$IA?v4@ ; `string'
PUBLIC ??_C@_04ELNJHLFH@PICT@ ; `string'
PUBLIC ??_C@_08GGMBIFE@bad?5file@ ; `string'
PUBLIC ??_C@_07KMJLPAII@not?5GIF@ ; `string'
PUBLIC ??_C@_00CNPNBAHC@@ ; `string'
PUBLIC ??_C@_0O@MGDACKOJ@no?5clear?5code@ ; `string'
PUBLIC ??_C@_0P@GJNJCPDJ@too?5many?5codes@ ; `string'
PUBLIC ??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@ ; `string'
PUBLIC ??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@ ; `string'
PUBLIC ??_C@_0BE@NAMJKDNF@missing?5color?5table@ ; `string'
PUBLIC ??_C@_0N@DJABBOOH@unknown?5code@ ; `string'
PUBLIC ??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@ ; `string'
PUBLIC ??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@ ; `string'
PUBLIC ??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@ ; `string'
PUBLIC ??_C@_06NDOKKIDJ@?$CD?$DPRGBE@ ; `string'
PUBLIC ??_C@_07NCIOKENI@not?5HDR@ ; `string'
PUBLIC ??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@ ; `string'
PUBLIC ??_C@_0BD@NKJFFLKL@unsupported?5format@ ; `string'
PUBLIC ??_C@_03HKAKGGJN@?9Y?5@ ; `string'
PUBLIC ??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@ ; `string'
PUBLIC ??_C@_03FOKDFDHG@?$CLX?5@ ; `string'
PUBLIC ??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@ ; `string'
PUBLIC ??_C@_07IDKIDMGJ@bad?5PNM@ ; `string'
PUBLIC ??_C@_0BH@OBINMOBC@integer?5parse?5overflow@ ; `string'
PUBLIC ??_C@_0O@MKGNGALN@invalid?5width@ ; `string'
PUBLIC ??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ ; `string'
PUBLIC ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ ; `string'
PUBLIC __real@3f000000
PUBLIC __real@3f800000
PUBLIC __real@3ff0000000000000
PUBLIC __real@40400000
PUBLIC __real@437f0000
PUBLIC __real@477fff00
PUBLIC __xmm@00000200000002000000020000000200
PUBLIC __xmm@00080008000800080008000800080008
PUBLIC __xmm@00ff00ff00ff00ff00ff00ff00ff00ff
PUBLIC __xmm@01010000010100000101000001010000
PUBLIC __xmm@08a914e808a914e808a914e808a914e8
PUBLIC __xmm@11c8e09e11c8e09e11c8e09e11c8e09e
PUBLIC __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3
PUBLIC __xmm@12d0046b12d0046b12d0046b12d0046b
PUBLIC __xmm@166f166f166f166f166f166f166f166f
PUBLIC __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a
PUBLIC __xmm@80808080808080808080808080808080
PUBLIC __xmm@e09ee565e09ee565e09ee565e09ee565
PUBLIC __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0
PUBLIC __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9
PUBLIC __xmm@f493f493f493f493f493f493f493f493
PUBLIC __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d
PUBLIC __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e
EXTRN __report_rangecheckfailure:PROC
EXTRN __imp_free:PROC
EXTRN __imp_malloc:PROC
EXTRN __imp_realloc:PROC
EXTRN memcpy:PROC
EXTRN memset:PROC
EXTRN __imp_strcpy_s:PROC
EXTRN strcmp:PROC
EXTRN __imp_strncmp:PROC
EXTRN __imp_fopen_s:PROC
EXTRN __imp_fclose:PROC
EXTRN __imp_feof:PROC
EXTRN __imp_ferror:PROC
EXTRN __imp_fgetc:PROC
EXTRN __imp_fread:PROC
EXTRN __imp_fseek:PROC
EXTRN __imp_ftell:PROC
EXTRN __imp_ungetc:PROC
EXTRN abs:PROC
EXTRN _lrotl:PROC
EXTRN __imp_strtol:PROC
EXTRN pow:PROC
EXTRN __imp_ldexp:PROC
EXTRN __imp__wassert:PROC
EXTRN glfwWindowHint:PROC
EXTRN glfwGetProcAddress:PROC
EXTRN _RTC_CheckStackVars:PROC
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
EXTRN __GSHandlerCheck:PROC
EXTRN __chkstk:PROC
EXTRN __security_check_cookie:PROC
EXTRN __ImageBase:BYTE
EXTRN __security_cookie:QWORD
EXTRN _fltused:DWORD
EXTRN _tls_index:DWORD
_TLS SEGMENT
stbi__g_failure_reason DQ 01H DUP (?)
_TLS ENDS
_BSS SEGMENT
stbi__vertically_flip_on_load_global DD 01H DUP (?)
_BSS ENDS
_TLS SEGMENT
stbi__vertically_flip_on_load_local DD 01H DUP (?)
stbi__vertically_flip_on_load_set DD 01H DUP (?)
_TLS ENDS
_BSS SEGMENT
stbi__unpremultiply_on_load_global DD 01H DUP (?)
stbi__de_iphone_flag_global DD 01H DUP (?)
_BSS ENDS
_TLS SEGMENT
stbi__unpremultiply_on_load_local DD 01H DUP (?)
stbi__unpremultiply_on_load_set DD 01H DUP (?)
stbi__de_iphone_flag_local DD 01H DUP (?)
stbi__de_iphone_flag_set DD 01H DUP (?)
_TLS ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_from_memory DD imagerel $LN3
DD imagerel $LN3+199
DD imagerel $unwind$stbi_load_from_memory
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_from_callbacks DD imagerel $LN3
DD imagerel $LN3+200
DD imagerel $unwind$stbi_load_from_callbacks
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load DD imagerel $LN6
DD imagerel $LN6+195
DD imagerel $unwind$stbi_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_from_file DD imagerel $LN4
DD imagerel $LN4+252
DD imagerel $unwind$stbi_load_from_file
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_gif_from_memory DD imagerel $LN6
DD imagerel $LN6+373
DD imagerel $unwind$stbi_load_gif_from_memory
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_16_from_memory DD imagerel $LN3
DD imagerel $LN3+199
DD imagerel $unwind$stbi_load_16_from_memory
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_16_from_callbacks DD imagerel $LN3
DD imagerel $LN3+200
DD imagerel $unwind$stbi_load_16_from_callbacks
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_16 DD imagerel $LN6
DD imagerel $LN6+195
DD imagerel $unwind$stbi_load_16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_load_from_file_16 DD imagerel $LN4
DD imagerel $LN4+252
DD imagerel $unwind$stbi_load_from_file_16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_loadf_from_memory DD imagerel $LN3
DD imagerel $LN3+199
DD imagerel $unwind$stbi_loadf_from_memory
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_loadf_from_callbacks DD imagerel $LN3
DD imagerel $LN3+200
DD imagerel $unwind$stbi_loadf_from_callbacks
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_loadf DD imagerel $LN6
DD imagerel $LN6+195
DD imagerel $unwind$stbi_loadf
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_loadf_from_file DD imagerel $LN3
DD imagerel $LN3+193
DD imagerel $unwind$stbi_loadf_from_file
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_hdr_to_ldr_gamma DD imagerel $LN3
DD imagerel $LN3+67
DD imagerel $unwind$stbi_hdr_to_ldr_gamma
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_hdr_to_ldr_scale DD imagerel $LN3
DD imagerel $LN3+67
DD imagerel $unwind$stbi_hdr_to_ldr_scale
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_ldr_to_hdr_gamma DD imagerel $LN3
DD imagerel $LN3+59
DD imagerel $unwind$stbi_ldr_to_hdr_gamma
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_ldr_to_hdr_scale DD imagerel $LN3
DD imagerel $LN3+59
DD imagerel $unwind$stbi_ldr_to_hdr_scale
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_hdr_from_callbacks DD imagerel $LN3
DD imagerel $LN3+159
DD imagerel $unwind$stbi_is_hdr_from_callbacks
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_hdr_from_memory DD imagerel $LN3
DD imagerel $LN3+158
DD imagerel $unwind$stbi_is_hdr_from_memory
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_hdr DD imagerel $LN4
DD imagerel $LN4+105
DD imagerel $unwind$stbi_is_hdr
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_hdr_from_file DD imagerel $LN3
DD imagerel $LN3+187
DD imagerel $unwind$stbi_is_hdr_from_file
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_failure_reason DD imagerel $LN3
DD imagerel $LN3+68
DD imagerel $unwind$stbi_failure_reason
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_image_free DD imagerel $LN3
DD imagerel $LN3+56
DD imagerel $unwind$stbi_image_free
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_info_from_memory DD imagerel $LN3
DD imagerel $LN3+189
DD imagerel $unwind$stbi_info_from_memory
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_info_from_callbacks DD imagerel $LN3
DD imagerel $LN3+190
DD imagerel $unwind$stbi_info_from_callbacks
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_16_bit_from_memory DD imagerel $LN3
DD imagerel $LN3+158
DD imagerel $unwind$stbi_is_16_bit_from_memory
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_16_bit_from_callbacks DD imagerel $LN3
DD imagerel $LN3+159
DD imagerel $unwind$stbi_is_16_bit_from_callbacks
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_info DD imagerel $LN4
DD imagerel $LN4+148
DD imagerel $unwind$stbi_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_info_from_file DD imagerel $LN3
DD imagerel $LN3+229
DD imagerel $unwind$stbi_info_from_file
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_16_bit DD imagerel $LN4
DD imagerel $LN4+112
DD imagerel $unwind$stbi_is_16_bit
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_is_16_bit_from_file DD imagerel $LN3
DD imagerel $LN3+193
DD imagerel $unwind$stbi_is_16_bit_from_file
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_set_unpremultiply_on_load DD imagerel $LN3
DD imagerel $LN3+53
DD imagerel $unwind$stbi_set_unpremultiply_on_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_convert_iphone_png_to_rgb DD imagerel $LN3
DD imagerel $LN3+53
DD imagerel $unwind$stbi_convert_iphone_png_to_rgb
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_set_flip_vertically_on_load DD imagerel $LN3
DD imagerel $LN3+53
DD imagerel $unwind$stbi_set_flip_vertically_on_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_set_unpremultiply_on_load_thread DD imagerel $LN3
DD imagerel $LN3+109
DD imagerel $unwind$stbi_set_unpremultiply_on_load_thread
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_convert_iphone_png_to_rgb_thread DD imagerel $LN3
DD imagerel $LN3+109
DD imagerel $unwind$stbi_convert_iphone_png_to_rgb_thread
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_set_flip_vertically_on_load_thread DD imagerel $LN3
DD imagerel $LN3+109
DD imagerel $unwind$stbi_set_flip_vertically_on_load_thread
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_zlib_decode_malloc_guesssize DD imagerel $LN7
DD imagerel $LN7+310
DD imagerel $unwind$stbi_zlib_decode_malloc_guesssize
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_zlib_decode_malloc_guesssize_headerflag DD imagerel $LN7
DD imagerel $LN7+312
DD imagerel $unwind$stbi_zlib_decode_malloc_guesssize_headerflag
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_zlib_decode_malloc DD imagerel $LN3
DD imagerel $LN3+82
DD imagerel $unwind$stbi_zlib_decode_malloc
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_zlib_decode_buffer DD imagerel $LN5
DD imagerel $LN5+237
DD imagerel $unwind$stbi_zlib_decode_buffer
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_zlib_decode_noheader_malloc DD imagerel $LN7
DD imagerel $LN7+299
DD imagerel $unwind$stbi_zlib_decode_noheader_malloc
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi_zlib_decode_noheader_buffer DD imagerel $LN5
DD imagerel $LN5+237
DD imagerel $unwind$stbi_zlib_decode_noheader_buffer
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__cpuid3 DD imagerel stbi__cpuid3
DD imagerel stbi__cpuid3+150
DD imagerel $unwind$stbi__cpuid3
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__sse2_available DD imagerel stbi__sse2_available
DD imagerel stbi__sse2_available+87
DD imagerel $unwind$stbi__sse2_available
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__refill_buffer DD imagerel stbi__refill_buffer
DD imagerel stbi__refill_buffer+292
DD imagerel $unwind$stbi__refill_buffer
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__start_mem DD imagerel stbi__start_mem
DD imagerel stbi__start_mem+206
DD imagerel $unwind$stbi__start_mem
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__start_callbacks DD imagerel stbi__start_callbacks
DD imagerel stbi__start_callbacks+243
DD imagerel $unwind$stbi__start_callbacks
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__stdio_read DD imagerel stbi__stdio_read
DD imagerel stbi__stdio_read+87
DD imagerel $unwind$stbi__stdio_read
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__stdio_skip DD imagerel stbi__stdio_skip
DD imagerel stbi__stdio_skip+111
DD imagerel $unwind$stbi__stdio_skip
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__stdio_eof DD imagerel stbi__stdio_eof
DD imagerel stbi__stdio_eof+104
DD imagerel $unwind$stbi__stdio_eof
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__start_file DD imagerel stbi__start_file
DD imagerel stbi__start_file+74
DD imagerel $unwind$stbi__start_file
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__rewind DD imagerel stbi__rewind
DD imagerel stbi__rewind+98
DD imagerel $unwind$stbi__rewind
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_test DD imagerel stbi__jpeg_test
DD imagerel stbi__jpeg_test+163
DD imagerel $unwind$stbi__jpeg_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_load DD imagerel stbi__jpeg_load
DD imagerel stbi__jpeg_load+228
DD imagerel $unwind$stbi__jpeg_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_info DD imagerel stbi__jpeg_info
DD imagerel stbi__jpeg_info+171
DD imagerel $unwind$stbi__jpeg_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__png_test DD imagerel stbi__png_test
DD imagerel stbi__png_test+73
DD imagerel $unwind$stbi__png_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__png_load DD imagerel stbi__png_load
DD imagerel stbi__png_load+199
DD imagerel $unwind$stbi__png_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__png_info DD imagerel stbi__png_info
DD imagerel stbi__png_info+177
DD imagerel $unwind$stbi__png_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__png_is16 DD imagerel stbi__png_is16
DD imagerel stbi__png_is16+182
DD imagerel $unwind$stbi__png_is16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bmp_test DD imagerel stbi__bmp_test
DD imagerel stbi__bmp_test+73
DD imagerel $unwind$stbi__bmp_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bmp_load DD imagerel stbi__bmp_load
DD imagerel stbi__bmp_load+4929
DD imagerel $unwind$stbi__bmp_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bmp_info DD imagerel stbi__bmp_info
DD imagerel stbi__bmp_info+335
DD imagerel $unwind$stbi__bmp_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__tga_test DD imagerel stbi__tga_test
DD imagerel stbi__tga_test+401
DD imagerel $unwind$stbi__tga_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__tga_load DD imagerel stbi__tga_load
DD imagerel stbi__tga_load+3012
DD imagerel $unwind$stbi__tga_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__tga_info DD imagerel stbi__tga_info
DD imagerel stbi__tga_info+726
DD imagerel $unwind$stbi__tga_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__psd_test DD imagerel stbi__psd_test
DD imagerel stbi__psd_test+108
DD imagerel $unwind$stbi__psd_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__psd_load DD imagerel stbi__psd_load
DD imagerel stbi__psd_load+3127
DD imagerel $unwind$stbi__psd_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__psd_info DD imagerel stbi__psd_info
DD imagerel stbi__psd_info+478
DD imagerel $unwind$stbi__psd_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__psd_is16 DD imagerel stbi__psd_is16
DD imagerel stbi__psd_is16+249
DD imagerel $unwind$stbi__psd_is16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__hdr_test DD imagerel stbi__hdr_test
DD imagerel stbi__hdr_test+121
DD imagerel $unwind$stbi__hdr_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__hdr_load DD imagerel stbi__hdr_load
DD imagerel stbi__hdr_load+2654
DD imagerel $unwind$stbi__hdr_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__hdr_info DD imagerel stbi__hdr_info
DD imagerel stbi__hdr_info+640
DD imagerel $unwind$stbi__hdr_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pic_test DD imagerel stbi__pic_test
DD imagerel stbi__pic_test+73
DD imagerel $unwind$stbi__pic_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pic_load DD imagerel stbi__pic_load
DD imagerel stbi__pic_load+793
DD imagerel $unwind$stbi__pic_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pic_info DD imagerel stbi__pic_info
DD imagerel stbi__pic_info+707
DD imagerel $unwind$stbi__pic_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_test DD imagerel stbi__gif_test
DD imagerel stbi__gif_test+73
DD imagerel $unwind$stbi__gif_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_load DD imagerel stbi__gif_load
DD imagerel stbi__gif_load+363
DD imagerel $unwind$stbi__gif_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__load_gif_main DD imagerel stbi__load_gif_main
DD imagerel stbi__load_gif_main+1131
DD imagerel $unwind$stbi__load_gif_main
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_info DD imagerel stbi__gif_info
DD imagerel stbi__gif_info+90
DD imagerel $unwind$stbi__gif_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_test DD imagerel stbi__pnm_test
DD imagerel stbi__pnm_test+121
DD imagerel $unwind$stbi__pnm_test
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_load DD imagerel stbi__pnm_load
DD imagerel stbi__pnm_load+906
DD imagerel $unwind$stbi__pnm_load
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_info DD imagerel stbi__pnm_info
DD imagerel stbi__pnm_info+585
DD imagerel $unwind$stbi__pnm_info
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_is16 DD imagerel stbi__pnm_is16
DD imagerel stbi__pnm_is16+76
DD imagerel $unwind$stbi__pnm_is16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__err DD imagerel stbi__err
DD imagerel stbi__err+81
DD imagerel $unwind$stbi__err
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__malloc DD imagerel stbi__malloc
DD imagerel stbi__malloc+55
DD imagerel $unwind$stbi__malloc
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__addsizes_valid DD imagerel stbi__addsizes_valid
DD imagerel stbi__addsizes_valid+105
DD imagerel $unwind$stbi__addsizes_valid
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__mul2sizes_valid DD imagerel stbi__mul2sizes_valid
DD imagerel stbi__mul2sizes_valid+131
DD imagerel $unwind$stbi__mul2sizes_valid
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__mad2sizes_valid DD imagerel stbi__mad2sizes_valid
DD imagerel stbi__mad2sizes_valid+129
DD imagerel $unwind$stbi__mad2sizes_valid
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__mad3sizes_valid DD imagerel stbi__mad3sizes_valid
DD imagerel stbi__mad3sizes_valid+171
DD imagerel $unwind$stbi__mad3sizes_valid
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__mad4sizes_valid DD imagerel stbi__mad4sizes_valid
DD imagerel stbi__mad4sizes_valid+215
DD imagerel $unwind$stbi__mad4sizes_valid
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__malloc_mad2 DD imagerel stbi__malloc_mad2
DD imagerel stbi__malloc_mad2+111
DD imagerel $unwind$stbi__malloc_mad2
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__malloc_mad3 DD imagerel stbi__malloc_mad3
DD imagerel stbi__malloc_mad3+130
DD imagerel $unwind$stbi__malloc_mad3
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__malloc_mad4 DD imagerel stbi__malloc_mad4
DD imagerel stbi__malloc_mad4+147
DD imagerel $unwind$stbi__malloc_mad4
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__addints_valid DD imagerel stbi__addints_valid
DD imagerel stbi__addints_valid+242
DD imagerel $unwind$stbi__addints_valid
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__mul2shorts_valid DD imagerel stbi__mul2shorts_valid
DD imagerel stbi__mul2shorts_valid+306
DD imagerel $unwind$stbi__mul2shorts_valid
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__ldr_to_hdr DD imagerel stbi__ldr_to_hdr
DD imagerel stbi__ldr_to_hdr+539
DD imagerel $unwind$stbi__ldr_to_hdr
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__hdr_to_ldr DD imagerel stbi__hdr_to_ldr
DD imagerel stbi__hdr_to_ldr+647
DD imagerel $unwind$stbi__hdr_to_ldr
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__load_main DD imagerel stbi__load_main
DD imagerel stbi__load_main+935
DD imagerel $unwind$stbi__load_main
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__convert_16_to_8 DD imagerel stbi__convert_16_to_8
DD imagerel stbi__convert_16_to_8+230
DD imagerel $unwind$stbi__convert_16_to_8
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__convert_8_to_16 DD imagerel stbi__convert_8_to_16
DD imagerel stbi__convert_8_to_16+246
DD imagerel $unwind$stbi__convert_8_to_16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__vertical_flip DD imagerel stbi__vertical_flip
DD imagerel stbi__vertical_flip+515
DD imagerel $unwind$stbi__vertical_flip
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__vertical_flip_slices DD imagerel stbi__vertical_flip_slices
DD imagerel stbi__vertical_flip_slices+168
DD imagerel $unwind$stbi__vertical_flip_slices
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__load_and_postprocess_8bit DD imagerel stbi__load_and_postprocess_8bit
DD imagerel stbi__load_and_postprocess_8bit+518
DD imagerel $unwind$stbi__load_and_postprocess_8bit
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__load_and_postprocess_16bit DD imagerel stbi__load_and_postprocess_16bit
DD imagerel stbi__load_and_postprocess_16bit+524
DD imagerel $unwind$stbi__load_and_postprocess_16bit
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__float_postprocess DD imagerel stbi__float_postprocess
DD imagerel stbi__float_postprocess+247
DD imagerel $unwind$stbi__float_postprocess
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__fopen DD imagerel stbi__fopen
DD imagerel stbi__fopen+166
DD imagerel $unwind$stbi__fopen
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__loadf_main DD imagerel stbi__loadf_main
DD imagerel stbi__loadf_main+441
DD imagerel $unwind$stbi__loadf_main
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__get8 DD imagerel stbi__get8
DD imagerel stbi__get8+226
DD imagerel $unwind$stbi__get8
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__at_eof DD imagerel stbi__at_eof
DD imagerel stbi__at_eof+163
DD imagerel $unwind$stbi__at_eof
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__skip DD imagerel stbi__skip
DD imagerel stbi__skip+263
DD imagerel $unwind$stbi__skip
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__getn DD imagerel stbi__getn
DD imagerel stbi__getn+415
DD imagerel $unwind$stbi__getn
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__get16be DD imagerel stbi__get16be
DD imagerel stbi__get16be+97
DD imagerel $unwind$stbi__get16be
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__get32be DD imagerel stbi__get32be
DD imagerel stbi__get32be+91
DD imagerel $unwind$stbi__get32be
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__get16le DD imagerel stbi__get16le
DD imagerel stbi__get16le+85
DD imagerel $unwind$stbi__get16le
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__get32le DD imagerel stbi__get32le
DD imagerel stbi__get32le+85
DD imagerel $unwind$stbi__get32le
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__compute_y DD imagerel stbi__compute_y
DD imagerel stbi__compute_y+81
DD imagerel $unwind$stbi__compute_y
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__convert_format DD imagerel stbi__convert_format
DD imagerel stbi__convert_format+2752
DD imagerel $unwind$stbi__convert_format
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__compute_y_16 DD imagerel stbi__compute_y_16
DD imagerel stbi__compute_y_16+81
DD imagerel $unwind$stbi__compute_y_16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__convert_format16 DD imagerel stbi__convert_format16
DD imagerel stbi__convert_format16+2804
DD imagerel $unwind$stbi__convert_format16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__build_huffman DD imagerel stbi__build_huffman
DD imagerel stbi__build_huffman+698
DD imagerel $unwind$stbi__build_huffman
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__build_fast_ac DD imagerel stbi__build_fast_ac
DD imagerel stbi__build_fast_ac+440
DD imagerel $unwind$stbi__build_fast_ac
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__grow_buffer_unsafe DD imagerel stbi__grow_buffer_unsafe
DD imagerel stbi__grow_buffer_unsafe+314
DD imagerel $unwind$stbi__grow_buffer_unsafe
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_huff_decode DD imagerel stbi__jpeg_huff_decode
DD imagerel stbi__jpeg_huff_decode+758
DD imagerel $unwind$stbi__jpeg_huff_decode
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__extend_receive DD imagerel stbi__extend_receive
DD imagerel stbi__extend_receive+285
DD imagerel $unwind$stbi__extend_receive
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_get_bits DD imagerel stbi__jpeg_get_bits
DD imagerel stbi__jpeg_get_bits+238
DD imagerel $unwind$stbi__jpeg_get_bits
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_get_bit DD imagerel stbi__jpeg_get_bit
DD imagerel stbi__jpeg_get_bit+171
DD imagerel $unwind$stbi__jpeg_get_bit
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_decode_block DD imagerel stbi__jpeg_decode_block
DD imagerel stbi__jpeg_decode_block+988
DD imagerel $unwind$stbi__jpeg_decode_block
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_decode_block_prog_dc DD imagerel stbi__jpeg_decode_block_prog_dc
DD imagerel stbi__jpeg_decode_block_prog_dc+591
DD imagerel $unwind$stbi__jpeg_decode_block_prog_dc
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_decode_block_prog_ac DD imagerel stbi__jpeg_decode_block_prog_ac
DD imagerel stbi__jpeg_decode_block_prog_ac+1743
DD imagerel $unwind$stbi__jpeg_decode_block_prog_ac
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__clamp DD imagerel stbi__clamp
DD imagerel stbi__clamp+89
DD imagerel $unwind$stbi__clamp
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__idct_block DD imagerel stbi__idct_block
DD imagerel stbi__idct_block+3189
DD imagerel $unwind$stbi__idct_block
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__idct_simd DD imagerel stbi__idct_simd
DD imagerel stbi__idct_simd+5983
DD imagerel $unwind$stbi__idct_simd
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__get_marker DD imagerel stbi__get_marker
DD imagerel stbi__get_marker+168
DD imagerel $unwind$stbi__get_marker
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_reset DD imagerel stbi__jpeg_reset
DD imagerel stbi__jpeg_reset+298
DD imagerel $unwind$stbi__jpeg_reset
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__parse_entropy_coded_data DD imagerel stbi__parse_entropy_coded_data
DD imagerel stbi__parse_entropy_coded_data+3244
DD imagerel $unwind$stbi__parse_entropy_coded_data
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_dequantize DD imagerel stbi__jpeg_dequantize
DD imagerel stbi__jpeg_dequantize+120
DD imagerel $unwind$stbi__jpeg_dequantize
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_finish DD imagerel stbi__jpeg_finish
DD imagerel stbi__jpeg_finish+495
DD imagerel $unwind$stbi__jpeg_finish
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__process_marker DD imagerel stbi__process_marker
DD imagerel stbi__process_marker+1908
DD imagerel $unwind$stbi__process_marker
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__process_scan_header DD imagerel stbi__process_scan_header
DD imagerel stbi__process_scan_header+906
DD imagerel $unwind$stbi__process_scan_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__free_jpeg_components DD imagerel stbi__free_jpeg_components
DD imagerel stbi__free_jpeg_components+397
DD imagerel $unwind$stbi__free_jpeg_components
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__process_frame_header DD imagerel stbi__process_frame_header
DD imagerel stbi__process_frame_header+2436
DD imagerel $unwind$stbi__process_frame_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__decode_jpeg_header DD imagerel stbi__decode_jpeg_header
DD imagerel stbi__decode_jpeg_header+398
DD imagerel $unwind$stbi__decode_jpeg_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__skip_jpeg_junk_at_end DD imagerel stbi__skip_jpeg_junk_at_end
DD imagerel stbi__skip_jpeg_junk_at_end+162
DD imagerel $unwind$stbi__skip_jpeg_junk_at_end
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__decode_jpeg_image DD imagerel stbi__decode_jpeg_image
DD imagerel stbi__decode_jpeg_image+561
DD imagerel $unwind$stbi__decode_jpeg_image
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$resample_row_1 DD imagerel resample_row_1
DD imagerel resample_row_1+64
DD imagerel $unwind$resample_row_1
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__resample_row_v_2 DD imagerel stbi__resample_row_v_2
DD imagerel stbi__resample_row_v_2+148
DD imagerel $unwind$stbi__resample_row_v_2
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__resample_row_h_2 DD imagerel stbi__resample_row_h_2
DD imagerel stbi__resample_row_h_2+522
DD imagerel $unwind$stbi__resample_row_h_2
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__resample_row_hv_2 DD imagerel stbi__resample_row_hv_2
DD imagerel stbi__resample_row_hv_2+444
DD imagerel $unwind$stbi__resample_row_hv_2
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__resample_row_hv_2_simd DD imagerel stbi__resample_row_hv_2_simd
DD imagerel stbi__resample_row_hv_2_simd+1193
DD imagerel $unwind$stbi__resample_row_hv_2_simd
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__resample_row_generic DD imagerel stbi__resample_row_generic
DD imagerel stbi__resample_row_generic+166
DD imagerel $unwind$stbi__resample_row_generic
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__YCbCr_to_RGB_row DD imagerel stbi__YCbCr_to_RGB_row
DD imagerel stbi__YCbCr_to_RGB_row+510
DD imagerel $unwind$stbi__YCbCr_to_RGB_row
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__YCbCr_to_RGB_simd DD imagerel stbi__YCbCr_to_RGB_simd
DD imagerel stbi__YCbCr_to_RGB_simd+1391
DD imagerel $unwind$stbi__YCbCr_to_RGB_simd
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__setup_jpeg DD imagerel stbi__setup_jpeg
DD imagerel stbi__setup_jpeg+177
DD imagerel $unwind$stbi__setup_jpeg
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__cleanup_jpeg DD imagerel stbi__cleanup_jpeg
DD imagerel stbi__cleanup_jpeg+71
DD imagerel $unwind$stbi__cleanup_jpeg
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__blinn_8x8 DD imagerel stbi__blinn_8x8
DD imagerel stbi__blinn_8x8+86
DD imagerel $unwind$stbi__blinn_8x8
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$load_jpeg_image DD imagerel load_jpeg_image
DD imagerel load_jpeg_image+4825
DD imagerel $unwind$load_jpeg_image
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__jpeg_info_raw DD imagerel stbi__jpeg_info_raw
DD imagerel stbi__jpeg_info_raw+232
DD imagerel $unwind$stbi__jpeg_info_raw
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bitreverse16 DD imagerel stbi__bitreverse16
DD imagerel stbi__bitreverse16+193
DD imagerel $unwind$stbi__bitreverse16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bit_reverse DD imagerel stbi__bit_reverse
DD imagerel stbi__bit_reverse+106
DD imagerel $unwind$stbi__bit_reverse
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__zbuild_huffman DD imagerel stbi__zbuild_huffman
DD imagerel stbi__zbuild_huffman+963
DD imagerel $unwind$stbi__zbuild_huffman
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__zeof DD imagerel stbi__zeof
DD imagerel stbi__zeof+93
DD imagerel $unwind$stbi__zeof
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__zget8 DD imagerel stbi__zget8
DD imagerel stbi__zget8+119
DD imagerel $unwind$stbi__zget8
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__fill_bits DD imagerel stbi__fill_bits
DD imagerel stbi__fill_bits+200
DD imagerel $unwind$stbi__fill_bits
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__zreceive DD imagerel stbi__zreceive
DD imagerel stbi__zreceive+200
DD imagerel $unwind$stbi__zreceive
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__zhuffman_decode_slowpath DD imagerel stbi__zhuffman_decode_slowpath
DD imagerel stbi__zhuffman_decode_slowpath+324
DD imagerel $unwind$stbi__zhuffman_decode_slowpath
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__zhuffman_decode DD imagerel stbi__zhuffman_decode
DD imagerel stbi__zhuffman_decode+295
DD imagerel $unwind$stbi__zhuffman_decode
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__zexpand DD imagerel stbi__zexpand
DD imagerel stbi__zexpand+361
DD imagerel $unwind$stbi__zexpand
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__parse_huffman_block DD imagerel stbi__parse_huffman_block
DD imagerel stbi__parse_huffman_block+804
DD imagerel $unwind$stbi__parse_huffman_block
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__compute_huffman_codes DD imagerel stbi__compute_huffman_codes
DD imagerel stbi__compute_huffman_codes+949
DD imagerel $unwind$stbi__compute_huffman_codes
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__parse_uncompressed_block DD imagerel stbi__parse_uncompressed_block
DD imagerel stbi__parse_uncompressed_block+603
DD imagerel $unwind$stbi__parse_uncompressed_block
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__parse_zlib_header DD imagerel stbi__parse_zlib_header
DD imagerel stbi__parse_zlib_header+204
DD imagerel $unwind$stbi__parse_zlib_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__parse_zlib DD imagerel stbi__parse_zlib
DD imagerel stbi__parse_zlib+357
DD imagerel $unwind$stbi__parse_zlib
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__do_zlib DD imagerel stbi__do_zlib
DD imagerel stbi__do_zlib+158
DD imagerel $unwind$stbi__do_zlib
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__get_chunk_header DD imagerel stbi__get_chunk_header
DD imagerel stbi__get_chunk_header+123
DD imagerel $unwind$stbi__get_chunk_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__check_png_header DD imagerel stbi__check_png_header
DD imagerel stbi__check_png_header+120
DD imagerel $unwind$stbi__check_png_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__paeth DD imagerel stbi__paeth
DD imagerel stbi__paeth+262
DD imagerel $unwind$stbi__paeth
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__create_png_alpha_expand8 DD imagerel stbi__create_png_alpha_expand8
DD imagerel stbi__create_png_alpha_expand8+374
DD imagerel $unwind$stbi__create_png_alpha_expand8
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__create_png_image_raw DD imagerel stbi__create_png_image_raw
DD imagerel stbi__create_png_image_raw+3488
DD imagerel $unwind$stbi__create_png_image_raw
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__create_png_image DD imagerel stbi__create_png_image
DD imagerel stbi__create_png_image+1308
DD imagerel $unwind$stbi__create_png_image
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__compute_transparency DD imagerel stbi__compute_transparency
DD imagerel stbi__compute_transparency+478
DD imagerel $unwind$stbi__compute_transparency
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__compute_transparency16 DD imagerel stbi__compute_transparency16
DD imagerel stbi__compute_transparency16+481
DD imagerel $unwind$stbi__compute_transparency16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__expand_png_palette DD imagerel stbi__expand_png_palette
DD imagerel stbi__expand_png_palette+614
DD imagerel $unwind$stbi__expand_png_palette
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__de_iphone DD imagerel stbi__de_iphone
DD imagerel stbi__de_iphone+823
DD imagerel $unwind$stbi__de_iphone
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__parse_png_file DD imagerel stbi__parse_png_file
DD imagerel stbi__parse_png_file+3816
DD imagerel $unwind$stbi__parse_png_file
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__do_png DD imagerel stbi__do_png
DD imagerel stbi__do_png+693
DD imagerel $unwind$stbi__do_png
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__png_info_raw DD imagerel stbi__png_info_raw
DD imagerel stbi__png_info_raw+201
DD imagerel $unwind$stbi__png_info_raw
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bmp_test_raw DD imagerel stbi__bmp_test_raw
DD imagerel stbi__bmp_test_raw+227
DD imagerel $unwind$stbi__bmp_test_raw
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__high_bit DD imagerel stbi__high_bit
DD imagerel stbi__high_bit+225
DD imagerel $unwind$stbi__high_bit
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bitcount DD imagerel stbi__bitcount
DD imagerel stbi__bitcount+199
DD imagerel $unwind$stbi__bitcount
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__shiftsigned DD imagerel stbi__shiftsigned
DD imagerel stbi__shiftsigned+268
DD imagerel $unwind$stbi__shiftsigned
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bmp_set_mask_defaults DD imagerel stbi__bmp_set_mask_defaults
DD imagerel stbi__bmp_set_mask_defaults+286
DD imagerel $unwind$stbi__bmp_set_mask_defaults
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__bmp_parse_header DD imagerel stbi__bmp_parse_header
DD imagerel stbi__bmp_parse_header+1594
DD imagerel $unwind$stbi__bmp_parse_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__tga_get_comp DD imagerel stbi__tga_get_comp
DD imagerel stbi__tga_get_comp+204
DD imagerel $unwind$stbi__tga_get_comp
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__tga_read_rgb16 DD imagerel stbi__tga_read_rgb16
DD imagerel stbi__tga_read_rgb16+225
DD imagerel $unwind$stbi__tga_read_rgb16
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__psd_decode_rle DD imagerel stbi__psd_decode_rle
DD imagerel stbi__psd_decode_rle+336
DD imagerel $unwind$stbi__psd_decode_rle
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pic_is4 DD imagerel stbi__pic_is4
DD imagerel stbi__pic_is4+115
DD imagerel $unwind$stbi__pic_is4
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pic_test_core DD imagerel stbi__pic_test_core
DD imagerel stbi__pic_test_core+139
DD imagerel $unwind$stbi__pic_test_core
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__readval DD imagerel stbi__readval
DD imagerel stbi__readval+209
DD imagerel $unwind$stbi__readval
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__copyval DD imagerel stbi__copyval
DD imagerel stbi__copyval+138
DD imagerel $unwind$stbi__copyval
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pic_load_core DD imagerel stbi__pic_load_core
DD imagerel stbi__pic_load_core+1805
DD imagerel $unwind$stbi__pic_load_core
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_test_raw DD imagerel stbi__gif_test_raw
DD imagerel stbi__gif_test_raw+189
DD imagerel $unwind$stbi__gif_test_raw
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_parse_colortable DD imagerel stbi__gif_parse_colortable
DD imagerel stbi__gif_parse_colortable+278
DD imagerel $unwind$stbi__gif_parse_colortable
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_header DD imagerel stbi__gif_header
DD imagerel stbi__gif_header+609
DD imagerel $unwind$stbi__gif_header
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_info_raw DD imagerel stbi__gif_info_raw
DD imagerel stbi__gif_info_raw+223
DD imagerel $unwind$stbi__gif_info_raw
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__out_gif_code DD imagerel stbi__out_gif_code
DD imagerel stbi__out_gif_code+753
DD imagerel $unwind$stbi__out_gif_code
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__process_gif_raster DD imagerel stbi__process_gif_raster
DD imagerel stbi__process_gif_raster+1264
DD imagerel $unwind$stbi__process_gif_raster
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__gif_load_next DD imagerel stbi__gif_load_next
DD imagerel stbi__gif_load_next+2528
DD imagerel $unwind$stbi__gif_load_next
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__load_gif_main_outofmem DD imagerel stbi__load_gif_main_outofmem
DD imagerel stbi__load_gif_main_outofmem+217
DD imagerel $unwind$stbi__load_gif_main_outofmem
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__hdr_test_core DD imagerel stbi__hdr_test_core
DD imagerel stbi__hdr_test_core+141
DD imagerel $unwind$stbi__hdr_test_core
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__hdr_gettoken DD imagerel stbi__hdr_gettoken
DD imagerel stbi__hdr_gettoken+212
DD imagerel $unwind$stbi__hdr_gettoken
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__hdr_convert DD imagerel stbi__hdr_convert
DD imagerel stbi__hdr_convert+690
DD imagerel $unwind$stbi__hdr_convert
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_isspace DD imagerel stbi__pnm_isspace
DD imagerel stbi__pnm_isspace+141
DD imagerel $unwind$stbi__pnm_isspace
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_skip_whitespace DD imagerel stbi__pnm_skip_whitespace
DD imagerel stbi__pnm_skip_whitespace+212
DD imagerel $unwind$stbi__pnm_skip_whitespace
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_isdigit DD imagerel stbi__pnm_isdigit
DD imagerel stbi__pnm_isdigit+93
DD imagerel $unwind$stbi__pnm_isdigit
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__pnm_getinteger DD imagerel stbi__pnm_getinteger
DD imagerel stbi__pnm_getinteger+183
DD imagerel $unwind$stbi__pnm_getinteger
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__info_main DD imagerel stbi__info_main
DD imagerel stbi__info_main+483
DD imagerel $unwind$stbi__info_main
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$stbi__is_16_main DD imagerel stbi__is_16_main
DD imagerel stbi__is_16_main+113
DD imagerel $unwind$stbi__is_16_main
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$glCheckShaderStat DD imagerel $LN4
DD imagerel $LN4+232
DD imagerel $unwind$glCheckShaderStat
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$initGL DD imagerel $LN3
DD imagerel $LN3+111
DD imagerel $unwind$initGL
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$linkShaderProgram DD imagerel $LN5
DD imagerel $LN5+227
DD imagerel $unwind$linkShaderProgram
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$loadImageData DD imagerel $LN4
DD imagerel $LN4+143
DD imagerel $unwind$loadImageData
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$loadGlfuncDefault DD imagerel $LN7
DD imagerel $LN7+160
DD imagerel $unwind$loadGlfuncDefault
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$unloadImageData DD imagerel $LN3
DD imagerel $LN3+60
DD imagerel $unwind$unloadImageData
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$readLog DD imagerel $LN5
DD imagerel $LN5+103
DD imagerel $unwind$readLog
pdata ENDS
; COMDAT __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e
CONST SEGMENT
__xmm@fa7efa7efa7efa7efa7efa7efa7efa7e DB '~', 0faH, '~', 0faH, '~', 0faH
DB '~', 0faH, '~', 0faH, '~', 0faH, '~', 0faH, '~', 0faH
CONST ENDS
; COMDAT __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d
CONST SEGMENT
__xmm@f9c31a9df9c31a9df9c31a9df9c31a9d DB 09dH, 01aH, 0c3H, 0f9H, 09dH, 01aH
DB 0c3H, 0f9H, 09dH, 01aH, 0c3H, 0f9H, 09dH, 01aH, 0c3H, 0f9H
CONST ENDS
; COMDAT __xmm@f493f493f493f493f493f493f493f493
CONST SEGMENT
__xmm@f493f493f493f493f493f493f493f493 DB 093H, 0f4H, 093H, 0f4H, 093H, 0f4H
DB 093H, 0f4H, 093H, 0f4H, 093H, 0f4H, 093H, 0f4H, 093H, 0f4H
CONST ENDS
; COMDAT __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9
CONST SEGMENT
__xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 DB 0a9H, 08H, 01aH, 0ebH, 0a9H, 08H
DB 01aH, 0ebH, 0a9H, 08H, 01aH, 0ebH, 0a9H, 08H, 01aH, 0ebH
CONST ENDS
; COMDAT __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0
CONST SEGMENT
__xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 DB 0d0H, 012H, 0cfH, 0e9H, 0d0H, 012H
DB 0cfH, 0e9H, 0d0H, 012H, 0cfH, 0e9H, 0d0H, 012H, 0cfH, 0e9H
CONST ENDS
; COMDAT __xmm@e09ee565e09ee565e09ee565e09ee565
CONST SEGMENT
__xmm@e09ee565e09ee565e09ee565e09ee565 DB 'e', 0e5H, 09eH, 0e0H, 'e', 0e5H
DB 09eH, 0e0H, 'e', 0e5H, 09eH, 0e0H, 'e', 0e5H, 09eH, 0e0H
CONST ENDS
; COMDAT __xmm@80808080808080808080808080808080
CONST SEGMENT
__xmm@80808080808080808080808080808080 DB 080H, 080H, 080H, 080H, 080H, 080H
DB 080H, 080H, 080H, 080H, 080H, 080H, 080H, 080H, 080H, 080H
CONST ENDS
; COMDAT __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a
CONST SEGMENT
__xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a DB 'Z', 01cH, 'Z', 01cH, 'Z', 01cH
DB 'Z', 01cH, 'Z', 01cH, 'Z', 01cH, 'Z', 01cH, 'Z', 01cH
CONST ENDS
; COMDAT __xmm@166f166f166f166f166f166f166f166f
CONST SEGMENT
__xmm@166f166f166f166f166f166f166f166f DB 'o', 016H, 'o', 016H, 'o', 016H
DB 'o', 016H, 'o', 016H, 'o', 016H, 'o', 016H, 'o', 016H
CONST ENDS
; COMDAT __xmm@12d0046b12d0046b12d0046b12d0046b
CONST SEGMENT
__xmm@12d0046b12d0046b12d0046b12d0046b DB 'k', 04H, 0d0H, 012H, 'k', 04H, 0d0H
DB 012H, 'k', 04H, 0d0H, 012H, 'k', 04H, 0d0H, 012H
CONST ENDS
; COMDAT __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3
CONST SEGMENT
__xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 DB 0c3H, 0f9H, 0c8H, 011H, 0c3H, 0f9H
DB 0c8H, 011H, 0c3H, 0f9H, 0c8H, 011H, 0c3H, 0f9H, 0c8H, 011H
CONST ENDS
; COMDAT __xmm@11c8e09e11c8e09e11c8e09e11c8e09e
CONST SEGMENT
__xmm@11c8e09e11c8e09e11c8e09e11c8e09e DB 09eH, 0e0H, 0c8H, 011H, 09eH, 0e0H
DB 0c8H, 011H, 09eH, 0e0H, 0c8H, 011H, 09eH, 0e0H, 0c8H, 011H
CONST ENDS
; COMDAT __xmm@08a914e808a914e808a914e808a914e8
CONST SEGMENT
__xmm@08a914e808a914e808a914e808a914e8 DB 0e8H, 014H, 0a9H, 08H, 0e8H, 014H
DB 0a9H, 08H, 0e8H, 014H, 0a9H, 08H, 0e8H, 014H, 0a9H, 08H
CONST ENDS
; COMDAT __xmm@01010000010100000101000001010000
CONST SEGMENT
__xmm@01010000010100000101000001010000 DB 00H, 00H, 01H, 01H, 00H, 00H, 01H
DB 01H, 00H, 00H, 01H, 01H, 00H, 00H, 01H, 01H
CONST ENDS
; COMDAT __xmm@00ff00ff00ff00ff00ff00ff00ff00ff
CONST SEGMENT
__xmm@00ff00ff00ff00ff00ff00ff00ff00ff DB 0ffH, 00H, 0ffH, 00H, 0ffH, 00H
DB 0ffH, 00H, 0ffH, 00H, 0ffH, 00H, 0ffH, 00H, 0ffH, 00H
CONST ENDS
; COMDAT __xmm@00080008000800080008000800080008
CONST SEGMENT
__xmm@00080008000800080008000800080008 DB 08H, 00H, 08H, 00H, 08H, 00H, 08H
DB 00H, 08H, 00H, 08H, 00H, 08H, 00H, 08H, 00H
CONST ENDS
; COMDAT __xmm@00000200000002000000020000000200
CONST SEGMENT
__xmm@00000200000002000000020000000200 DB 00H, 02H, 00H, 00H, 00H, 02H, 00H
DB 00H, 00H, 02H, 00H, 00H, 00H, 02H, 00H, 00H
CONST ENDS
; COMDAT __real@477fff00
CONST SEGMENT
__real@477fff00 DD 0477fff00r ; 65535
CONST ENDS
; COMDAT __real@437f0000
CONST SEGMENT
__real@437f0000 DD 0437f0000r ; 255
CONST ENDS
; COMDAT __real@40400000
CONST SEGMENT
__real@40400000 DD 040400000r ; 3
CONST ENDS
; COMDAT __real@3ff0000000000000
CONST SEGMENT
__real@3ff0000000000000 DQ 03ff0000000000000r ; 1
CONST ENDS
; COMDAT __real@3f800000
CONST SEGMENT
__real@3f800000 DD 03f800000r ; 1
CONST ENDS
; COMDAT __real@3f000000
CONST SEGMENT
__real@3f000000 DD 03f000000r ; 0.5
CONST ENDS
; COMDAT rtc$TMZ
rtc$TMZ SEGMENT
_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
rtc$TMZ ENDS
; COMDAT rtc$IMZ
rtc$IMZ SEGMENT
_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
rtc$IMZ ENDS
; COMDAT ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@
CONST SEGMENT
??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ DB 'Failed to load Op'
DB 'enGL api:', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@
CONST SEGMENT
??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ DB 'max value > 65535', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0O@MKGNGALN@invalid?5width@
CONST SEGMENT
??_C@_0O@MKGNGALN@invalid?5width@ DB 'invalid width', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BH@OBINMOBC@integer?5parse?5overflow@
CONST SEGMENT
??_C@_0BH@OBINMOBC@integer?5parse?5overflow@ DB 'integer parse overflow', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07IDKIDMGJ@bad?5PNM@
CONST SEGMENT
??_C@_07IDKIDMGJ@bad?5PNM@ DB 'bad PNM', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@
CONST SEGMENT
??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@ DB 'invalid decode'
DB 'd scanline length', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_03FOKDFDHG@?$CLX?5@
CONST SEGMENT
??_C@_03FOKDFDHG@?$CLX?5@ DB '+X ', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@
CONST SEGMENT
??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@ DB 'unsupported data layout'
DB 00H ; `string'
CONST ENDS
; COMDAT ??_C@_03HKAKGGJN@?9Y?5@
CONST SEGMENT
??_C@_03HKAKGGJN@?9Y?5@ DB '-Y ', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BD@NKJFFLKL@unsupported?5format@
CONST SEGMENT
??_C@_0BD@NKJFFLKL@unsupported?5format@ DB 'unsupported format', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@
CONST SEGMENT
??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@ DB 'FORMAT=32-bit_rle_rgbe'
DB 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07NCIOKENI@not?5HDR@
CONST SEGMENT
??_C@_07NCIOKENI@not?5HDR@ DB 'not HDR', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_06NDOKKIDJ@?$CD?$DPRGBE@
CONST SEGMENT
??_C@_06NDOKKIDJ@?$CD?$DPRGBE@ DB '#?RGBE', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@
CONST SEGMENT
??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@ DB '#?RADIANCE', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@
CONST SEGMENT
??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@ DB '#?RGBE', 0aH, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@
CONST SEGMENT
??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@ DB '#?RADIANCE', 0aH, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@DJABBOOH@unknown?5code@
CONST SEGMENT
??_C@_0N@DJABBOOH@unknown?5code@ DB 'unknown code', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BE@NAMJKDNF@missing?5color?5table@
CONST SEGMENT
??_C@_0BE@NAMJKDNF@missing?5color?5table@ DB 'missing color table', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@
CONST SEGMENT
??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@ DB 'bad Image Descriptor', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@
CONST SEGMENT
??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@ DB 'illegal code in raster', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@GJNJCPDJ@too?5many?5codes@
CONST SEGMENT
??_C@_0P@GJNJCPDJ@too?5many?5codes@ DB 'too many codes', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0O@MGDACKOJ@no?5clear?5code@
CONST SEGMENT
??_C@_0O@MGDACKOJ@no?5clear?5code@ DB 'no clear code', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_00CNPNBAHC@@
CONST SEGMENT
??_C@_00CNPNBAHC@@ DB 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07KMJLPAII@not?5GIF@
CONST SEGMENT
??_C@_07KMJLPAII@not?5GIF@ DB 'not GIF', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_08GGMBIFE@bad?5file@
CONST SEGMENT
??_C@_08GGMBIFE@bad?5file@ DB 'bad file', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_04ELNJHLFH@PICT@
CONST SEGMENT
??_C@_04ELNJHLFH@PICT@ DB 'PICT', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_04KBFEPHFH@S?$IA?v4@
CONST SEGMENT
??_C@_04KBFEPHFH@S?$IA?v4@ DB 'S', 080H, 0f6H, '4', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07DPPMCAKL@corrupt@
CONST SEGMENT
??_C@_07DPPMCAKL@corrupt@ DB 'corrupt', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BD@IOGGBMNK@wrong?5color?5format@
CONST SEGMENT
??_C@_0BD@IOGGBMNK@wrong?5color?5format@ DB 'wrong color format', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@
CONST SEGMENT
??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@ DB 'unsupported bit depth', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BE@PJBNGDBE@wrong?5channel?5count@
CONST SEGMENT
??_C@_0BE@PJBNGDBE@wrong?5channel?5count@ DB 'wrong channel count', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0O@CHBCDKKC@wrong?5version@
CONST SEGMENT
??_C@_0O@CHBCDKKC@wrong?5version@ DB 'wrong version', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07ECNCNLIK@not?5PSD@
CONST SEGMENT
??_C@_07ECNCNLIK@not?5PSD@ DB 'not PSD', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@
CONST SEGMENT
??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@ DB 't'
DB 00H, 'g', 00H, 'a', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H
DB 'p', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, 'S', 00H, 'T'
DB 00H, 'B', 00H, 'I', 00H, '_', 00H, 'r', 00H, 'g', 00H, 'b', 00H
DB 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@ILLOCNCO@bad?5palette@
CONST SEGMENT
??_C@_0M@ILLOCNCO@bad?5palette@ DB 'bad palette', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0L@DMAPJJO@bad?5format@
CONST SEGMENT
??_C@_0L@DMAPJJO@bad?5format@ DB 'bad format', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_09DAEBACAB@bad?5masks@
CONST SEGMENT
??_C@_09DAEBACAB@bad?5masks@ DB 'bad masks', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07JNJHIMGH@bad?5bpp@
CONST SEGMENT
??_C@_07JNJHIMGH@bad?5bpp@ DB 'bad bpp', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07MALOAKCI@invalid@
CONST SEGMENT
??_C@_07MALOAKCI@invalid@ DB 'invalid', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0L@JDPIFELH@bad?5offset@
CONST SEGMENT
??_C@_0L@JDPIFELH@bad?5offset@ DB 'bad offset', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0L@PJHPAMCH@bad?5header@
CONST SEGMENT
??_C@_0L@PJHPAMCH@bad?5header@ DB 'bad header', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@
CONST SEGMENT
??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@ DB 'BMP JPEG/PNG', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07IMHMNOIB@BMP?5RLE@
CONST SEGMENT
??_C@_07IMHMNOIB@BMP?5RLE@ DB 'BMP RLE', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@KHBIBJBG@unknown?5BMP@
CONST SEGMENT
??_C@_0M@KHBIBJBG@unknown?5BMP@ DB 'unknown BMP', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07IEJCHBDI@bad?5BMP@
CONST SEGMENT
??_C@_07IEJCHBDI@bad?5BMP@ DB 'bad BMP', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07IANEBNLB@not?5BMP@
CONST SEGMENT
??_C@_07IANEBNLB@not?5BMP@ DB 'not BMP', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@
CONST SEGMENT
??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@ DB 'b'
DB 00H, 'i', 00H, 't', 00H, 's', 00H, ' ', 00H, '>', 00H, '=', 00H
DB ' ', 00H, '0', 00H, ' ', 00H, '&', 00H, '&', 00H, ' ', 00H, 'b'
DB 00H, 'i', 00H, 't', 00H, 's', 00H, ' ', 00H, '<', 00H, '=', 00H
DB ' ', 00H, '8', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@
CONST SEGMENT
??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@ DB 'v', 00H, ' '
DB 00H, '<', 00H, ' ', 00H, '2', 00H, '5', 00H, '6', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@
CONST SEGMENT
??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ DB 'bad bits_per_channel', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07MLPECBNA@no?5IDAT@
CONST SEGMENT
??_C@_07MLPECBNA@no?5IDAT@ DB 'no IDAT', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_09MNNCNKEO@outofdata@
CONST SEGMENT
??_C@_09MNNCNKEO@outofdata@ DB 'outofdata', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@PLHGLONG@IDAT?5size?5limit@
CONST SEGMENT
??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ DB 'IDAT size limit', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07CKIELOEH@no?5PLTE@
CONST SEGMENT
??_C@_07CKIELOEH@no?5PLTE@ DB 'no PLTE', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@
CONST SEGMENT
??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@ DB 'tRNS with alpha', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@KDLCCKCH@bad?5tRNS?5len@
CONST SEGMENT
??_C@_0N@KDLCCKCH@bad?5tRNS?5len@ DB 'bad tRNS len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@
CONST SEGMENT
??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@ DB 'tRNS before PLTE', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@
CONST SEGMENT
??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@ DB 'tRNS after IDAT', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@JCPAJAKB@invalid?5PLTE@
CONST SEGMENT
??_C@_0N@JCPAJAKB@invalid?5PLTE@ DB 'invalid PLTE', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@JEAFOMAF@first?5not?5IHDR@
CONST SEGMENT
??_C@_0P@JEAFOMAF@first?5not?5IHDR@ DB 'first not IHDR', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0O@FNFBHCOO@0?9pixel?5image@
CONST SEGMENT
??_C@_0O@FNFBHCOO@0?9pixel?5image@ DB '0-pixel image', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BF@JCGDPBAA@bad?5interlace?5method@
CONST SEGMENT
??_C@_0BF@JCGDPBAA@bad?5interlace?5method@ DB 'bad interlace method', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BC@GHLIKKMD@bad?5filter?5method@
CONST SEGMENT
??_C@_0BC@GHLIKKMD@bad?5filter?5method@ DB 'bad filter method', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@MDMBDDFG@bad?5comp?5method@
CONST SEGMENT
??_C@_0BA@MDMBDDFG@bad?5comp?5method@ DB 'bad comp method', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_09MBBNGCKB@bad?5ctype@
CONST SEGMENT
??_C@_09MBBNGCKB@bad?5ctype@ DB 'bad ctype', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@
CONST SEGMENT
??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@ DB '1/2/4/8/16-bit only', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@POJLKMKK@bad?5IHDR?5len@
CONST SEGMENT
??_C@_0N@POJLKMKK@bad?5IHDR?5len@ DB 'bad IHDR len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0O@KBHBNJOK@multiple?5IHDR@
CONST SEGMENT
??_C@_0O@KBHBNJOK@multiple?5IHDR@ DB 'multiple IHDR', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@
CONST SEGMENT
??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@ DB 's'
DB 00H, '-', 00H, '>', 00H, 'i', 00H, 'm', 00H, 'g', 00H, '_', 00H
DB 'o', 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H, '='
DB 00H, '=', 00H, ' ', 00H, '4', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@
CONST SEGMENT
??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@ DB 'o'
DB 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H, '=', 00H
DB '=', 00H, ' ', 00H, '2', 00H, ' ', 00H, '|', 00H, '|', 00H, ' '
DB 00H, 'o', 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H
DB '=', 00H, '=', 00H, ' ', 00H, '4', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@
CONST SEGMENT
??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@ DB 'i'
DB 00H, 'm', 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '+', 00H
DB ' ', 00H, '1', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, 'o'
DB 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@
CONST SEGMENT
??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@ DB 'd'
DB 00H, 'e', 00H, 'p', 00H, 't', 00H, 'h', 00H, ' ', 00H, '=', 00H
DB '=', 00H, ' ', 00H, '1', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@FBBCPGMN@invalid?5filter@
CONST SEGMENT
??_C@_0P@FBBCPGMN@invalid?5filter@ DB 'invalid filter', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BC@BHMPBBMG@not?5enough?5pixels@
CONST SEGMENT
??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ DB 'not enough pixels', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@
CONST SEGMENT
??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@ DB 'o'
DB 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H, '=', 00H
DB '=', 00H, ' ', 00H, 's', 00H, '-', 00H, '>', 00H, 'i', 00H, 'm'
DB 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '|', 00H, '|', 00H
DB ' ', 00H, 'o', 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' '
DB 00H, '=', 00H, '=', 00H, ' ', 00H, 's', 00H, '-', 00H, '>', 00H
DB 'i', 00H, 'm', 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '+'
DB 00H, ' ', 00H, '1', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@
CONST SEGMENT
??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@ DB 'i'
DB 00H, 'm', 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '=', 00H
DB '=', 00H, ' ', 00H, '3', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@DMDNBACF@bad?5png?5sig@
CONST SEGMENT
??_C@_0M@DMDNBACF@bad?5png?5sig@ DB 'bad png sig', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@MCNBDLPD@bad?5compression@
CONST SEGMENT
??_C@_0BA@MCNBDLPD@bad?5compression@ DB 'bad compression', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@DOGMHEBI@no?5preset?5dict@
CONST SEGMENT
??_C@_0P@DOGMHEBI@no?5preset?5dict@ DB 'no preset dict', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@OBKOPAFL@bad?5zlib?5header@
CONST SEGMENT
??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ DB 'bad zlib header', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BB@PIPBCKIA@read?5past?5buffer@
CONST SEGMENT
??_C@_0BB@PIPBCKIA@read?5past?5buffer@ DB 'read past buffer', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@IECDHMDI@zlib?5corrupt@
CONST SEGMENT
??_C@_0N@IECDHMDI@zlib?5corrupt@ DB 'zlib corrupt', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_08DIAPIMGJ@bad?5dist@
CONST SEGMENT
??_C@_08DIAPIMGJ@bad?5dist@ DB 'bad dist', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@CLDJCNKP@unexpected?5end@
CONST SEGMENT
??_C@_0P@CLDJCNKP@unexpected?5end@ DB 'unexpected end', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BE@IBFIPFO@output?5buffer?5limit@
CONST SEGMENT
??_C@_0BE@IBFIPFO@output?5buffer?5limit@ DB 'output buffer limit', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@MDNKOBMC@bad?5codelengths@
CONST SEGMENT
??_C@_0BA@MDNKOBMC@bad?5codelengths@ DB 'bad codelengths', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_09EOHLEIKL@bad?5sizes@
CONST SEGMENT
??_C@_09EOHLEIKL@bad?5sizes@ DB 'bad sizes', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@
CONST SEGMENT
??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@ DB 'b'
DB 00H, 'i', 00H, 't', 00H, 's', 00H, ' ', 00H, '<', 00H, '=', 00H
DB ' ', 00H, '1', 00H, '6', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@KBPNPPBJ@bad?5req_comp@
CONST SEGMENT
??_C@_0N@KBPNPPBJ@bad?5req_comp@ DB 'bad req_comp', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@PNCLKCLJ@bad?5DNL?5height@
CONST SEGMENT
??_C@_0P@PNCLKCLJ@bad?5DNL?5height@ DB 'bad DNL height', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@EPMOIECP@bad?5DNL?5len@
CONST SEGMENT
??_C@_0M@EPMOIECP@bad?5DNL?5len@ DB 'bad DNL len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_06IFCEAHIA@no?5SOF@
CONST SEGMENT
??_C@_06IFCEAHIA@no?5SOF@ DB 'no SOF', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_06CLMBLEP@no?5SOI@
CONST SEGMENT
??_C@_06CLMBLEP@no?5SOI@ DB 'no SOI', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_06LJIHDFHI@bad?5TQ@
CONST SEGMENT
??_C@_06LJIHDFHI@bad?5TQ@ DB 'bad TQ', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_05MPLLHCJG@bad?5V@
CONST SEGMENT
??_C@_05MPLLHCJG@bad?5V@ DB 'bad V', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_05BLPKENEJ@bad?5H@
CONST SEGMENT
??_C@_05BLPKENEJ@bad?5H@ DB 'bad H', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BE@DAPHADHL@bad?5component?5count@
CONST SEGMENT
??_C@_0BE@DAPHADHL@bad?5component?5count@ DB 'bad component count', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_09OJDLMMBJ@too?5large@
CONST SEGMENT
??_C@_09OJDLMMBJ@too?5large@ DB 'too large', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07BIDACDEF@0?5width@
CONST SEGMENT
??_C@_07BIDACDEF@0?5width@ DB '0 width', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BB@LNEGOMA@no?5header?5height@
CONST SEGMENT
??_C@_0BB@LNEGOMA@no?5header?5height@ DB 'no header height', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0L@BCINMEBJ@only?58?9bit@
CONST SEGMENT
??_C@_0L@BCINMEBJ@only?58?9bit@ DB 'only 8-bit', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@DOFMJEMP@bad?5SOF?5len@
CONST SEGMENT
??_C@_0M@DOFMJEMP@bad?5SOF?5len@ DB 'bad SOF len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_07EEJOMGGP@bad?5SOS@
CONST SEGMENT
??_C@_07EEJOMGGP@bad?5SOS@ DB 'bad SOS', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@JGMCBLGG@bad?5AC?5huff@
CONST SEGMENT
??_C@_0M@JGMCBLGG@bad?5AC?5huff@ DB 'bad AC huff', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@NOCCBFAC@bad?5DC?5huff@
CONST SEGMENT
??_C@_0M@NOCCBFAC@bad?5DC?5huff@ DB 'bad DC huff', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@GNEHAHOH@bad?5SOS?5len@
CONST SEGMENT
??_C@_0M@GNEHAHOH@bad?5SOS?5len@ DB 'bad SOS len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@
CONST SEGMENT
??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@ DB 'bad SOS component coun'
DB 't', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@NNGPHMMK@unknown?5marker@
CONST SEGMENT
??_C@_0P@NNGPHMMK@unknown?5marker@ DB 'unknown marker', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@EENLKPDI@bad?5APP?5len@
CONST SEGMENT
??_C@_0M@EENLKPDI@bad?5APP?5len@ DB 'bad APP len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@CICAFFCH@bad?5COM?5len@
CONST SEGMENT
??_C@_0M@CICAFFCH@bad?5COM?5len@ DB 'bad COM len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0P@JLGKOCGN@bad?5DHT?5header@
CONST SEGMENT
??_C@_0P@JLGKOCGN@bad?5DHT?5header@ DB 'bad DHT header', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0O@CNHKKDIM@bad?5DQT?5table@
CONST SEGMENT
??_C@_0O@CNHKKDIM@bad?5DQT?5table@ DB 'bad DQT table', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0N@BOFJCHAP@bad?5DQT?5type@
CONST SEGMENT
??_C@_0N@BOFJCHAP@bad?5DQT?5type@ DB 'bad DQT type', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@LPHNODCG@bad?5DRI?5len@
CONST SEGMENT
??_C@_0M@LPHNODCG@bad?5DRI?5len@ DB 'bad DRI len', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BA@KLNDOKJD@expected?5marker@
CONST SEGMENT
??_C@_0BA@KLNDOKJD@expected?5marker@ DB 'expected marker', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
CONST SEGMENT
??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ DB 'can''t merge dc and ac'
DB 00H ; `string'
CONST ENDS
; COMDAT ??_C@_09IFDKCGFO@bad?5delta@
CONST SEGMENT
??_C@_09IFDKCGFO@bad?5delta@ DB 'bad delta', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BB@IIMLINA@bad?5huffman?5code@
CONST SEGMENT
??_C@_0BB@IIMLINA@bad?5huffman?5code@ DB 'bad huffman code', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@
CONST SEGMENT
??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@ DB '('
DB 00H, '(', 00H, '(', 00H, 'j', 00H, '-', 00H, '>', 00H, 'c', 00H
DB 'o', 00H, 'd', 00H, 'e', 00H, '_', 00H, 'b', 00H, 'u', 00H, 'f'
DB 00H, 'f', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, '>', 00H
DB '>', 00H, ' ', 00H, '(', 00H, '3', 00H, '2', 00H, ' ', 00H, '-'
DB 00H, ' ', 00H, 'h', 00H, '-', 00H, '>', 00H, 's', 00H, 'i', 00H
DB 'z', 00H, 'e', 00H, '[', 00H, 'c', 00H, ']', 00H, ')', 00H, ')'
DB 00H, ' ', 00H, '&', 00H, ' ', 00H, 's', 00H, 't', 00H, 'b', 00H
DB 'i', 00H, '_', 00H, '_', 00H, 'b', 00H, 'm', 00H, 'a', 00H, 's'
DB 00H, 'k', 00H, '[', 00H, 'h', 00H, '-', 00H, '>', 00H, 's', 00H
DB 'i', 00H, 'z', 00H, 'e', 00H, '[', 00H, 'c', 00H, ']', 00H, ']'
DB 00H, ')', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, 'h', 00H
DB '-', 00H, '>', 00H, 'c', 00H, 'o', 00H, 'd', 00H, 'e', 00H, '['
DB 00H, 'c', 00H, ']', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BB@FOKGPEKG@bad?5code?5lengths@
CONST SEGMENT
??_C@_0BB@FOKGPEKG@bad?5code?5lengths@ DB 'bad code lengths', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0O@DEFOLMLB@bad?5size?5list@
CONST SEGMENT
??_C@_0O@DEFOLMLB@bad?5size?5list@ DB 'bad size list', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@MHDBFHD@unsupported@
CONST SEGMENT
??_C@_0M@MHDBFHD@unsupported@ DB 'unsupported', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_13COJANIEC@?$AA0@
CONST SEGMENT
??_C@_13COJANIEC@?$AA0@ DB '0', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@
CONST SEGMENT
??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@ DB 'r'
DB 00H, 'e', 00H, 'q', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H
DB 'p', 00H, ' ', 00H, '>', 00H, '=', 00H, ' ', 00H, '1', 00H, ' '
DB 00H, '&', 00H, '&', 00H, ' ', 00H, 'r', 00H, 'e', 00H, 'q', 00H
DB '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H, 'p', 00H, ' ', 00H, '<'
DB 00H, '=', 00H, ' ', 00H, '4', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0M@JPDHFAGK@can?8t?5fopen@
CONST SEGMENT
??_C@_0M@JPDHFAGK@can?8t?5fopen@ DB 'can''t fopen', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_02JDPG@rb@
CONST SEGMENT
??_C@_02JDPG@rb@ DB 'rb', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@
CONST SEGMENT
??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@ DB 'r'
DB 00H, 'i', 00H, '.', 00H, 'b', 00H, 'i', 00H, 't', 00H, 's', 00H
DB '_', 00H, 'p', 00H, 'e', 00H, 'r', 00H, '_', 00H, 'c', 00H, 'h'
DB 00H, 'a', 00H, 'n', 00H, 'n', 00H, 'e', 00H, 'l', 00H, ' ', 00H
DB '=', 00H, '=', 00H, ' ', 00H, '8', 00H, ' ', 00H, '|', 00H, '|'
DB 00H, ' ', 00H, 'r', 00H, 'i', 00H, '.', 00H, 'b', 00H, 'i', 00H
DB 't', 00H, 's', 00H, '_', 00H, 'p', 00H, 'e', 00H, 'r', 00H, '_'
DB 00H, 'c', 00H, 'h', 00H, 'a', 00H, 'n', 00H, 'n', 00H, 'e', 00H
DB 'l', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, '1', 00H, '6'
DB 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
CONST SEGMENT
??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ DB 'D'
DB 00H, ':', 00H, '\', 00H, 'p', 00H, 'l', 00H, 'a', 00H, 't', 00H
DB 'f', 00H, 'o', 00H, 'r', 00H, 'm', 00H, '-', 00H, 'd', 00H, 'e'
DB 00H, 'v', 00H, '\', 00H, 'S', 00H, 't', 00H, 'g', 00H, 'S', 00H
DB 'h', 00H, 'a', 00H, 'r', 00H, 'p', 00H, '.', 00H, 'N', 00H, 'a'
DB 00H, 't', 00H, 'i', 00H, 'v', 00H, 'e', 00H, '\', 00H, 'l', 00H
DB 'i', 00H, 'b', 00H, '\', 00H, 's', 00H, 't', 00H, 'b', 00H, 'i'
DB 00H, '\', 00H, 's', 00H, 't', 00H, 'b', 00H, '_', 00H, 'i', 00H
DB 'm', 00H, 'a', 00H, 'g', 00H, 'e', 00H, '.', 00H, 'h', 00H, 00H
DB 00H ; `string'
CONST ENDS
; COMDAT ??_C@_08NOGIMCHF@outofmem@
CONST SEGMENT
??_C@_08NOGIMCHF@outofmem@ DB 'outofmem', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_0BD@CBEDEJPH@unknown?5image?5type@
CONST SEGMENT
??_C@_0BD@CBEDEJPH@unknown?5image?5type@ DB 'unknown image type', 00H ; `string'
CONST ENDS
_DATA SEGMENT
stbi__stdio_callbacks DQ FLAT:stbi__stdio_read
DQ FLAT:stbi__stdio_skip
DQ FLAT:stbi__stdio_eof
stbi__l2h_gamma DD 0400ccccdr ; 2.2
stbi__l2h_scale DD 03f800000r ; 1
stbi__h2l_gamma_i DD 03ee8ba2er ; 0.454545
stbi__h2l_scale_i DD 03f800000r ; 1
first_row_filter DB 00H
DB 01H
DB 00H
DB 05H
DB 01H
ORG $+3
?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 DB 'XXXX PNG chunk not kno'
DB 'wn', 00H ; `stbi__parse_png_file'::`31'::invalid_chunk
ORG $+7
?mul_table@?1??stbi__shiftsigned@@9@9 DD 00H ; `stbi__shiftsigned'::`2'::mul_table
DD 0ffH
DD 055H
DD 049H
DD 011H
DD 021H
DD 041H
DD 081H
DD 01H
ORG $+4
?shift_table@?1??stbi__shiftsigned@@9@9 DD 00H ; `stbi__shiftsigned'::`2'::shift_table
DD 00H
DD 00H
DD 01H
DD 00H
DD 02H
DD 04H
DD 06H
DD 00H
_DATA ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$readLog DD 025050f01H
DD 010a230fH
DD 070030021H
DD 05002H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$unloadImageData DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$loadGlfuncDefault DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$loadImageData DD 035051d01H
DD 0118331dH
DD 07011001fH
DD 05010H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 03aH
DB 0caH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$linkShaderProgram DD 025054119H
DD 01122317H
DD 0700b0021H
DD 0500aH
DD imagerel __GSHandlerCheck
DD 0f8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
linkShaderProgram$rtcName$0 DB 073H
DB 075H
DB 063H
DB 063H
DB 065H
DB 073H
DB 073H
DB 00H
ORG $+8
linkShaderProgram$rtcVarDesc DD 024H
DD 04H
DQ FLAT:linkShaderProgram$rtcName$0
ORG $+48
linkShaderProgram$rtcFrameData DD 01H
DD 00H
DQ FLAT:linkShaderProgram$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$initGL DD 025051601H
DD 01112316H
DD 0700a001dH
DD 05009H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0cfH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$glCheckShaderStat DD 025054c19H
DD 011d2322H
DD 070160021H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0f8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
glCheckShaderStat$rtcName$0 DB 073H
DB 074H
DB 061H
DB 074H
DB 00H
ORG $+11
glCheckShaderStat$rtcVarDesc DD 024H
DD 04H
DQ FLAT:glCheckShaderStat$rtcName$0
ORG $+48
glCheckShaderStat$rtcFrameData DD 01H
DD 00H
DQ FLAT:glCheckShaderStat$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__is_16_main DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__info_main DD 025052201H
DD 011d2322H
DD 07016001dH
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_getinteger DD 025051801H
DD 01132318H
DD 0700c0021H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_isdigit DD 025051201H
DD 010d2312H
DD 07006001fH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_skip_whitespace DD 025051801H
DD 01132318H
DD 0700c001dH
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_isspace DD 025051201H
DD 010d2312H
DD 07006001fH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__hdr_convert DD 025051d01H
DD 0118231dH
DD 070110021H
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__hdr_gettoken DD 025051801H
DD 01132318H
DD 0700c0025H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__hdr_test_core DD 025051801H
DD 01132318H
DD 0700c0021H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__load_gif_main_outofmem DD 025051d01H
DD 0118231dH
DD 07011001fH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_load_next DD 025052201H
DD 011d2322H
DD 07016004dH
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__process_gif_raster DD 025051801H
DD 01132318H
DD 0700c0051H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__out_gif_code DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_info_raw DD 025052201H
DD 011d2322H
DD 070160021H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_header DD 025052201H
DD 011d2322H
DD 070160021H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_parse_colortable DD 025052201H
DD 011d2322H
DD 070160021H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_test_raw DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 044H
DW 06f4H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pic_load_core DD 025054b19H
DD 011c2321H
DD 070150083H
DD 05014H
DD imagerel __GSHandlerCheck
DD 0400H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__pic_load_core$rtcName$0 DB 070H
DB 061H
DB 063H
DB 06bH
DB 065H
DB 074H
DB 073H
DB 00H
stbi__pic_load_core$rtcName$1 DB 076H
DB 061H
DB 06cH
DB 075H
DB 065H
DB 00H
ORG $+2
stbi__pic_load_core$rtcName$2 DB 076H
DB 061H
DB 06cH
DB 075H
DB 065H
DB 00H
ORG $+10
stbi__pic_load_core$rtcVarDesc DD 0264H
DD 04H
DQ FLAT:stbi__pic_load_core$rtcName$2
DD 01e4H
DD 04H
DQ FLAT:stbi__pic_load_core$rtcName$1
DD 0a8H
DD 01eH
DQ FLAT:stbi__pic_load_core$rtcName$0
ORG $+144
stbi__pic_load_core$rtcFrameData DD 03H
DD 00H
DQ FLAT:stbi__pic_load_core$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__copyval DD 025051c01H
DD 0117231cH
DD 070100025H
DD 0500fH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__readval DD 025051c01H
DD 0117231cH
DD 070100025H
DD 0500fH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pic_test_core DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pic_is4 DD 025051801H
DD 01132318H
DD 0700c0021H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__psd_decode_rle DD 025051d01H
DD 0118231dH
DD 07011002dH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__tga_read_rgb16 DD 025051801H
DD 01132318H
DD 0700c0031H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__tga_get_comp DD 025051b01H
DD 0116231bH
DD 0700f001fH
DD 0500eH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bmp_parse_header DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bmp_set_mask_defaults DD 025051701H
DD 01122317H
DD 0700b001dH
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__shiftsigned DD 025051b01H
DD 0116231bH
DD 0700f001dH
DD 0500eH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bitcount DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__high_bit DD 025051201H
DD 010d2312H
DD 070060021H
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bmp_test_raw DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__png_info_raw DD 025052201H
DD 011d2322H
DD 07016001dH
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__do_png DD 035052201H
DD 011d3322H
DD 070160023H
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 03fH
DW 0ecfH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__parse_png_file DD 045054619H
DD 0117431cH
DD 070100143H
DD 0500fH
DD imagerel __GSHandlerCheck
DD 0a00H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__parse_png_file$rtcName$0 DB 070H
DB 061H
DB 06cH
DB 065H
DB 074H
DB 074H
DB 065H
DB 00H
stbi__parse_png_file$rtcName$1 DB 074H
DB 063H
DB 00H
ORG $+1
stbi__parse_png_file$rtcName$2 DB 074H
DB 063H
DB 031H
DB 036H
DB 00H
ORG $+3
stbi__parse_png_file$rtcName$3 DB 063H
DB 00H
ORG $+2
stbi__parse_png_file$rtcName$4 DB 072H
DB 061H
DB 077H
DB 05fH
DB 06cH
DB 065H
DB 06eH
DB 00H
stbi__parse_png_file$rtcVarDesc DD 06c4H
DD 04H
DQ FLAT:stbi__parse_png_file$rtcName$4
DD 0628H
DD 08H
DQ FLAT:stbi__parse_png_file$rtcName$3
DD 04c4H
DD 06H
DQ FLAT:stbi__parse_png_file$rtcName$2
DD 04a4H
DD 03H
DQ FLAT:stbi__parse_png_file$rtcName$1
DD 050H
DD 0400H
DQ FLAT:stbi__parse_png_file$rtcName$0
ORG $+240
stbi__parse_png_file$rtcFrameData DD 05H
DD 00H
DQ FLAT:stbi__parse_png_file$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__de_iphone DD 025051301H
DD 010e2313H
DD 070070041H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__expand_png_palette DD 025052201H
DD 011d2322H
DD 070160039H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__compute_transparency16 DD 025051d01H
DD 0118231dH
DD 07011002dH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__compute_transparency DD 025051d01H
DD 0118231dH
DD 07011002dH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__create_png_image DD 045053b01H
DD 011d4322H
DD 070160085H
DD 05015H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__create_png_image$rtcName$0 DB 078H
DB 06fH
DB 072H
DB 069H
DB 067H
DB 00H
ORG $+2
stbi__create_png_image$rtcName$1 DB 079H
DB 06fH
DB 072H
DB 069H
DB 067H
DB 00H
ORG $+2
stbi__create_png_image$rtcName$2 DB 078H
DB 073H
DB 070H
DB 063H
DB 00H
ORG $+3
stbi__create_png_image$rtcName$3 DB 079H
DB 073H
DB 070H
DB 063H
DB 00H
ORG $+3
stbi__create_png_image$rtcVarDesc DD 0188H
DD 01cH
DQ FLAT:stbi__create_png_image$rtcName$3
DD 0148H
DD 01cH
DQ FLAT:stbi__create_png_image$rtcName$2
DD 0108H
DD 01cH
DQ FLAT:stbi__create_png_image$rtcName$1
DD 0c8H
DD 01cH
DQ FLAT:stbi__create_png_image$rtcName$0
ORG $+192
stbi__create_png_image$rtcFrameData DD 04H
DD 00H
DQ FLAT:stbi__create_png_image$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__create_png_image_raw DD 025052201H
DD 011d2322H
DD 07016009dH
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__create_png_alpha_expand8 DD 025052201H
DD 011d2322H
DD 070160021H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__paeth DD 025051b01H
DD 0116231bH
DD 0700f0031H
DD 0500eH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__check_png_header DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__get_chunk_header DD 025052c01H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__get_chunk_header$rtcName$0 DB 063H
DB 00H
ORG $+14
stbi__get_chunk_header$rtcVarDesc DD 028H
DD 08H
DQ FLAT:stbi__get_chunk_header$rtcName$0
ORG $+48
stbi__get_chunk_header$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__get_chunk_header$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__do_zlib DD 025052201H
DD 011d2322H
DD 07016001dH
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__parse_zlib DD 025051701H
DD 01122317H
DD 0700b0025H
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__parse_zlib_header DD 025051301H
DD 010e2313H
DD 070070029H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__parse_uncompressed_block DD 025052c01H
DD 010e2313H
DD 07007002dH
DD 05006H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__parse_uncompressed_block$rtcName$0 DB 068H
DB 065H
DB 061H
DB 064H
DB 065H
DB 072H
DB 00H
ORG $+9
stbi__parse_uncompressed_block$rtcVarDesc DD 024H
DD 04H
DQ FLAT:stbi__parse_uncompressed_block$rtcName$0
ORG $+48
stbi__parse_uncompressed_block$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__parse_uncompressed_block$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 03cH
DW 039cH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__compute_huffman_codes DD 025054319H
DD 01142319H
DD 070070201H
DD 05006H
DD imagerel __GSHandlerCheck
DD 0ff0H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__compute_huffman_codes$rtcName$0 DB 07aH
DB 05fH
DB 063H
DB 06fH
DB 064H
DB 065H
DB 06cH
DB 065H
DB 06eH
DB 067H
DB 074H
DB 068H
DB 00H
ORG $+3
stbi__compute_huffman_codes$rtcName$1 DB 06cH
DB 065H
DB 06eH
DB 063H
DB 06fH
DB 064H
DB 065H
DB 073H
DB 00H
ORG $+7
stbi__compute_huffman_codes$rtcName$2 DB 063H
DB 06fH
DB 064H
DB 065H
DB 06cH
DB 065H
DB 06eH
DB 067H
DB 074H
DB 068H
DB 05fH
DB 073H
DB 069H
DB 07aH
DB 065H
DB 073H
DB 00H
ORG $+15
stbi__compute_huffman_codes$rtcVarDesc DD 0a28H
DD 013H
DQ FLAT:stbi__compute_huffman_codes$rtcName$2
DD 0840H
DD 01c7H
DQ FLAT:stbi__compute_huffman_codes$rtcName$1
DD 030H
DD 07e4H
DQ FLAT:stbi__compute_huffman_codes$rtcName$0
ORG $+144
stbi__compute_huffman_codes$rtcFrameData DD 03H
DD 00H
DQ FLAT:stbi__compute_huffman_codes$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__parse_huffman_block DD 025051301H
DD 010e2313H
DD 070070035H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__zexpand DD 025051d01H
DD 0118231dH
DD 07011002dH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__zhuffman_decode DD 025051801H
DD 01132318H
DD 0700c0025H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__zhuffman_decode_slowpath DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__zreceive DD 025051701H
DD 01122317H
DD 0700b0021H
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__fill_bits DD 025051301H
DD 010e2313H
DD 07007001fH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__zget8 DD 025051301H
DD 010e2313H
DD 07007001fH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__zeof DD 025051301H
DD 010e2313H
DD 07007001fH
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 040H
DW 03aaH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__zbuild_huffman DD 025054719H
DD 0118231dH
DD 070110053H
DD 05010H
DD imagerel __GSHandlerCheck
DD 0288H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__zbuild_huffman$rtcName$0 DB 06eH
DB 065H
DB 078H
DB 074H
DB 05fH
DB 063H
DB 06fH
DB 064H
DB 065H
DB 00H
ORG $+2
stbi__zbuild_huffman$rtcName$1 DB 073H
DB 069H
DB 07aH
DB 065H
DB 073H
DB 00H
ORG $+14
stbi__zbuild_huffman$rtcVarDesc DD 0f0H
DD 044H
DQ FLAT:stbi__zbuild_huffman$rtcName$1
DD 090H
DD 040H
DQ FLAT:stbi__zbuild_huffman$rtcName$0
ORG $+96
stbi__zbuild_huffman$rtcFrameData DD 02H
DD 00H
DQ FLAT:stbi__zbuild_huffman$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bit_reverse DD 025051601H
DD 01112316H
DD 0700a001dH
DD 05009H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bitreverse16 DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_info_raw DD 025052201H
DD 011d2322H
DD 07016001fH
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 012c0H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$load_jpeg_image DD 035054c19H
DD 011d3322H
DD 0701600a9H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0538H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
load_jpeg_image$rtcName$0 DB 063H
DB 06fH
DB 075H
DB 074H
DB 070H
DB 075H
DB 074H
DB 00H
load_jpeg_image$rtcName$1 DB 072H
DB 065H
DB 073H
DB 05fH
DB 063H
DB 06fH
DB 06dH
DB 070H
DB 00H
ORG $+15
load_jpeg_image$rtcVarDesc DD 0160H
DD 0c0H
DQ FLAT:load_jpeg_image$rtcName$1
DD 0118H
DD 020H
DQ FLAT:load_jpeg_image$rtcName$0
ORG $+96
load_jpeg_image$rtcFrameData DD 02H
DD 00H
DQ FLAT:load_jpeg_image$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__blinn_8x8 DD 025051601H
DD 01112316H
DD 0700a0021H
DD 05009H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__cleanup_jpeg DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__setup_jpeg DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__YCbCr_to_RGB_simd DD 025052201H
DD 011d2322H
DD 070160147H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__YCbCr_to_RGB_row DD 025052201H
DD 011d2322H
DD 070160039H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__resample_row_generic DD 025052201H
DD 011d2322H
DD 070160025H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__resample_row_hv_2_simd DD 025052201H
DD 011d2322H
DD 0701600e9H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__resample_row_hv_2 DD 025052201H
DD 011d2322H
DD 070160029H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__resample_row_h_2 DD 025052201H
DD 011d2322H
DD 070160029H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__resample_row_v_2 DD 025052201H
DD 011d2322H
DD 070160021H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$resample_row_1 DD 025052201H
DD 011d2322H
DD 07016001dH
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__decode_jpeg_image DD 025051301H
DD 010e2313H
DD 070070029H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__skip_jpeg_junk_at_end DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__decode_jpeg_header DD 025051701H
DD 01122317H
DD 0700b0021H
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__process_frame_header DD 025051701H
DD 01122317H
DD 0700b003dH
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__free_jpeg_components DD 025051c01H
DD 0117231cH
DD 070100021H
DD 0500fH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__process_scan_header DD 025051301H
DD 010e2313H
DD 070070035H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 03aH
DW 075bH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__process_marker DD 025054119H
DD 01122317H
DD 0700b0081H
DD 0500aH
DD imagerel __GSHandlerCheck
DD 03f8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__process_marker$rtcName$0 DB 073H
DB 069H
DB 07aH
DB 065H
DB 073H
DB 00H
ORG $+10
stbi__process_marker$rtcVarDesc DD 0110H
DD 040H
DQ FLAT:stbi__process_marker$rtcName$0
ORG $+48
stbi__process_marker$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__process_marker$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_finish DD 025051301H
DD 010e2313H
DD 070070035H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_dequantize DD 025051801H
DD 01132318H
DD 0700c0021H
DD 0500bH
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 036H
DW 0c93H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__parse_entropy_coded_data DD 045053d19H
DD 010e4313H
DD 0700700f5H
DD 05006H
DD imagerel __GSHandlerCheck
DD 0798H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__parse_entropy_coded_data$rtcName$0 DB 064H
DB 061H
DB 074H
DB 061H
DB 00H
ORG $+3
stbi__parse_entropy_coded_data$rtcName$1 DB 064H
DB 061H
DB 074H
DB 061H
DB 00H
ORG $+3
stbi__parse_entropy_coded_data$rtcVarDesc DD 0250H
DD 080H
DQ FLAT:stbi__parse_entropy_coded_data$rtcName$1
DD 090H
DD 080H
DQ FLAT:stbi__parse_entropy_coded_data$rtcName$0
ORG $+96
stbi__parse_entropy_coded_data$rtcFrameData DD 02H
DD 00H
DQ FLAT:stbi__parse_entropy_coded_data$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_reset DD 025051301H
DD 010e2313H
DD 07007001fH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__get_marker DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__idct_simd DD 025052201H
DD 011d2322H
DD 0701004afH
DD 0500fH
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 03fH
DW 0c5cH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__idct_block DD 025054619H
DD 0117231cH
DD 0701000edH
DD 0500fH
DD imagerel __GSHandlerCheck
DD 0758H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__idct_block$rtcName$0 DB 076H
DB 061H
DB 06cH
DB 00H
ORG $+12
stbi__idct_block$rtcVarDesc DD 050H
DD 0100H
DQ FLAT:stbi__idct_block$rtcName$0
ORG $+48
stbi__idct_block$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__idct_block$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__clamp DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_decode_block_prog_ac DD 025052201H
DD 011d2322H
DD 070160051H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_decode_block_prog_dc DD 025052201H
DD 011d2322H
DD 070160029H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_decode_block DD 025052201H
DD 011d2322H
DD 070160041H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_get_bit DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_get_bits DD 025051701H
DD 01122317H
DD 0700b0021H
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__extend_receive DD 025051701H
DD 01122317H
DD 0700b0025H
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_huff_decode DD 025051801H
DD 01132318H
DD 0700c002dH
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__grow_buffer_unsafe DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__build_fast_ac DD 025051801H
DD 01132318H
DD 0700c003dH
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__build_huffman DD 025051801H
DD 01132318H
DD 0700c0039H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__convert_format16 DD 025052101H
DD 011c2321H
DD 070150031H
DD 05014H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__compute_y_16 DD 025051b01H
DD 0116231bH
DD 0700f001dH
DD 0500eH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__convert_format DD 025052101H
DD 011c2321H
DD 070150031H
DD 05014H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__compute_y DD 025051b01H
DD 0116231bH
DD 0700f001dH
DD 0500eH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__get32le DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__get16le DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__get32be DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__get16be DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__getn DD 025051d01H
DD 0118231dH
DD 070110029H
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__skip DD 025051701H
DD 01122317H
DD 0700b0021H
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__at_eof DD 025051301H
DD 010e2313H
DD 07007001fH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__get8 DD 025051301H
DD 010e2313H
DD 07007001fH
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 01a0H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__loadf_main DD 035054c19H
DD 011d3322H
DD 07016002fH
DD 05015H
DD imagerel __GSHandlerCheck
DD 0160H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__loadf_main$rtcName$0 DB 072H
DB 069H
DB 00H
ORG $+13
stbi__loadf_main$rtcVarDesc DD 058H
DD 0cH
DQ FLAT:stbi__loadf_main$rtcName$0
ORG $+48
stbi__loadf_main$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__loadf_main$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 03bH
DB 08dH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__fopen DD 025054219H
DD 01132318H
DD 0700c0021H
DD 0500bH
DD imagerel __GSHandlerCheck
DD 0f8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__fopen$rtcName$0 DB 066H
DB 00H
ORG $+14
stbi__fopen$rtcVarDesc DD 028H
DD 08H
DQ FLAT:stbi__fopen$rtcName$0
ORG $+48
stbi__fopen$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__fopen$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__float_postprocess DD 025052201H
DD 011d2322H
DD 070160021H
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 01f3H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__load_and_postprocess_16bit DD 045054c19H
DD 011d4322H
DD 07016002fH
DD 05015H
DD imagerel __GSHandlerCheck
DD 0168H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__load_and_postprocess_16bit$rtcName$0 DB 072H
DB 069H
DB 00H
ORG $+13
stbi__load_and_postprocess_16bit$rtcVarDesc DD 048H
DD 0cH
DQ FLAT:stbi__load_and_postprocess_16bit$rtcName$0
ORG $+48
stbi__load_and_postprocess_16bit$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__load_and_postprocess_16bit$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 01edH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__load_and_postprocess_8bit DD 045054c19H
DD 011d4322H
DD 07016002fH
DD 05015H
DD imagerel __GSHandlerCheck
DD 0168H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__load_and_postprocess_8bit$rtcName$0 DB 072H
DB 069H
DB 00H
ORG $+13
stbi__load_and_postprocess_8bit$rtcVarDesc DD 048H
DD 0cH
DQ FLAT:stbi__load_and_postprocess_8bit$rtcName$0
ORG $+48
stbi__load_and_postprocess_8bit$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__load_and_postprocess_8bit$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__vertical_flip_slices DD 025052101H
DD 011c2321H
DD 070150029H
DD 05014H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 044H
DW 01eaH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__vertical_flip DD 025054b19H
DD 011c2321H
DD 07015019fH
DD 05014H
DD imagerel __GSHandlerCheck
DD 0ce0H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__vertical_flip$rtcName$0 DB 074H
DB 065H
DB 06dH
DB 070H
DB 00H
ORG $+11
stbi__vertical_flip$rtcVarDesc DD 070H
DD 0800H
DQ FLAT:stbi__vertical_flip$rtcName$0
ORG $+48
stbi__vertical_flip$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__vertical_flip$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__convert_8_to_16 DD 025052101H
DD 011c2321H
DD 070150029H
DD 05014H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__convert_16_to_8 DD 025052101H
DD 011c2321H
DD 070150029H
DD 05014H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__load_main DD 045052201H
DD 011d4322H
DD 070160025H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__hdr_to_ldr DD 025052101H
DD 011c2321H
DD 070150035H
DD 05014H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__ldr_to_hdr DD 035052101H
DD 011c3321H
DD 07015002fH
DD 05014H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__mul2shorts_valid DD 025051601H
DD 01112316H
DD 0700a001fH
DD 05009H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__addints_valid DD 025051601H
DD 01112316H
DD 0700a001fH
DD 05009H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__malloc_mad4 DD 035052001H
DD 011b3320H
DD 07014001fH
DD 05013H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__malloc_mad3 DD 025052001H
DD 011b2320H
DD 07014001dH
DD 05013H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__malloc_mad2 DD 025051b01H
DD 0116231bH
DD 0700f001dH
DD 0500eH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__mad4sizes_valid DD 025052001H
DD 011b2320H
DD 07014001fH
DD 05013H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__mad3sizes_valid DD 025052001H
DD 011b2320H
DD 07014001fH
DD 05013H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__mad2sizes_valid DD 025051b01H
DD 0116231bH
DD 0700f001fH
DD 0500eH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__mul2sizes_valid DD 025051601H
DD 01112316H
DD 0700a001fH
DD 05009H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__addsizes_valid DD 025051601H
DD 01112316H
DD 0700a001fH
DD 05009H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__malloc DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__err DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_is16 DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 0230H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_info DD 025054c19H
DD 011d2322H
DD 070160031H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0178H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__pnm_info$rtcName$0 DB 064H
DB 075H
DB 06dH
DB 06dH
DB 079H
DB 00H
ORG $+2
stbi__pnm_info$rtcName$1 DB 063H
DB 00H
ORG $+6
stbi__pnm_info$rtcVarDesc DD 064H
DD 01H
DQ FLAT:stbi__pnm_info$rtcName$1
DD 044H
DD 04H
DQ FLAT:stbi__pnm_info$rtcName$0
ORG $+96
stbi__pnm_info$rtcFrameData DD 02H
DD 00H
DQ FLAT:stbi__pnm_info$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_load DD 035052201H
DD 011d3322H
DD 070160023H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pnm_test DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_info DD 025052201H
DD 011d2322H
DD 07016001dH
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 04bH
DW 0452H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__load_gif_main DD 035055219H
DD 01233328H
DD 0701611ffH
DD 05015H
DD imagerel __GSHandlerCheck
DD 08fe0H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__load_gif_main$rtcName$0 DB 067H
DB 00H
ORG $+14
stbi__load_gif_main$rtcVarDesc DD 0c0H
DD 08870H
DQ FLAT:stbi__load_gif_main$rtcName$0
ORG $+48
stbi__load_gif_main$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__load_gif_main$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 04bH
DW 0152H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_load DD 035055219H
DD 01233328H
DD 0701611ddH
DD 05015H
DD imagerel __GSHandlerCheck
DD 08ed8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__gif_load$rtcName$0 DB 067H
DB 00H
ORG $+14
stbi__gif_load$rtcVarDesc DD 060H
DD 08870H
DQ FLAT:stbi__gif_load$rtcName$0
ORG $+48
stbi__gif_load$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__gif_load$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__gif_test DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 02aaH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pic_info DD 025054c19H
DD 011d2322H
DD 070160039H
DD 05015H
DD imagerel __GSHandlerCheck
DD 01b8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__pic_info$rtcName$0 DB 064H
DB 075H
DB 06dH
DB 06dH
DB 079H
DB 00H
ORG $+2
stbi__pic_info$rtcName$1 DB 070H
DB 061H
DB 063H
DB 06bH
DB 065H
DB 074H
DB 073H
DB 00H
stbi__pic_info$rtcVarDesc DD 0a8H
DD 01eH
DQ FLAT:stbi__pic_info$rtcName$1
DD 084H
DD 04H
DQ FLAT:stbi__pic_info$rtcName$0
ORG $+96
stbi__pic_info$rtcFrameData DD 02H
DD 00H
DQ FLAT:stbi__pic_info$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 0300H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pic_load DD 035054c19H
DD 011d3322H
DD 070160035H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0190H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__pic_load$rtcName$0 DB 069H
DB 06eH
DB 074H
DB 065H
DB 072H
DB 06eH
DB 061H
DB 06cH
DB 05fH
DB 063H
DB 06fH
DB 06dH
DB 070H
DB 00H
ORG $+2
stbi__pic_load$rtcVarDesc DD 0b4H
DD 04H
DQ FLAT:stbi__pic_load$rtcName$0
ORG $+48
stbi__pic_load$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__pic_load$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__pic_test DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 0267H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__hdr_info DD 025054c19H
DD 011d2322H
DD 0701600ddH
DD 05015H
DD imagerel __GSHandlerCheck
DD 06d8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__hdr_info$rtcName$0 DB 062H
DB 075H
DB 066H
DB 066H
DB 065H
DB 072H
DB 00H
ORG $+1
stbi__hdr_info$rtcName$1 DB 074H
DB 06fH
DB 06bH
DB 065H
DB 06eH
DB 00H
ORG $+2
stbi__hdr_info$rtcName$2 DB 064H
DB 075H
DB 06dH
DB 06dH
DB 079H
DB 00H
ORG $+10
stbi__hdr_info$rtcVarDesc DD 0484H
DD 04H
DQ FLAT:stbi__hdr_info$rtcName$2
DD 0448H
DD 08H
DQ FLAT:stbi__hdr_info$rtcName$1
DD 030H
DD 0400H
DQ FLAT:stbi__hdr_info$rtcName$0
ORG $+144
stbi__hdr_info$rtcFrameData DD 03H
DD 00H
DQ FLAT:stbi__hdr_info$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 0a45H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__hdr_load DD 035054c19H
DD 011d3322H
DD 070160139H
DD 05015H
DD imagerel __GSHandlerCheck
DD 09b0H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__hdr_load$rtcName$0 DB 062H
DB 075H
DB 066H
DB 066H
DB 065H
DB 072H
DB 00H
ORG $+1
stbi__hdr_load$rtcName$1 DB 074H
DB 06fH
DB 06bH
DB 065H
DB 06eH
DB 00H
ORG $+2
stbi__hdr_load$rtcName$2 DB 072H
DB 067H
DB 062H
DB 065H
DB 00H
ORG $+3
stbi__hdr_load$rtcName$3 DB 072H
DB 067H
DB 062H
DB 065H
DB 00H
ORG $+3
stbi__hdr_load$rtcVarDesc DD 0674H
DD 04H
DQ FLAT:stbi__hdr_load$rtcName$3
DD 0654H
DD 04H
DQ FLAT:stbi__hdr_load$rtcName$2
DD 0458H
DD 08H
DQ FLAT:stbi__hdr_load$rtcName$1
DD 040H
DD 0400H
DQ FLAT:stbi__hdr_load$rtcName$0
ORG $+192
stbi__hdr_load$rtcFrameData DD 04H
DD 00H
DQ FLAT:stbi__hdr_load$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__hdr_test DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__psd_is16 DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 01c5H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__psd_info DD 025054c19H
DD 011d2322H
DD 070160029H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0138H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__psd_info$rtcName$0 DB 064H
DB 075H
DB 06dH
DB 06dH
DB 079H
DB 00H
ORG $+10
stbi__psd_info$rtcVarDesc DD 044H
DD 04H
DQ FLAT:stbi__psd_info$rtcName$0
ORG $+48
stbi__psd_info$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__psd_info$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__psd_load DD 035052201H
DD 011d3322H
DD 070160097H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__psd_test DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__tga_info DD 025052201H
DD 011d2322H
DD 07016003dH
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 0babH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__tga_load DD 035054c19H
DD 011d3322H
DD 0701600d5H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0690H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__tga_load$rtcName$0 DB 074H
DB 067H
DB 061H
DB 05fH
DB 072H
DB 067H
DB 062H
DB 031H
DB 036H
DB 00H
ORG $+6
stbi__tga_load$rtcName$1 DB 072H
DB 061H
DB 077H
DB 05fH
DB 064H
DB 061H
DB 074H
DB 061H
DB 00H
ORG $+7
stbi__tga_load$rtcVarDesc DD 0294H
DD 04H
DQ FLAT:stbi__tga_load$rtcName$1
DD 01d4H
DD 04H
DQ FLAT:stbi__tga_load$rtcName$0
ORG $+96
stbi__tga_load$rtcFrameData DD 02H
DD 00H
DQ FLAT:stbi__tga_load$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__tga_test DD 025051301H
DD 010e2313H
DD 070070029H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 0136H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bmp_info DD 025054c19H
DD 011d2322H
DD 070160029H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0138H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__bmp_info$rtcName$0 DB 069H
DB 06eH
DB 066H
DB 06fH
DB 00H
ORG $+11
stbi__bmp_info$rtcVarDesc DD 048H
DD 024H
DQ FLAT:stbi__bmp_info$rtcName$0
ORG $+48
stbi__bmp_info$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__bmp_info$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 01328H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bmp_load DD 035054c19H
DD 011d3322H
DD 0701601a9H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0d30H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__bmp_load$rtcName$0 DB 070H
DB 061H
DB 06cH
DB 00H
stbi__bmp_load$rtcName$1 DB 069H
DB 06eH
DB 066H
DB 06fH
DB 00H
ORG $+7
stbi__bmp_load$rtcVarDesc DD 05f8H
DD 024H
DQ FLAT:stbi__bmp_load$rtcName$1
DD 0100H
DD 0400H
DQ FLAT:stbi__bmp_load$rtcName$0
ORG $+96
stbi__bmp_load$rtcFrameData DD 02H
DD 00H
DQ FLAT:stbi__bmp_load$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__bmp_test DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 036H
DB 09dH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__png_is16 DD 025053d19H
DD 010e2313H
DD 070070025H
DD 05006H
DD imagerel __GSHandlerCheck
DD 0118H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__png_is16$rtcName$0 DB 070H
DB 00H
ORG $+14
stbi__png_is16$rtcVarDesc DD 028H
DD 028H
DQ FLAT:stbi__png_is16$rtcName$0
ORG $+48
stbi__png_is16$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__png_is16$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 098H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__png_info DD 025054c19H
DD 011d2322H
DD 070160025H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0118H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__png_info$rtcName$0 DB 070H
DB 00H
ORG $+14
stbi__png_info$rtcVarDesc DD 028H
DD 028H
DQ FLAT:stbi__png_info$rtcName$0
ORG $+48
stbi__png_info$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__png_info$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0aeH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__png_load DD 035054c19H
DD 011d3322H
DD 070160027H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0128H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__png_load$rtcName$0 DB 070H
DB 00H
ORG $+14
stbi__png_load$rtcVarDesc DD 038H
DD 028H
DQ FLAT:stbi__png_load$rtcName$0
ORG $+48
stbi__png_load$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__png_load$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__png_test DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_info DD 025052201H
DD 011d2322H
DD 070160025H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_load DD 035052201H
DD 011d3322H
DD 070160027H
DD 05015H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__jpeg_test DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__rewind DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__start_file DD 025051801H
DD 01132318H
DD 0700c001dH
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__stdio_eof DD 025051301H
DD 010e2313H
DD 07007001fH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__stdio_skip DD 025051701H
DD 01122317H
DD 0700b0021H
DD 0500aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__stdio_read DD 025051d01H
DD 0118231dH
DD 07011001dH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__start_callbacks DD 025061e01H
DD 0119231eH
DD 07012001eH
DD 050106011H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__start_mem DD 025051d01H
DD 0118231dH
DD 07011001fH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__refill_buffer DD 025051301H
DD 010e2313H
DD 070070021H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__sse2_available DD 025050f01H
DD 010a230fH
DD 070030021H
DD 05002H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 02bH
DB 07cH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi__cpuid3 DD 025063219H
DD 010b2310H
DD 070040022H
DD 050023003H
DD imagerel __GSHandlerCheck
DD 0108H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi__cpuid3$rtcName$0 DB 069H
DB 06eH
DB 066H
DB 06fH
DB 00H
ORG $+11
stbi__cpuid3$rtcVarDesc DD 028H
DD 010H
DQ FLAT:stbi__cpuid3$rtcName$0
ORG $+48
stbi__cpuid3$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi__cpuid3$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 04aH
DB 0d4H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_zlib_decode_noheader_buffer DD 035055119H
DD 01223327H
DD 0701502cdH
DD 05014H
DD imagerel __GSHandlerCheck
DD 01658H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_zlib_decode_noheader_buffer$rtcName$0 DB 061H
DB 00H
ORG $+14
stbi_zlib_decode_noheader_buffer$rtcVarDesc DD 040H
DD 01008H
DQ FLAT:stbi_zlib_decode_noheader_buffer$rtcName$0
ORG $+48
stbi_zlib_decode_noheader_buffer$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_zlib_decode_noheader_buffer$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 045H
DW 0112H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_zlib_decode_noheader_malloc DD 035054c19H
DD 011d3322H
DD 0701002d1H
DD 0500fH
DD imagerel __GSHandlerCheck
DD 01678H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_zlib_decode_noheader_malloc$rtcName$0 DB 061H
DB 00H
ORG $+14
stbi_zlib_decode_noheader_malloc$rtcVarDesc DD 040H
DD 01008H
DQ FLAT:stbi_zlib_decode_noheader_malloc$rtcName$0
ORG $+48
stbi_zlib_decode_noheader_malloc$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_zlib_decode_noheader_malloc$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 04aH
DB 0d4H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_zlib_decode_buffer DD 035055119H
DD 01223327H
DD 0701502cdH
DD 05014H
DD imagerel __GSHandlerCheck
DD 01658H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_zlib_decode_buffer$rtcName$0 DB 061H
DB 00H
ORG $+14
stbi_zlib_decode_buffer$rtcVarDesc DD 040H
DD 01008H
DQ FLAT:stbi_zlib_decode_buffer$rtcName$0
ORG $+48
stbi_zlib_decode_buffer$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_zlib_decode_buffer$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_zlib_decode_malloc DD 025051c01H
DD 0117231cH
DD 07010001dH
DD 0500fH
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 04aH
DW 011fH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_zlib_decode_malloc_guesssize_headerflag DD 035055119H
DD 01223327H
DD 0701502d1H
DD 05014H
DD imagerel __GSHandlerCheck
DD 01678H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_zlib_decode_malloc_guesssize_headerflag$rtcName$0 DB 061H
DB 00H
ORG $+14
stbi_zlib_decode_malloc_guesssize_headerflag$rtcVarDesc DD 040H
DD 01008H
DQ FLAT:stbi_zlib_decode_malloc_guesssize_headerflag$rtcName$0
ORG $+48
stbi_zlib_decode_malloc_guesssize_headerflag$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_zlib_decode_malloc_guesssize_headerflag$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 04aH
DW 011dH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_zlib_decode_malloc_guesssize DD 035055119H
DD 01223327H
DD 0701502d1H
DD 05014H
DD imagerel __GSHandlerCheck
DD 01678H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_zlib_decode_malloc_guesssize$rtcName$0 DB 061H
DB 00H
ORG $+14
stbi_zlib_decode_malloc_guesssize$rtcVarDesc DD 040H
DD 01008H
DQ FLAT:stbi_zlib_decode_malloc_guesssize$rtcName$0
ORG $+48
stbi_zlib_decode_malloc_guesssize$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_zlib_decode_malloc_guesssize$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_set_flip_vertically_on_load_thread DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_convert_iphone_png_to_rgb_thread DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_set_unpremultiply_on_load_thread DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_set_flip_vertically_on_load DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_convert_iphone_png_to_rgb DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_set_unpremultiply_on_load DD 025051201H
DD 010d2312H
DD 07006001dH
DD 05005H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 036H
DB 0a8H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_16_bit_from_file DD 025053d19H
DD 010e2313H
DD 070070045H
DD 05006H
DD imagerel __GSHandlerCheck
DD 0218H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_is_16_bit_from_file$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_is_16_bit_from_file$rtcVarDesc DD 050H
DD 0e0H
DQ FLAT:stbi_is_16_bit_from_file$rtcName$0
ORG $+48
stbi_is_16_bit_from_file$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_is_16_bit_from_file$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_16_bit DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0ccH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_info_from_file DD 025054c19H
DD 011d2322H
DD 070160045H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0218H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_info_from_file$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_info_from_file$rtcVarDesc DD 050H
DD 0e0H
DQ FLAT:stbi_info_from_file$rtcName$0
ORG $+48
stbi_info_from_file$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_info_from_file$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_info DD 025052201H
DD 011d2322H
DD 070160025H
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 03bH
DB 086H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_16_bit_from_callbacks DD 025054219H
DD 01132318H
DD 0700c003dH
DD 0500bH
DD imagerel __GSHandlerCheck
DD 01d8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_is_16_bit_from_callbacks$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_is_16_bit_from_callbacks$rtcVarDesc DD 030H
DD 0e0H
DQ FLAT:stbi_is_16_bit_from_callbacks$rtcName$0
ORG $+48
stbi_is_16_bit_from_callbacks$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_is_16_bit_from_callbacks$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 03aH
DB 085H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_16_bit_from_memory DD 025054119H
DD 01122317H
DD 0700b003dH
DD 0500aH
DD imagerel __GSHandlerCheck
DD 01d8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_is_16_bit_from_memory$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_is_16_bit_from_memory$rtcVarDesc DD 030H
DD 0e0H
DQ FLAT:stbi_is_16_bit_from_memory$rtcName$0
ORG $+48
stbi_is_16_bit_from_memory$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_is_16_bit_from_memory$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0a5H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_info_from_callbacks DD 025054c19H
DD 011d2322H
DD 07016003dH
DD 05015H
DD imagerel __GSHandlerCheck
DD 01d8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_info_from_callbacks$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_info_from_callbacks$rtcVarDesc DD 030H
DD 0e0H
DQ FLAT:stbi_info_from_callbacks$rtcName$0
ORG $+48
stbi_info_from_callbacks$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_info_from_callbacks$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 044H
DB 0a4H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_info_from_memory DD 025054b19H
DD 011c2321H
DD 07015003dH
DD 05014H
DD imagerel __GSHandlerCheck
DD 01d8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_info_from_memory$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_info_from_memory$rtcVarDesc DD 030H
DD 0e0H
DQ FLAT:stbi_info_from_memory$rtcName$0
ORG $+48
stbi_info_from_memory$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_info_from_memory$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_image_free DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_failure_reason DD 025050f01H
DD 010a230fH
DD 07003001dH
DD 05002H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 036H
DB 0a2H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_hdr_from_file DD 025053d19H
DD 010e2313H
DD 070070045H
DD 05006H
DD imagerel __GSHandlerCheck
DD 0218H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_is_hdr_from_file$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_is_hdr_from_file$rtcVarDesc DD 070H
DD 0e0H
DQ FLAT:stbi_is_hdr_from_file$rtcName$0
ORG $+48
stbi_is_hdr_from_file$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_is_hdr_from_file$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_hdr DD 025051301H
DD 010e2313H
DD 070070025H
DD 05006H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 03aH
DB 085H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_hdr_from_memory DD 025054119H
DD 01122317H
DD 0700b003dH
DD 0500aH
DD imagerel __GSHandlerCheck
DD 01d8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_is_hdr_from_memory$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_is_hdr_from_memory$rtcVarDesc DD 030H
DD 0e0H
DQ FLAT:stbi_is_hdr_from_memory$rtcName$0
ORG $+48
stbi_is_hdr_from_memory$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_is_hdr_from_memory$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 03bH
DB 086H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_is_hdr_from_callbacks DD 025054219H
DD 01132318H
DD 0700c003dH
DD 0500bH
DD imagerel __GSHandlerCheck
DD 01d8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_is_hdr_from_callbacks$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_is_hdr_from_callbacks$rtcVarDesc DD 030H
DD 0e0H
DQ FLAT:stbi_is_hdr_from_callbacks$rtcName$0
ORG $+48
stbi_is_hdr_from_callbacks$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_is_hdr_from_callbacks$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_ldr_to_hdr_scale DD 025051401H
DD 010f2314H
DD 07008001dH
DD 05007H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_ldr_to_hdr_gamma DD 025051401H
DD 010f2314H
DD 07008001dH
DD 05007H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_hdr_to_ldr_scale DD 025051401H
DD 010f2314H
DD 07008001dH
DD 05007H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_hdr_to_ldr_gamma DD 025051401H
DD 010f2314H
DD 07008001dH
DD 05007H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0a8H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_loadf_from_file DD 035054c19H
DD 011d3322H
DD 07016003fH
DD 05015H
DD imagerel __GSHandlerCheck
DD 01e8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_loadf_from_file$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_loadf_from_file$rtcVarDesc DD 040H
DD 0e0H
DQ FLAT:stbi_loadf_from_file$rtcName$0
ORG $+48
stbi_loadf_from_file$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_loadf_from_file$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_loadf DD 035052201H
DD 011d3322H
DD 070160027H
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0afH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_loadf_from_callbacks DD 035054c19H
DD 011d3322H
DD 07016003fH
DD 05015H
DD imagerel __GSHandlerCheck
DD 01e8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_loadf_from_callbacks$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_loadf_from_callbacks$rtcVarDesc DD 040H
DD 0e0H
DQ FLAT:stbi_loadf_from_callbacks$rtcName$0
ORG $+48
stbi_loadf_from_callbacks$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_loadf_from_callbacks$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 044H
DB 0aeH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_loadf_from_memory DD 035054b19H
DD 011c3321H
DD 07015003fH
DD 05014H
DD imagerel __GSHandlerCheck
DD 01e8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_loadf_from_memory$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_loadf_from_memory$rtcVarDesc DD 040H
DD 0e0H
DQ FLAT:stbi_loadf_from_memory$rtcName$0
ORG $+48
stbi_loadf_from_memory$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_loadf_from_memory$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0e3H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_from_file_16 DD 035054c19H
DD 011d3322H
DD 070160043H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0208H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_load_from_file_16$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_load_from_file_16$rtcVarDesc DD 060H
DD 0e0H
DQ FLAT:stbi_load_from_file_16$rtcName$0
ORG $+48
stbi_load_from_file_16$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_load_from_file_16$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_16 DD 035052201H
DD 011d3322H
DD 070160027H
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0afH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_16_from_callbacks DD 035054c19H
DD 011d3322H
DD 07016003fH
DD 05015H
DD imagerel __GSHandlerCheck
DD 01e8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_load_16_from_callbacks$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_load_16_from_callbacks$rtcVarDesc DD 040H
DD 0e0H
DQ FLAT:stbi_load_16_from_callbacks$rtcName$0
ORG $+48
stbi_load_16_from_callbacks$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_load_16_from_callbacks$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 044H
DB 0aeH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_16_from_memory DD 035054b19H
DD 011c3321H
DD 07015003fH
DD 05014H
DD imagerel __GSHandlerCheck
DD 01e8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_load_16_from_memory$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_load_16_from_memory$rtcVarDesc DD 040H
DD 0e0H
DQ FLAT:stbi_load_16_from_memory$rtcName$0
ORG $+48
stbi_load_16_from_memory$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_load_16_from_memory$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 044H
DW 015cH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_gif_from_memory DD 045054b19H
DD 011c4321H
DD 070150045H
DD 05014H
DD imagerel __GSHandlerCheck
DD 0218H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_load_gif_from_memory$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_load_gif_from_memory$rtcVarDesc DD 070H
DD 0e0H
DQ FLAT:stbi_load_gif_from_memory$rtcName$0
ORG $+48
stbi_load_gif_from_memory$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_load_gif_from_memory$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0e3H
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_from_file DD 035054c19H
DD 011d3322H
DD 070160043H
DD 05015H
DD imagerel __GSHandlerCheck
DD 0208H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_load_from_file$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_load_from_file$rtcVarDesc DD 060H
DD 0e0H
DQ FLAT:stbi_load_from_file$rtcName$0
ORG $+48
stbi_load_from_file$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_load_from_file$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load DD 035052201H
DD 011d3322H
DD 070160027H
DD 05015H
xdata ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 045H
DB 0afH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_from_callbacks DD 035054c19H
DD 011d3322H
DD 07016003fH
DD 05015H
DD imagerel __GSHandlerCheck
DD 01e8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_load_from_callbacks$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_load_from_callbacks$rtcVarDesc DD 040H
DD 0e0H
DQ FLAT:stbi_load_from_callbacks$rtcName$0
ORG $+48
stbi_load_from_callbacks$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_load_from_callbacks$rtcVarDesc
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 044H
DB 0aeH
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$stbi_load_from_memory DD 035054b19H
DD 011c3321H
DD 07015003fH
DD 05014H
DD imagerel __GSHandlerCheck
DD 01e8H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
stbi_load_from_memory$rtcName$0 DB 073H
DB 00H
ORG $+14
stbi_load_from_memory$rtcVarDesc DD 040H
DD 0e0H
DQ FLAT:stbi_load_from_memory$rtcName$0
ORG $+48
stbi_load_from_memory$rtcFrameData DD 01H
DD 00H
DQ FLAT:stbi_load_from_memory$rtcVarDesc
CONST ENDS
; Function compile flags: /Odt
; COMDAT __JustMyCode_Default
_TEXT SEGMENT
__JustMyCode_Default PROC ; COMDAT
00000 c2 00 00 ret 0
__JustMyCode_Default ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
; COMDAT readLog
_TEXT SEGMENT
$T1 = 200
readLog PROC ; COMDAT
; 74 : {
$LN5:
00000 40 55 push rbp
00002 57 push rdi
00003 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0000f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001b 90 npad 1
; 75 : infolog[511] = '\0';
0001c b8 01 00 00 00 mov eax, 1
00021 48 69 c0 ff 01
00 00 imul rax, rax, 511 ; 000001ffH
00028 48 89 85 c8 00
00 00 mov QWORD PTR $T1[rbp], rax
0002f 48 81 bd c8 00
00 00 00 02 00
00 cmp QWORD PTR $T1[rbp], 512 ; 00000200H
0003a 73 02 jae SHORT $LN3@readLog
0003c eb 06 jmp SHORT $LN4@readLog
$LN3@readLog:
0003e e8 00 00 00 00 call __report_rangecheckfailure
00043 90 npad 1
$LN4@readLog:
00044 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:infolog
0004b 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR $T1[rbp]
00052 c6 04 08 00 mov BYTE PTR [rax+rcx], 0
; 76 : return infolog;
00056 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:infolog
$LN2@readLog:
; 77 : }
0005d 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00064 5f pop rdi
00065 5d pop rbp
00066 c3 ret 0
readLog ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
; COMDAT unloadImageData
_TEXT SEGMENT
out$ = 224
unloadImageData PROC ; COMDAT
; 69 : {
$LN3:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 70 : free(out->pixelPtr);
00020 48 8b 85 e0 00
00 00 mov rax, QWORD PTR out$[rbp]
00027 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
0002b ff 15 00 00 00
00 call QWORD PTR __imp_free
00031 90 npad 1
; 71 : }
00032 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00039 5f pop rdi
0003a 5d pop rbp
0003b c3 ret 0
unloadImageData ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
; COMDAT loadGlfuncDefault
_TEXT SEGMENT
ret$ = 8
i$1 = 40
procName$ = 288
loadGlfuncDefault PROC ; COMDAT
; 34 : {
$LN7:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 35 : void *ret = glfwGetProcAddress(procName);
00020 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR procName$[rbp]
00027 e8 00 00 00 00 call glfwGetProcAddress
0002c 48 89 45 08 mov QWORD PTR ret$[rbp], rax
; 36 : // printf("%llu\n", (uint64_t)ret);
; 37 : if (ret == NULL) {
00030 48 83 7d 08 00 cmp QWORD PTR ret$[rbp], 0
00035 75 5b jne SHORT $LN5@loadGlfunc
; 38 : strcpy_s(infolog, 30, "Failed to load OpenGL api:");
00037 4c 8d 05 00 00
00 00 lea r8, OFFSET FLAT:??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@
0003e ba 1e 00 00 00 mov edx, 30
00043 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:infolog
0004a ff 15 00 00 00
00 call QWORD PTR __imp_strcpy_s
00050 90 npad 1
; 39 : for (size_t i = 0; i < sizeof(procName); i++) {
00051 48 c7 45 28 00
00 00 00 mov QWORD PTR i$1[rbp], 0
00059 eb 0b jmp SHORT $LN4@loadGlfunc
$LN2@loadGlfunc:
0005b 48 8b 45 28 mov rax, QWORD PTR i$1[rbp]
0005f 48 ff c0 inc rax
00062 48 89 45 28 mov QWORD PTR i$1[rbp], rax
$LN4@loadGlfunc:
00066 48 83 7d 28 08 cmp QWORD PTR i$1[rbp], 8
0006b 73 25 jae SHORT $LN3@loadGlfunc
; 40 : infolog[30 + i] = procName[i];
0006d 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:infolog
00074 48 8b 4d 28 mov rcx, QWORD PTR i$1[rbp]
00078 48 8b 95 20 01
00 00 mov rdx, QWORD PTR procName$[rbp]
0007f 48 03 d1 add rdx, rcx
00082 48 8b ca mov rcx, rdx
00085 48 8b 55 28 mov rdx, QWORD PTR i$1[rbp]
00089 0f b6 09 movzx ecx, BYTE PTR [rcx]
0008c 88 4c 10 1e mov BYTE PTR [rax+rdx+30], cl
; 41 : }
00090 eb c9 jmp SHORT $LN2@loadGlfunc
$LN3@loadGlfunc:
$LN5@loadGlfunc:
; 42 : //printf("%s\n", infolog);
; 43 : }
; 44 : return (GLFWglproc)ret;
00092 48 8b 45 08 mov rax, QWORD PTR ret$[rbp]
; 45 : }
00096 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
0009d 5f pop rdi
0009e 5d pop rbp
0009f c3 ret 0
loadGlfuncDefault ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
; COMDAT loadImageData
_TEXT SEGMENT
location$ = 224
out$ = 232
loader$ = 240
loadImageData PROC ; COMDAT
; 62 : {
$LN4:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 63 : if (loader == NULL) {
0002a 48 83 bd f0 00
00 00 00 cmp QWORD PTR loader$[rbp], 0
00032 75 0e jne SHORT $LN2@loadImageD
; 64 : loader = stbi_load;
00034 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:stbi_load
0003b 48 89 85 f0 00
00 00 mov QWORD PTR loader$[rbp], rax
$LN2@loadImageD:
; 65 : }
; 66 : out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0);
00042 48 8b 85 e8 00
00 00 mov rax, QWORD PTR out$[rbp]
00049 48 83 c0 08 add rax, 8
0004d 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR out$[rbp]
00054 48 83 c1 04 add rcx, 4
00058 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR out$[rbp]
0005f c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
00067 4c 8b c8 mov r9, rax
0006a 4c 8b c1 mov r8, rcx
0006d 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR location$[rbp]
00074 ff 95 f0 00 00
00 call QWORD PTR loader$[rbp]
0007a 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR out$[rbp]
00081 48 89 41 10 mov QWORD PTR [rcx+16], rax
; 67 : }
00085 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0008c 5f pop rdi
0008d 5d pop rbp
0008e c3 ret 0
loadImageData ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
; COMDAT linkShaderProgram
_TEXT SEGMENT
success$ = 4
__$ArrayPad$ = 216
context$ = 256
shaderProgram$ = 264
linkShaderProgram PROC ; COMDAT
; 48 : {
$LN5:
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001c b9 0a 00 00 00 mov ecx, 10
00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00026 f3 ab rep stosd
00028 48 8b 8c 24 28
01 00 00 mov rcx, QWORD PTR [rsp+296]
00030 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00037 48 33 c5 xor rax, rbp
0003a 48 89 85 d8 00
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00041 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004d 90 npad 1
; 49 : context->LinkProgram(shaderProgram);
0004e 8b 8d 08 01 00
00 mov ecx, DWORD PTR shaderProgram$[rbp]
00054 48 8b 85 00 01
00 00 mov rax, QWORD PTR context$[rbp]
0005b ff 90 70 0a 00
00 call QWORD PTR [rax+2672]
00061 90 npad 1
; 50 :
; 51 : int success;
; 52 : context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
00062 4c 8d 45 04 lea r8, QWORD PTR success$[rbp]
00066 ba 82 8b 00 00 mov edx, 35714 ; 00008b82H
0006b 8b 8d 08 01 00
00 mov ecx, DWORD PTR shaderProgram$[rbp]
00071 48 8b 85 00 01
00 00 mov rax, QWORD PTR context$[rbp]
00078 ff 90 90 07 00
00 call QWORD PTR [rax+1936]
0007e 90 npad 1
; 53 : if (!success) {
0007f 83 7d 04 00 cmp DWORD PTR success$[rbp], 0
00083 75 29 jne SHORT $LN2@linkShader
; 54 : context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog);
00085 4c 8d 0d 00 00
00 00 lea r9, OFFSET FLAT:infolog
0008c 45 33 c0 xor r8d, r8d
0008f ba 00 02 00 00 mov edx, 512 ; 00000200H
00094 8b 8d 08 01 00
00 mov ecx, DWORD PTR shaderProgram$[rbp]
0009a 48 8b 85 00 01
00 00 mov rax, QWORD PTR context$[rbp]
000a1 ff 90 40 07 00
00 call QWORD PTR [rax+1856]
000a7 90 npad 1
; 55 : return 0;
000a8 33 c0 xor eax, eax
000aa eb 08 jmp SHORT $LN1@linkShader
; 56 : } else {
000ac eb 06 jmp SHORT $LN3@linkShader
$LN2@linkShader:
; 57 : return shaderProgram;
000ae 8b 85 08 01 00
00 mov eax, DWORD PTR shaderProgram$[rbp]
$LN3@linkShader:
$LN1@linkShader:
; 58 : }
; 59 : }
000b4 48 8b f8 mov rdi, rax
000b7 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
000bb 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:linkShaderProgram$rtcFrameData
000c2 e8 00 00 00 00 call _RTC_CheckStackVars
000c7 48 8b c7 mov rax, rdi
000ca 48 8b 8d d8 00
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000d1 48 33 cd xor rcx, rbp
000d4 e8 00 00 00 00 call __security_check_cookie
000d9 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000e0 5f pop rdi
000e1 5d pop rbp
000e2 c3 ret 0
linkShaderProgram ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
; COMDAT initGL
_TEXT SEGMENT
majorVersion$ = 224
minorVersion$ = 232
initGL PROC ; COMDAT
; 26 : {
$LN3:
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00008 55 push rbp
00009 57 push rdi
0000a 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00016 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00022 90 npad 1
; 27 : glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion);
00023 8b 95 e0 00 00
00 mov edx, DWORD PTR majorVersion$[rbp]
00029 b9 02 20 02 00 mov ecx, 139266 ; 00022002H
0002e e8 00 00 00 00 call glfwWindowHint
00033 90 npad 1
; 28 : glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion);
00034 8b 95 e8 00 00
00 mov edx, DWORD PTR minorVersion$[rbp]
0003a b9 03 20 02 00 mov ecx, 139267 ; 00022003H
0003f e8 00 00 00 00 call glfwWindowHint
00044 90 npad 1
; 29 : glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
00045 ba 01 20 03 00 mov edx, 204801 ; 00032001H
0004a b9 08 20 02 00 mov ecx, 139272 ; 00022008H
0004f e8 00 00 00 00 call glfwWindowHint
00054 90 npad 1
; 30 : glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
00055 ba 01 00 00 00 mov edx, 1
0005a b9 03 00 02 00 mov ecx, 131075 ; 00020003H
0005f e8 00 00 00 00 call glfwWindowHint
00064 90 npad 1
; 31 : }
00065 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0006c 5f pop rdi
0006d 5d pop rbp
0006e c3 ret 0
initGL ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
; COMDAT glCheckShaderStat
_TEXT SEGMENT
stat$ = 4
__$ArrayPad$ = 216
context$ = 256
shaderHandle$ = 264
key$ = 272
logRef$ = 280
glCheckShaderStat PROC ; COMDAT
; 15 : {
$LN4:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 0a 00 00 00 mov ecx, 10
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 28
01 00 00 mov rcx, QWORD PTR [rsp+296]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 d8 00
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 16 : int stat = 0;
00059 c7 45 04 00 00
00 00 mov DWORD PTR stat$[rbp], 0
; 17 : context->GetShaderiv(shaderHandle, key, &stat);
00060 4c 8d 45 04 lea r8, QWORD PTR stat$[rbp]
00064 8b 95 10 01 00
00 mov edx, DWORD PTR key$[rbp]
0006a 8b 8d 08 01 00
00 mov ecx, DWORD PTR shaderHandle$[rbp]
00070 48 8b 85 00 01
00 00 mov rax, QWORD PTR context$[rbp]
00077 ff 90 28 08 00
00 call QWORD PTR [rax+2088]
0007d 90 npad 1
; 18 : if (!stat) {
0007e 83 7d 04 00 cmp DWORD PTR stat$[rbp], 0
00082 75 23 jne SHORT $LN2@glCheckSha
; 19 : context->GetShaderInfoLog(shaderHandle, 512, NULL, infolog);
00084 4c 8d 0d 00 00
00 00 lea r9, OFFSET FLAT:infolog
0008b 45 33 c0 xor r8d, r8d
0008e ba 00 02 00 00 mov edx, 512 ; 00000200H
00093 8b 8d 08 01 00
00 mov ecx, DWORD PTR shaderHandle$[rbp]
00099 48 8b 85 00 01
00 00 mov rax, QWORD PTR context$[rbp]
000a0 ff 90 10 08 00
00 call QWORD PTR [rax+2064]
000a6 90 npad 1
$LN2@glCheckSha:
; 20 : }
; 21 : *logRef = infolog;
000a7 48 8b 85 18 01
00 00 mov rax, QWORD PTR logRef$[rbp]
000ae 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:infolog
000b5 48 89 08 mov QWORD PTR [rax], rcx
; 22 : return stat;
000b8 8b 45 04 mov eax, DWORD PTR stat$[rbp]
; 23 : }
000bb 8b f8 mov edi, eax
000bd 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
000c1 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:glCheckShaderStat$rtcFrameData
000c8 e8 00 00 00 00 call _RTC_CheckStackVars
000cd 8b c7 mov eax, edi
000cf 48 8b 8d d8 00
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000d6 48 33 cd xor rcx, rbp
000d9 e8 00 00 00 00 call __security_check_cookie
000de 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000e5 5f pop rdi
000e6 5d pop rbp
000e7 c3 ret 0
glCheckShaderStat ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__is_16_main
_TEXT SEGMENT
s$ = 224
stbi__is_16_main PROC ; COMDAT
; 8610 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 8611 : #ifndef STBI_NO_PNG
; 8612 : if (stbi__png_is16(s))
00020 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__png_is16
0002c 85 c0 test eax, eax
0002e 74 07 je SHORT $LN2@stbi__is_1
; 8613 : return 1;
00030 b8 01 00 00 00 mov eax, 1
00035 eb 30 jmp SHORT $LN1@stbi__is_1
$LN2@stbi__is_1:
; 8614 : #endif
; 8615 :
; 8616 : #ifndef STBI_NO_PSD
; 8617 : if (stbi__psd_is16(s))
00037 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0003e e8 00 00 00 00 call stbi__psd_is16
00043 85 c0 test eax, eax
00045 74 07 je SHORT $LN3@stbi__is_1
; 8618 : return 1;
00047 b8 01 00 00 00 mov eax, 1
0004c eb 19 jmp SHORT $LN1@stbi__is_1
$LN3@stbi__is_1:
; 8619 : #endif
; 8620 :
; 8621 : #ifndef STBI_NO_PNM
; 8622 : if (stbi__pnm_is16(s))
0004e 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00055 e8 00 00 00 00 call stbi__pnm_is16
0005a 85 c0 test eax, eax
0005c 74 07 je SHORT $LN4@stbi__is_1
; 8623 : return 1;
0005e b8 01 00 00 00 mov eax, 1
00063 eb 02 jmp SHORT $LN1@stbi__is_1
$LN4@stbi__is_1:
; 8624 : #endif
; 8625 : return 0;
00065 33 c0 xor eax, eax
$LN1@stbi__is_1:
; 8626 : }
00067 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0006e 5f pop rdi
0006f 5d pop rbp
00070 c3 ret 0
stbi__is_16_main ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__info_main
_TEXT SEGMENT
s$ = 224
x$ = 232
y$ = 240
comp$ = 248
stbi__info_main PROC ; COMDAT
; 8560 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 8561 : #ifndef STBI_NO_JPEG
; 8562 : if (stbi__jpeg_info(s, x, y, comp))
0002f 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
00036 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
0003d 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
00044 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0004b e8 00 00 00 00 call stbi__jpeg_info
00050 85 c0 test eax, eax
00052 74 0a je SHORT $LN2@stbi__info
; 8563 : return 1;
00054 b8 01 00 00 00 mov eax, 1
00059 e9 7b 01 00 00 jmp $LN1@stbi__info
$LN2@stbi__info:
; 8564 : #endif
; 8565 :
; 8566 : #ifndef STBI_NO_PNG
; 8567 : if (stbi__png_info(s, x, y, comp))
0005e 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
00065 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
0006c 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
00073 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0007a e8 00 00 00 00 call stbi__png_info
0007f 85 c0 test eax, eax
00081 74 0a je SHORT $LN3@stbi__info
; 8568 : return 1;
00083 b8 01 00 00 00 mov eax, 1
00088 e9 4c 01 00 00 jmp $LN1@stbi__info
$LN3@stbi__info:
; 8569 : #endif
; 8570 :
; 8571 : #ifndef STBI_NO_GIF
; 8572 : if (stbi__gif_info(s, x, y, comp))
0008d 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
00094 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
0009b 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
000a2 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
000a9 e8 00 00 00 00 call stbi__gif_info
000ae 85 c0 test eax, eax
000b0 74 0a je SHORT $LN4@stbi__info
; 8573 : return 1;
000b2 b8 01 00 00 00 mov eax, 1
000b7 e9 1d 01 00 00 jmp $LN1@stbi__info
$LN4@stbi__info:
; 8574 : #endif
; 8575 :
; 8576 : #ifndef STBI_NO_BMP
; 8577 : if (stbi__bmp_info(s, x, y, comp))
000bc 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
000c3 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
000ca 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
000d1 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
000d8 e8 00 00 00 00 call stbi__bmp_info
000dd 85 c0 test eax, eax
000df 74 0a je SHORT $LN5@stbi__info
; 8578 : return 1;
000e1 b8 01 00 00 00 mov eax, 1
000e6 e9 ee 00 00 00 jmp $LN1@stbi__info
$LN5@stbi__info:
; 8579 : #endif
; 8580 :
; 8581 : #ifndef STBI_NO_PSD
; 8582 : if (stbi__psd_info(s, x, y, comp))
000eb 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
000f2 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
000f9 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
00100 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00107 e8 00 00 00 00 call stbi__psd_info
0010c 85 c0 test eax, eax
0010e 74 0a je SHORT $LN6@stbi__info
; 8583 : return 1;
00110 b8 01 00 00 00 mov eax, 1
00115 e9 bf 00 00 00 jmp $LN1@stbi__info
$LN6@stbi__info:
; 8584 : #endif
; 8585 :
; 8586 : #ifndef STBI_NO_PIC
; 8587 : if (stbi__pic_info(s, x, y, comp))
0011a 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
00121 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
00128 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
0012f 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00136 e8 00 00 00 00 call stbi__pic_info
0013b 85 c0 test eax, eax
0013d 74 0a je SHORT $LN7@stbi__info
; 8588 : return 1;
0013f b8 01 00 00 00 mov eax, 1
00144 e9 90 00 00 00 jmp $LN1@stbi__info
$LN7@stbi__info:
; 8589 : #endif
; 8590 :
; 8591 : #ifndef STBI_NO_PNM
; 8592 : if (stbi__pnm_info(s, x, y, comp))
00149 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
00150 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
00157 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
0015e 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00165 e8 00 00 00 00 call stbi__pnm_info
0016a 85 c0 test eax, eax
0016c 74 07 je SHORT $LN8@stbi__info
; 8593 : return 1;
0016e b8 01 00 00 00 mov eax, 1
00173 eb 64 jmp SHORT $LN1@stbi__info
$LN8@stbi__info:
; 8594 : #endif
; 8595 :
; 8596 : #ifndef STBI_NO_HDR
; 8597 : if (stbi__hdr_info(s, x, y, comp))
00175 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
0017c 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
00183 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
0018a 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00191 e8 00 00 00 00 call stbi__hdr_info
00196 85 c0 test eax, eax
00198 74 07 je SHORT $LN9@stbi__info
; 8598 : return 1;
0019a b8 01 00 00 00 mov eax, 1
0019f eb 38 jmp SHORT $LN1@stbi__info
$LN9@stbi__info:
; 8599 : #endif
; 8600 :
; 8601 : // test tga last because it's a crappy test!
; 8602 : #ifndef STBI_NO_TGA
; 8603 : if (stbi__tga_info(s, x, y, comp))
001a1 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
001a8 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
001af 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
001b6 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
001bd e8 00 00 00 00 call stbi__tga_info
001c2 85 c0 test eax, eax
001c4 74 07 je SHORT $LN10@stbi__info
; 8604 : return 1;
001c6 b8 01 00 00 00 mov eax, 1
001cb eb 0c jmp SHORT $LN1@stbi__info
$LN10@stbi__info:
; 8605 : #endif
; 8606 : return stbi__err("unknown image type", "Image not of any known type, or corrupt");
001cd 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BD@CBEDEJPH@unknown?5image?5type@
001d4 e8 00 00 00 00 call stbi__err
$LN1@stbi__info:
; 8607 : }
001d9 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
001e0 5f pop rdi
001e1 5d pop rbp
001e2 c3 ret 0
stbi__info_main ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_getinteger
_TEXT SEGMENT
value$ = 4
s$ = 256
c$ = 264
stbi__pnm_getinteger PROC ; COMDAT
; 8489 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 8490 : int value = 0;
00025 c7 45 04 00 00
00 00 mov DWORD PTR value$[rbp], 0
$LN2@stbi__pnm_:
; 8491 :
; 8492 : while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) {
0002c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00033 e8 00 00 00 00 call stbi__at_eof
00038 85 c0 test eax, eax
0003a 75 6e jne SHORT $LN3@stbi__pnm_
0003c 48 8b 85 08 01
00 00 mov rax, QWORD PTR c$[rbp]
00043 0f b6 08 movzx ecx, BYTE PTR [rax]
00046 e8 00 00 00 00 call stbi__pnm_isdigit
0004b 85 c0 test eax, eax
0004d 74 5b je SHORT $LN3@stbi__pnm_
; 8493 : value = value * 10 + (*c - '0');
0004f 6b 45 04 0a imul eax, DWORD PTR value$[rbp], 10
00053 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR c$[rbp]
0005a 0f be 09 movsx ecx, BYTE PTR [rcx]
0005d 8d 44 08 d0 lea eax, DWORD PTR [rax+rcx-48]
00061 89 45 04 mov DWORD PTR value$[rbp], eax
; 8494 : *c = (char)stbi__get8(s);
00064 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__get8
00070 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR c$[rbp]
00077 88 01 mov BYTE PTR [rcx], al
; 8495 : if ((value > 214748364) || (value == 214748364 && *c > '7'))
00079 81 7d 04 cc cc
cc 0c cmp DWORD PTR value$[rbp], 214748364 ; 0cccccccH
00080 7f 18 jg SHORT $LN5@stbi__pnm_
00082 81 7d 04 cc cc
cc 0c cmp DWORD PTR value$[rbp], 214748364 ; 0cccccccH
00089 75 1d jne SHORT $LN4@stbi__pnm_
0008b 48 8b 85 08 01
00 00 mov rax, QWORD PTR c$[rbp]
00092 0f be 00 movsx eax, BYTE PTR [rax]
00095 83 f8 37 cmp eax, 55 ; 00000037H
00098 7e 0e jle SHORT $LN4@stbi__pnm_
$LN5@stbi__pnm_:
; 8496 : return stbi__err(
0009a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BH@OBINMOBC@integer?5parse?5overflow@
000a1 e8 00 00 00 00 call stbi__err
000a6 eb 05 jmp SHORT $LN1@stbi__pnm_
$LN4@stbi__pnm_:
; 8497 : "integer parse overflow",
; 8498 : "Parsing an integer in the PPM header overflowed a 32-bit int");
; 8499 : }
000a8 eb 82 jmp SHORT $LN2@stbi__pnm_
$LN3@stbi__pnm_:
; 8500 :
; 8501 : return value;
000aa 8b 45 04 mov eax, DWORD PTR value$[rbp]
$LN1@stbi__pnm_:
; 8502 : }
000ad 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000b4 5f pop rdi
000b5 5d pop rbp
000b6 c3 ret 0
stbi__pnm_getinteger ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_isdigit
_TEXT SEGMENT
tv68 = 192
c$ = 240
stbi__pnm_isdigit PROC ; COMDAT
; 8484 : {
00000 88 4c 24 08 mov BYTE PTR [rsp+8], cl
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 8485 : return c >= '0' && c <= '9';
0001f 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
00026 83 f8 30 cmp eax, 48 ; 00000030H
00029 7c 18 jl SHORT $LN3@stbi__pnm_
0002b 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
00032 83 f8 39 cmp eax, 57 ; 00000039H
00035 7f 0c jg SHORT $LN3@stbi__pnm_
00037 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
00041 eb 0a jmp SHORT $LN4@stbi__pnm_
$LN3@stbi__pnm_:
00043 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
$LN4@stbi__pnm_:
0004d 8b 85 c0 00 00
00 mov eax, DWORD PTR tv68[rbp]
; 8486 : }
00053 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
0005a 5f pop rdi
0005b 5d pop rbp
0005c c3 ret 0
stbi__pnm_isdigit ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_skip_whitespace
_TEXT SEGMENT
s$ = 224
c$ = 232
stbi__pnm_skip_whitespace PROC ; COMDAT
; 8470 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
$LN2@stbi__pnm_:
$LN5@stbi__pnm_:
; 8471 : for (;;) {
; 8472 : while (!stbi__at_eof(s) && stbi__pnm_isspace(*c))
00025 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0002c e8 00 00 00 00 call stbi__at_eof
00031 85 c0 test eax, eax
00033 75 2a jne SHORT $LN6@stbi__pnm_
00035 48 8b 85 e8 00
00 00 mov rax, QWORD PTR c$[rbp]
0003c 0f b6 08 movzx ecx, BYTE PTR [rax]
0003f e8 00 00 00 00 call stbi__pnm_isspace
00044 85 c0 test eax, eax
00046 74 17 je SHORT $LN6@stbi__pnm_
; 8473 : *c = (char)stbi__get8(s);
00048 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0004f e8 00 00 00 00 call stbi__get8
00054 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR c$[rbp]
0005b 88 01 mov BYTE PTR [rcx], al
0005d eb c6 jmp SHORT $LN5@stbi__pnm_
$LN6@stbi__pnm_:
; 8474 :
; 8475 : if (stbi__at_eof(s) || *c != '#')
0005f 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00066 e8 00 00 00 00 call stbi__at_eof
0006b 85 c0 test eax, eax
0006d 75 0f jne SHORT $LN10@stbi__pnm_
0006f 48 8b 85 e8 00
00 00 mov rax, QWORD PTR c$[rbp]
00076 0f be 00 movsx eax, BYTE PTR [rax]
00079 83 f8 23 cmp eax, 35 ; 00000023H
0007c 74 02 je SHORT $LN9@stbi__pnm_
$LN10@stbi__pnm_:
; 8476 : break;
0007e eb 4a jmp SHORT $LN3@stbi__pnm_
$LN9@stbi__pnm_:
$LN7@stbi__pnm_:
; 8477 :
; 8478 : while (!stbi__at_eof(s) && *c != '\n' && *c != '\r')
00080 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00087 e8 00 00 00 00 call stbi__at_eof
0008c 85 c0 test eax, eax
0008e 75 35 jne SHORT $LN8@stbi__pnm_
00090 48 8b 85 e8 00
00 00 mov rax, QWORD PTR c$[rbp]
00097 0f be 00 movsx eax, BYTE PTR [rax]
0009a 83 f8 0a cmp eax, 10
0009d 74 26 je SHORT $LN8@stbi__pnm_
0009f 48 8b 85 e8 00
00 00 mov rax, QWORD PTR c$[rbp]
000a6 0f be 00 movsx eax, BYTE PTR [rax]
000a9 83 f8 0d cmp eax, 13
000ac 74 17 je SHORT $LN8@stbi__pnm_
; 8479 : *c = (char)stbi__get8(s);
000ae 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
000b5 e8 00 00 00 00 call stbi__get8
000ba 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR c$[rbp]
000c1 88 01 mov BYTE PTR [rcx], al
000c3 eb bb jmp SHORT $LN7@stbi__pnm_
$LN8@stbi__pnm_:
; 8480 : }
000c5 e9 5b ff ff ff jmp $LN2@stbi__pnm_
$LN3@stbi__pnm_:
; 8481 : }
000ca 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
000d1 5f pop rdi
000d2 5d pop rbp
000d3 c3 ret 0
stbi__pnm_skip_whitespace ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_isspace
_TEXT SEGMENT
tv76 = 192
c$ = 240
stbi__pnm_isspace PROC ; COMDAT
; 8465 : {
00000 88 4c 24 08 mov BYTE PTR [rsp+8], cl
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 8466 : return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
0001f 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
00026 83 f8 20 cmp eax, 32 ; 00000020H
00029 74 48 je SHORT $LN3@stbi__pnm_
0002b 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
00032 83 f8 09 cmp eax, 9
00035 74 3c je SHORT $LN3@stbi__pnm_
00037 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
0003e 83 f8 0a cmp eax, 10
00041 74 30 je SHORT $LN3@stbi__pnm_
00043 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
0004a 83 f8 0b cmp eax, 11
0004d 74 24 je SHORT $LN3@stbi__pnm_
0004f 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
00056 83 f8 0c cmp eax, 12
00059 74 18 je SHORT $LN3@stbi__pnm_
0005b 0f be 85 f0 00
00 00 movsx eax, BYTE PTR c$[rbp]
00062 83 f8 0d cmp eax, 13
00065 74 0c je SHORT $LN3@stbi__pnm_
00067 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv76[rbp], 0
00071 eb 0a jmp SHORT $LN4@stbi__pnm_
$LN3@stbi__pnm_:
00073 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv76[rbp], 1
$LN4@stbi__pnm_:
0007d 8b 85 c0 00 00
00 mov eax, DWORD PTR tv76[rbp]
; 8467 : }
00083 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
0008a 5f pop rdi
0008b 5d pop rbp
0008c c3 ret 0
stbi__pnm_isspace ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__hdr_convert
_TEXT SEGMENT
f1$1 = 4
tv152 = 212
output$ = 256
input$ = 264
req_comp$ = 272
stbi__hdr_convert PROC ; COMDAT
; 7996 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 7997 : if (input[3] != 0) {
0002a b8 01 00 00 00 mov eax, 1
0002f 48 6b c0 03 imul rax, rax, 3
00033 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR input$[rbp]
0003a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0003e 85 c0 test eax, eax
00040 0f 84 8d 01 00
00 je $LN4@stbi__hdr_
; 7998 : float f1;
; 7999 : // Exponent
; 8000 : f1 = (float)ldexp(1.0f, input[3] - (int)(128 + 8));
00046 b8 01 00 00 00 mov eax, 1
0004b 48 6b c0 03 imul rax, rax, 3
0004f 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR input$[rbp]
00056 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0005a 2d 88 00 00 00 sub eax, 136 ; 00000088H
0005f 8b d0 mov edx, eax
00061 f2 0f 10 05 00
00 00 00 movsd xmm0, QWORD PTR __real@3ff0000000000000
00069 ff 15 00 00 00
00 call QWORD PTR __imp_ldexp
0006f f2 0f 5a c0 cvtsd2ss xmm0, xmm0
00073 f3 0f 11 45 04 movss DWORD PTR f1$1[rbp], xmm0
; 8001 : if (req_comp <= 2)
00078 83 bd 10 01 00
00 02 cmp DWORD PTR req_comp$[rbp], 2
0007f 7f 6b jg SHORT $LN6@stbi__hdr_
; 8002 : output[0] = (input[0] + input[1] + input[2]) * f1 / 3;
00081 b8 01 00 00 00 mov eax, 1
00086 48 6b c0 00 imul rax, rax, 0
0008a 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR input$[rbp]
00091 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00095 b9 01 00 00 00 mov ecx, 1
0009a 48 6b c9 01 imul rcx, rcx, 1
0009e 48 8b 95 08 01
00 00 mov rdx, QWORD PTR input$[rbp]
000a5 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000a9 03 c1 add eax, ecx
000ab b9 01 00 00 00 mov ecx, 1
000b0 48 6b c9 02 imul rcx, rcx, 2
000b4 48 8b 95 08 01
00 00 mov rdx, QWORD PTR input$[rbp]
000bb 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000bf 03 c1 add eax, ecx
000c1 f3 0f 2a c0 cvtsi2ss xmm0, eax
000c5 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
000ca f3 0f 5e 05 00
00 00 00 divss xmm0, DWORD PTR __real@40400000
000d2 b8 04 00 00 00 mov eax, 4
000d7 48 6b c0 00 imul rax, rax, 0
000db 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
000e2 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
000e7 e9 96 00 00 00 jmp $LN7@stbi__hdr_
$LN6@stbi__hdr_:
; 8003 : else {
; 8004 : output[0] = input[0] * f1;
000ec b8 01 00 00 00 mov eax, 1
000f1 48 6b c0 00 imul rax, rax, 0
000f5 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR input$[rbp]
000fc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00100 f3 0f 2a c0 cvtsi2ss xmm0, eax
00104 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
00109 b8 04 00 00 00 mov eax, 4
0010e 48 6b c0 00 imul rax, rax, 0
00112 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
00119 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
; 8005 : output[1] = input[1] * f1;
0011e b8 01 00 00 00 mov eax, 1
00123 48 6b c0 01 imul rax, rax, 1
00127 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR input$[rbp]
0012e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00132 f3 0f 2a c0 cvtsi2ss xmm0, eax
00136 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
0013b b8 04 00 00 00 mov eax, 4
00140 48 6b c0 01 imul rax, rax, 1
00144 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
0014b f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
; 8006 : output[2] = input[2] * f1;
00150 b8 01 00 00 00 mov eax, 1
00155 48 6b c0 02 imul rax, rax, 2
00159 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR input$[rbp]
00160 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00164 f3 0f 2a c0 cvtsi2ss xmm0, eax
00168 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
0016d b8 04 00 00 00 mov eax, 4
00172 48 6b c0 02 imul rax, rax, 2
00176 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
0017d f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
$LN7@stbi__hdr_:
; 8007 : }
; 8008 : if (req_comp == 2)
00182 83 bd 10 01 00
00 02 cmp DWORD PTR req_comp$[rbp], 2
00189 75 1d jne SHORT $LN8@stbi__hdr_
; 8009 : output[1] = 1;
0018b b8 04 00 00 00 mov eax, 4
00190 48 6b c0 01 imul rax, rax, 1
00194 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
0019b f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
001a3 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
$LN8@stbi__hdr_:
; 8010 : if (req_comp == 4)
001a8 83 bd 10 01 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
001af 75 1d jne SHORT $LN9@stbi__hdr_
; 8011 : output[3] = 1;
001b1 b8 04 00 00 00 mov eax, 4
001b6 48 6b c0 03 imul rax, rax, 3
001ba 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
001c1 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
001c9 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
$LN9@stbi__hdr_:
; 8012 : } else {
001ce e9 d5 00 00 00 jmp $LN5@stbi__hdr_
$LN4@stbi__hdr_:
; 8013 : switch (req_comp) {
001d3 8b 85 10 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
001d9 89 85 d4 00 00
00 mov DWORD PTR tv152[rbp], eax
001df 83 bd d4 00 00
00 01 cmp DWORD PTR tv152[rbp], 1
001e6 0f 84 a4 00 00
00 je $LN13@stbi__hdr_
001ec 83 bd d4 00 00
00 02 cmp DWORD PTR tv152[rbp], 2
001f3 74 7e je SHORT $LN12@stbi__hdr_
001f5 83 bd d4 00 00
00 03 cmp DWORD PTR tv152[rbp], 3
001fc 74 2b je SHORT $LN11@stbi__hdr_
001fe 83 bd d4 00 00
00 04 cmp DWORD PTR tv152[rbp], 4
00205 74 05 je SHORT $LN10@stbi__hdr_
00207 e9 9c 00 00 00 jmp $LN2@stbi__hdr_
$LN10@stbi__hdr_:
; 8014 : case 4:
; 8015 : output[3] = 1; /* fallthrough */
0020c b8 04 00 00 00 mov eax, 4
00211 48 6b c0 03 imul rax, rax, 3
00215 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
0021c f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
00224 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
$LN11@stbi__hdr_:
; 8016 : case 3:
; 8017 : output[0] = output[1] = output[2] = 0;
00229 b8 04 00 00 00 mov eax, 4
0022e 48 6b c0 02 imul rax, rax, 2
00232 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
00239 0f 57 c0 xorps xmm0, xmm0
0023c f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
00241 b8 04 00 00 00 mov eax, 4
00246 48 6b c0 01 imul rax, rax, 1
0024a 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
00251 0f 57 c0 xorps xmm0, xmm0
00254 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
00259 b8 04 00 00 00 mov eax, 4
0025e 48 6b c0 00 imul rax, rax, 0
00262 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
00269 0f 57 c0 xorps xmm0, xmm0
0026c f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
; 8018 : break;
00271 eb 35 jmp SHORT $LN2@stbi__hdr_
$LN12@stbi__hdr_:
; 8019 : case 2:
; 8020 : output[1] = 1; /* fallthrough */
00273 b8 04 00 00 00 mov eax, 4
00278 48 6b c0 01 imul rax, rax, 1
0027c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
00283 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
0028b f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
$LN13@stbi__hdr_:
; 8021 : case 1:
; 8022 : output[0] = 0;
00290 b8 04 00 00 00 mov eax, 4
00295 48 6b c0 00 imul rax, rax, 0
00299 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR output$[rbp]
002a0 0f 57 c0 xorps xmm0, xmm0
002a3 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
$LN2@stbi__hdr_:
$LN5@stbi__hdr_:
; 8023 : break;
; 8024 : }
; 8025 : }
; 8026 : }
002a8 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
002af 5f pop rdi
002b0 5d pop rbp
002b1 c3 ret 0
stbi__hdr_convert ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__hdr_gettoken
_TEXT SEGMENT
len$ = 4
c$ = 36
z$ = 288
buffer$ = 296
stbi__hdr_gettoken PROC ; COMDAT
; 7974 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 7975 : int len = 0;
00025 c7 45 04 00 00
00 00 mov DWORD PTR len$[rbp], 0
; 7976 : char c = '\0';
0002c c6 45 24 00 mov BYTE PTR c$[rbp], 0
; 7977 :
; 7978 : c = (char)stbi__get8(z);
00030 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR z$[rbp]
00037 e8 00 00 00 00 call stbi__get8
0003c 88 45 24 mov BYTE PTR c$[rbp], al
$LN2@stbi__hdr_:
; 7979 :
; 7980 : while (!stbi__at_eof(z) && c != '\n') {
0003f 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR z$[rbp]
00046 e8 00 00 00 00 call stbi__at_eof
0004b 85 c0 test eax, eax
0004d 75 65 jne SHORT $LN3@stbi__hdr_
0004f 0f be 45 24 movsx eax, BYTE PTR c$[rbp]
00053 83 f8 0a cmp eax, 10
00056 74 5c je SHORT $LN3@stbi__hdr_
; 7981 : buffer[len++] = c;
00058 48 63 45 04 movsxd rax, DWORD PTR len$[rbp]
0005c 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR buffer$[rbp]
00063 0f b6 55 24 movzx edx, BYTE PTR c$[rbp]
00067 88 14 01 mov BYTE PTR [rcx+rax], dl
0006a 8b 45 04 mov eax, DWORD PTR len$[rbp]
0006d ff c0 inc eax
0006f 89 45 04 mov DWORD PTR len$[rbp], eax
; 7982 : if (len == STBI__HDR_BUFLEN - 1) {
00072 81 7d 04 ff 03
00 00 cmp DWORD PTR len$[rbp], 1023 ; 000003ffH
00079 75 28 jne SHORT $LN6@stbi__hdr_
$LN4@stbi__hdr_:
; 7983 : // flush to end of line
; 7984 : while (!stbi__at_eof(z) && stbi__get8(z) != '\n')
0007b 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR z$[rbp]
00082 e8 00 00 00 00 call stbi__at_eof
00087 85 c0 test eax, eax
00089 75 16 jne SHORT $LN5@stbi__hdr_
0008b 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR z$[rbp]
00092 e8 00 00 00 00 call stbi__get8
00097 0f b6 c0 movzx eax, al
0009a 83 f8 0a cmp eax, 10
0009d 74 02 je SHORT $LN5@stbi__hdr_
; 7985 : ;
0009f eb da jmp SHORT $LN4@stbi__hdr_
$LN5@stbi__hdr_:
; 7986 : break;
000a1 eb 11 jmp SHORT $LN3@stbi__hdr_
$LN6@stbi__hdr_:
; 7987 : }
; 7988 : c = (char)stbi__get8(z);
000a3 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR z$[rbp]
000aa e8 00 00 00 00 call stbi__get8
000af 88 45 24 mov BYTE PTR c$[rbp], al
; 7989 : }
000b2 eb 8b jmp SHORT $LN2@stbi__hdr_
$LN3@stbi__hdr_:
; 7990 :
; 7991 : buffer[len] = 0;
000b4 48 63 45 04 movsxd rax, DWORD PTR len$[rbp]
000b8 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR buffer$[rbp]
000bf c6 04 01 00 mov BYTE PTR [rcx+rax], 0
; 7992 : return buffer;
000c3 48 8b 85 28 01
00 00 mov rax, QWORD PTR buffer$[rbp]
; 7993 : }
000ca 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000d1 5f pop rdi
000d2 5d pop rbp
000d3 c3 ret 0
stbi__hdr_gettoken ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__hdr_test_core
_TEXT SEGMENT
i$ = 4
s$ = 256
signature$ = 264
stbi__hdr_test_core PROC ; COMDAT
; 7952 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 7953 : int i;
; 7954 : for (i = 0; signature[i]; ++i)
00025 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
0002c eb 08 jmp SHORT $LN4@stbi__hdr_
$LN2@stbi__hdr_:
0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
00031 ff c0 inc eax
00033 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__hdr_:
00036 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0003a 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR signature$[rbp]
00041 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
00045 85 c0 test eax, eax
00047 74 28 je SHORT $LN3@stbi__hdr_
; 7955 : if (stbi__get8(s) != signature[i])
00049 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00050 e8 00 00 00 00 call stbi__get8
00055 0f b6 c0 movzx eax, al
00058 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
0005c 48 8b 95 08 01
00 00 mov rdx, QWORD PTR signature$[rbp]
00063 0f be 0c 0a movsx ecx, BYTE PTR [rdx+rcx]
00067 3b c1 cmp eax, ecx
00069 74 04 je SHORT $LN5@stbi__hdr_
; 7956 : return 0;
0006b 33 c0 xor eax, eax
0006d eb 14 jmp SHORT $LN1@stbi__hdr_
$LN5@stbi__hdr_:
0006f eb bd jmp SHORT $LN2@stbi__hdr_
$LN3@stbi__hdr_:
; 7957 : stbi__rewind(s);
00071 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00078 e8 00 00 00 00 call stbi__rewind
0007d 90 npad 1
; 7958 : return 1;
0007e b8 01 00 00 00 mov eax, 1
$LN1@stbi__hdr_:
; 7959 : }
00083 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
0008a 5f pop rdi
0008b 5d pop rbp
0008c c3 ret 0
stbi__hdr_test_core ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__load_gif_main_outofmem
_TEXT SEGMENT
tv78 = 192
g$ = 240
out$ = 248
delays$ = 256
stbi__load_gif_main_outofmem PROC ; COMDAT
; 7805 : {
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 7806 : STBI_FREE(g->out);
0002a 48 8b 85 f0 00
00 00 mov rax, QWORD PTR g$[rbp]
00031 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
00035 ff 15 00 00 00
00 call QWORD PTR __imp_free
0003b 90 npad 1
; 7807 : STBI_FREE(g->history);
0003c 48 8b 85 f0 00
00 00 mov rax, QWORD PTR g$[rbp]
00043 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
00047 ff 15 00 00 00
00 call QWORD PTR __imp_free
0004d 90 npad 1
; 7808 : STBI_FREE(g->background);
0004e 48 8b 85 f0 00
00 00 mov rax, QWORD PTR g$[rbp]
00055 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
00059 ff 15 00 00 00
00 call QWORD PTR __imp_free
0005f 90 npad 1
; 7809 :
; 7810 : if (out)
00060 48 83 bd f8 00
00 00 00 cmp QWORD PTR out$[rbp], 0
00068 74 0e je SHORT $LN2@stbi__load
; 7811 : STBI_FREE(out);
0006a 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR out$[rbp]
00071 ff 15 00 00 00
00 call QWORD PTR __imp_free
00077 90 npad 1
$LN2@stbi__load:
; 7812 : if (delays && *delays)
00078 48 83 bd 00 01
00 00 00 cmp QWORD PTR delays$[rbp], 0
00080 74 1e je SHORT $LN3@stbi__load
00082 48 8b 85 00 01
00 00 mov rax, QWORD PTR delays$[rbp]
00089 48 83 38 00 cmp QWORD PTR [rax], 0
0008d 74 11 je SHORT $LN3@stbi__load
; 7813 : STBI_FREE(*delays);
0008f 48 8b 85 00 01
00 00 mov rax, QWORD PTR delays$[rbp]
00096 48 8b 08 mov rcx, QWORD PTR [rax]
00099 ff 15 00 00 00
00 call QWORD PTR __imp_free
0009f 90 npad 1
$LN3@stbi__load:
; 7814 : return stbi__errpuc("outofmem", "Out of memory");
000a0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
000a7 e8 00 00 00 00 call stbi__err
000ac 85 c0 test eax, eax
000ae 74 0d je SHORT $LN5@stbi__load
000b0 48 c7 85 c0 00
00 00 00 00 00
00 mov QWORD PTR tv78[rbp], 0
000bb eb 0b jmp SHORT $LN6@stbi__load
$LN5@stbi__load:
000bd 48 c7 85 c0 00
00 00 00 00 00
00 mov QWORD PTR tv78[rbp], 0
$LN6@stbi__load:
000c8 48 8b 85 c0 00
00 00 mov rax, QWORD PTR tv78[rbp]
; 7815 : }
000cf 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000d6 5f pop rdi
000d7 5d pop rbp
000d8 c3 ret 0
stbi__load_gif_main_outofmem ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_load_next
_TEXT SEGMENT
dispose$ = 4
first_frame$ = 36
pi$ = 68
pcount$ = 100
tag$1 = 132
x$2 = 164
y$3 = 196
w$4 = 228
h$5 = 260
o$6 = 296
len$7 = 324
ext$8 = 356
tv232 = 564
tv296 = 564
tv83 = 568
tv142 = 568
tv250 = 568
tv315 = 568
tv409 = 568
tv578 = 568
s$ = 608
g$ = 616
comp$ = 624
req_comp$ = 632
two_back$ = 640
stbi__gif_load_next PROC ; COMDAT
; 7622 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 68 02
00 00 sub rsp, 616 ; 00000268H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 7623 : int dispose;
; 7624 : int first_frame;
; 7625 : int pi;
; 7626 : int pcount;
; 7627 : STBI_NOTUSED(req_comp);
; 7628 :
; 7629 : // on first frame, any non-written pixels get the background colour (non-transparent)
; 7630 : first_frame = 0;
0002f c7 45 24 00 00
00 00 mov DWORD PTR first_frame$[rbp], 0
; 7631 : if (g->out == 0) {
00036 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0003d 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
00042 0f 85 a5 01 00
00 jne $LN18@stbi__gif_
; 7632 : if (!stbi__gif_header(s, g, comp, 0))
00048 45 33 c9 xor r9d, r9d
0004b 4c 8b 85 70 02
00 00 mov r8, QWORD PTR comp$[rbp]
00052 48 8b 95 68 02
00 00 mov rdx, QWORD PTR g$[rbp]
00059 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00060 e8 00 00 00 00 call stbi__gif_header
00065 85 c0 test eax, eax
00067 75 07 jne SHORT $LN20@stbi__gif_
; 7633 : return 0; // stbi__g_failure_reason set by stbi__gif_header
00069 33 c0 xor eax, eax
0006b e9 66 09 00 00 jmp $LN1@stbi__gif_
$LN20@stbi__gif_:
; 7634 : if (!stbi__mad3sizes_valid(4, g->w, g->h, 0))
00070 45 33 c9 xor r9d, r9d
00073 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0007a 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
0007e 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00085 8b 10 mov edx, DWORD PTR [rax]
00087 b9 04 00 00 00 mov ecx, 4
0008c e8 00 00 00 00 call stbi__mad3sizes_valid
00091 85 c0 test eax, eax
00093 75 34 jne SHORT $LN21@stbi__gif_
; 7635 : return stbi__errpuc("too large", "GIF image is too large");
00095 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
0009c e8 00 00 00 00 call stbi__err
000a1 85 c0 test eax, eax
000a3 74 0d je SHORT $LN55@stbi__gif_
000a5 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv83[rbp], 0
000b0 eb 0b jmp SHORT $LN56@stbi__gif_
$LN55@stbi__gif_:
000b2 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv83[rbp], 0
$LN56@stbi__gif_:
000bd 48 8b 85 38 02
00 00 mov rax, QWORD PTR tv83[rbp]
000c4 e9 0d 09 00 00 jmp $LN1@stbi__gif_
$LN21@stbi__gif_:
; 7636 : pcount = g->w * g->h;
000c9 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
000d0 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
000d7 8b 00 mov eax, DWORD PTR [rax]
000d9 0f af 41 04 imul eax, DWORD PTR [rcx+4]
000dd 89 45 64 mov DWORD PTR pcount$[rbp], eax
; 7637 : g->out = (stbi_uc *)stbi__malloc(4 * pcount);
000e0 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
000e3 c1 e0 02 shl eax, 2
000e6 48 98 cdqe
000e8 48 8b c8 mov rcx, rax
000eb e8 00 00 00 00 call stbi__malloc
000f0 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
000f7 48 89 41 08 mov QWORD PTR [rcx+8], rax
; 7638 : g->background = (stbi_uc *)stbi__malloc(4 * pcount);
000fb 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
000fe c1 e0 02 shl eax, 2
00101 48 98 cdqe
00103 48 8b c8 mov rcx, rax
00106 e8 00 00 00 00 call stbi__malloc
0010b 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00112 48 89 41 10 mov QWORD PTR [rcx+16], rax
; 7639 : g->history = (stbi_uc *)stbi__malloc(pcount);
00116 48 63 45 64 movsxd rax, DWORD PTR pcount$[rbp]
0011a 48 8b c8 mov rcx, rax
0011d e8 00 00 00 00 call stbi__malloc
00122 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00129 48 89 41 18 mov QWORD PTR [rcx+24], rax
; 7640 : if (!g->out || !g->background || !g->history)
0012d 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00134 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
00139 74 1c je SHORT $LN23@stbi__gif_
0013b 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00142 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
00147 74 0e je SHORT $LN23@stbi__gif_
00149 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00150 48 83 78 18 00 cmp QWORD PTR [rax+24], 0
00155 75 34 jne SHORT $LN22@stbi__gif_
$LN23@stbi__gif_:
; 7641 : return stbi__errpuc("outofmem", "Out of memory");
00157 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0015e e8 00 00 00 00 call stbi__err
00163 85 c0 test eax, eax
00165 74 0d je SHORT $LN57@stbi__gif_
00167 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv142[rbp], 0
00172 eb 0b jmp SHORT $LN58@stbi__gif_
$LN57@stbi__gif_:
00174 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv142[rbp], 0
$LN58@stbi__gif_:
0017f 48 8b 85 38 02
00 00 mov rax, QWORD PTR tv142[rbp]
00186 e9 4b 08 00 00 jmp $LN1@stbi__gif_
$LN22@stbi__gif_:
; 7642 :
; 7643 : // image is treated as "transparent" at the start - ie, nothing overwrites the current background;
; 7644 : // background colour is only used for pixels that are not rendered first frame, after that "background"
; 7645 : // color refers to the color that was there the previous frame.
; 7646 : memset(g->out, 0x00, 4 * pcount);
0018b 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
0018e c1 e0 02 shl eax, 2
00191 48 98 cdqe
00193 4c 8b c0 mov r8, rax
00196 33 d2 xor edx, edx
00198 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0019f 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
001a3 e8 00 00 00 00 call memset
001a8 90 npad 1
; 7647 : memset(g->background, 0x00,
001a9 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
001ac c1 e0 02 shl eax, 2
001af 48 98 cdqe
001b1 4c 8b c0 mov r8, rax
001b4 33 d2 xor edx, edx
001b6 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
001bd 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
001c1 e8 00 00 00 00 call memset
001c6 90 npad 1
; 7648 : 4 * pcount); // state of the background (starts transparent)
; 7649 : memset(g->history, 0x00, pcount); // pixels that were affected previous frame
001c7 48 63 45 64 movsxd rax, DWORD PTR pcount$[rbp]
001cb 4c 8b c0 mov r8, rax
001ce 33 d2 xor edx, edx
001d0 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
001d7 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
001db e8 00 00 00 00 call memset
001e0 90 npad 1
; 7650 : first_frame = 1;
001e1 c7 45 24 01 00
00 00 mov DWORD PTR first_frame$[rbp], 1
; 7651 : } else {
001e8 e9 6b 01 00 00 jmp $LN19@stbi__gif_
$LN18@stbi__gif_:
; 7652 : // second frame - how do we dispose of the previous one?
; 7653 : dispose = (g->eflags & 0x1C) >> 2;
001ed 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
001f4 8b 40 30 mov eax, DWORD PTR [rax+48]
001f7 83 e0 1c and eax, 28
001fa c1 f8 02 sar eax, 2
001fd 89 45 04 mov DWORD PTR dispose$[rbp], eax
; 7654 : pcount = g->w * g->h;
00200 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00207 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
0020e 8b 00 mov eax, DWORD PTR [rax]
00210 0f af 41 04 imul eax, DWORD PTR [rcx+4]
00214 89 45 64 mov DWORD PTR pcount$[rbp], eax
; 7655 :
; 7656 : if ((dispose == 3) && (two_back == 0)) {
00217 83 7d 04 03 cmp DWORD PTR dispose$[rbp], 3
0021b 75 11 jne SHORT $LN24@stbi__gif_
0021d 48 83 bd 80 02
00 00 00 cmp QWORD PTR two_back$[rbp], 0
00225 75 07 jne SHORT $LN24@stbi__gif_
; 7657 : dispose =
00227 c7 45 04 02 00
00 00 mov DWORD PTR dispose$[rbp], 2
$LN24@stbi__gif_:
; 7658 : 2; // if I don't have an image to revert back to, default to the old background
; 7659 : }
; 7660 :
; 7661 : if (dispose == 3) { // use previous graphic
0022e 83 7d 04 03 cmp DWORD PTR dispose$[rbp], 3
00232 75 72 jne SHORT $LN25@stbi__gif_
; 7662 : for (pi = 0; pi < pcount; ++pi) {
00234 c7 45 44 00 00
00 00 mov DWORD PTR pi$[rbp], 0
0023b eb 08 jmp SHORT $LN4@stbi__gif_
$LN2@stbi__gif_:
0023d 8b 45 44 mov eax, DWORD PTR pi$[rbp]
00240 ff c0 inc eax
00242 89 45 44 mov DWORD PTR pi$[rbp], eax
$LN4@stbi__gif_:
00245 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
00248 39 45 44 cmp DWORD PTR pi$[rbp], eax
0024b 7d 57 jge SHORT $LN3@stbi__gif_
; 7663 : if (g->history[pi]) {
0024d 48 63 45 44 movsxd rax, DWORD PTR pi$[rbp]
00251 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00258 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
0025c 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00260 85 c0 test eax, eax
00262 74 3e je SHORT $LN27@stbi__gif_
; 7664 : memcpy(&g->out[pi * 4], &two_back[pi * 4], 4);
00264 8b 45 44 mov eax, DWORD PTR pi$[rbp]
00267 c1 e0 02 shl eax, 2
0026a 48 98 cdqe
0026c 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR two_back$[rbp]
00273 48 03 c8 add rcx, rax
00276 48 8b c1 mov rax, rcx
00279 8b 4d 44 mov ecx, DWORD PTR pi$[rbp]
0027c c1 e1 02 shl ecx, 2
0027f 48 63 c9 movsxd rcx, ecx
00282 48 8b 95 68 02
00 00 mov rdx, QWORD PTR g$[rbp]
00289 48 8b 52 08 mov rdx, QWORD PTR [rdx+8]
0028d 48 03 d1 add rdx, rcx
00290 48 8b ca mov rcx, rdx
00293 41 b8 04 00 00
00 mov r8d, 4
00299 48 8b d0 mov rdx, rax
0029c e8 00 00 00 00 call memcpy
002a1 90 npad 1
$LN27@stbi__gif_:
; 7665 : }
; 7666 : }
002a2 eb 99 jmp SHORT $LN2@stbi__gif_
$LN3@stbi__gif_:
; 7667 : } else if (dispose == 2) {
002a4 eb 7a jmp SHORT $LN26@stbi__gif_
$LN25@stbi__gif_:
002a6 83 7d 04 02 cmp DWORD PTR dispose$[rbp], 2
002aa 75 74 jne SHORT $LN28@stbi__gif_
; 7668 : // restore what was changed last frame to background before that frame;
; 7669 : for (pi = 0; pi < pcount; ++pi) {
002ac c7 45 44 00 00
00 00 mov DWORD PTR pi$[rbp], 0
002b3 eb 08 jmp SHORT $LN7@stbi__gif_
$LN5@stbi__gif_:
002b5 8b 45 44 mov eax, DWORD PTR pi$[rbp]
002b8 ff c0 inc eax
002ba 89 45 44 mov DWORD PTR pi$[rbp], eax
$LN7@stbi__gif_:
002bd 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
002c0 39 45 44 cmp DWORD PTR pi$[rbp], eax
002c3 7d 5b jge SHORT $LN6@stbi__gif_
; 7670 : if (g->history[pi]) {
002c5 48 63 45 44 movsxd rax, DWORD PTR pi$[rbp]
002c9 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
002d0 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
002d4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
002d8 85 c0 test eax, eax
002da 74 42 je SHORT $LN30@stbi__gif_
; 7671 : memcpy(&g->out[pi * 4], &g->background[pi * 4], 4);
002dc 8b 45 44 mov eax, DWORD PTR pi$[rbp]
002df c1 e0 02 shl eax, 2
002e2 48 98 cdqe
002e4 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
002eb 48 8b 49 10 mov rcx, QWORD PTR [rcx+16]
002ef 48 03 c8 add rcx, rax
002f2 48 8b c1 mov rax, rcx
002f5 8b 4d 44 mov ecx, DWORD PTR pi$[rbp]
002f8 c1 e1 02 shl ecx, 2
002fb 48 63 c9 movsxd rcx, ecx
002fe 48 8b 95 68 02
00 00 mov rdx, QWORD PTR g$[rbp]
00305 48 8b 52 08 mov rdx, QWORD PTR [rdx+8]
00309 48 03 d1 add rdx, rcx
0030c 48 8b ca mov rcx, rdx
0030f 41 b8 04 00 00
00 mov r8d, 4
00315 48 8b d0 mov rdx, rax
00318 e8 00 00 00 00 call memcpy
0031d 90 npad 1
$LN30@stbi__gif_:
; 7672 : }
; 7673 : }
0031e eb 95 jmp SHORT $LN5@stbi__gif_
$LN6@stbi__gif_:
$LN28@stbi__gif_:
$LN26@stbi__gif_:
; 7674 : } else {
; 7675 : // This is a non-disposal case eithe way, so just
; 7676 : // leave the pixels as is, and they will become the new background
; 7677 : // 1: do not dispose
; 7678 : // 0: not specified.
; 7679 : }
; 7680 :
; 7681 : // background is what out is after the undoing of the previou frame;
; 7682 : memcpy(g->background, g->out, 4 * g->w * g->h);
00320 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00327 8b 00 mov eax, DWORD PTR [rax]
00329 c1 e0 02 shl eax, 2
0032c 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00333 0f af 41 04 imul eax, DWORD PTR [rcx+4]
00337 48 98 cdqe
00339 4c 8b c0 mov r8, rax
0033c 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00343 48 8b 50 08 mov rdx, QWORD PTR [rax+8]
00347 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0034e 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
00352 e8 00 00 00 00 call memcpy
00357 90 npad 1
$LN19@stbi__gif_:
; 7683 : }
; 7684 :
; 7685 : // clear my history;
; 7686 : memset(g->history, 0x00, g->w * g->h); // pixels that were affected previous frame
00358 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0035f 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00366 8b 00 mov eax, DWORD PTR [rax]
00368 0f af 41 04 imul eax, DWORD PTR [rcx+4]
0036c 48 98 cdqe
0036e 4c 8b c0 mov r8, rax
00371 33 d2 xor edx, edx
00373 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0037a 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
0037e e8 00 00 00 00 call memset
00383 90 npad 1
$LN8@stbi__gif_:
; 7687 :
; 7688 : for (;;) {
; 7689 : int tag = stbi__get8(s);
00384 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
0038b e8 00 00 00 00 call stbi__get8
00390 0f b6 c0 movzx eax, al
00393 89 85 84 00 00
00 mov DWORD PTR tag$1[rbp], eax
; 7690 : switch (tag) {
00399 8b 85 84 00 00
00 mov eax, DWORD PTR tag$1[rbp]
0039f 89 85 34 02 00
00 mov DWORD PTR tv232[rbp], eax
003a5 83 bd 34 02 00
00 21 cmp DWORD PTR tv232[rbp], 33 ; 00000021H
003ac 0f 84 6f 04 00
00 je $LN44@stbi__gif_
003b2 83 bd 34 02 00
00 2c cmp DWORD PTR tv232[rbp], 44 ; 0000002cH
003b9 74 12 je SHORT $LN31@stbi__gif_
003bb 83 bd 34 02 00
00 3b cmp DWORD PTR tv232[rbp], 59 ; 0000003bH
003c2 0f 84 cf 05 00
00 je $LN52@stbi__gif_
003c8 e9 d3 05 00 00 jmp $LN53@stbi__gif_
$LN31@stbi__gif_:
; 7691 : case 0x2C: /* Image Descriptor */
; 7692 : {
; 7693 : stbi__int32 x, y, w, h;
; 7694 : stbi_uc *o;
; 7695 :
; 7696 : x = stbi__get16le(s);
003cd 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
003d4 e8 00 00 00 00 call stbi__get16le
003d9 89 85 a4 00 00
00 mov DWORD PTR x$2[rbp], eax
; 7697 : y = stbi__get16le(s);
003df 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
003e6 e8 00 00 00 00 call stbi__get16le
003eb 89 85 c4 00 00
00 mov DWORD PTR y$3[rbp], eax
; 7698 : w = stbi__get16le(s);
003f1 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
003f8 e8 00 00 00 00 call stbi__get16le
003fd 89 85 e4 00 00
00 mov DWORD PTR w$4[rbp], eax
; 7699 : h = stbi__get16le(s);
00403 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
0040a e8 00 00 00 00 call stbi__get16le
0040f 89 85 04 01 00
00 mov DWORD PTR h$5[rbp], eax
; 7700 : if (((x + w) > (g->w)) || ((y + h) > (g->h)))
00415 8b 85 e4 00 00
00 mov eax, DWORD PTR w$4[rbp]
0041b 8b 8d a4 00 00
00 mov ecx, DWORD PTR x$2[rbp]
00421 03 c8 add ecx, eax
00423 8b c1 mov eax, ecx
00425 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
0042c 3b 01 cmp eax, DWORD PTR [rcx]
0042e 7f 1c jg SHORT $LN33@stbi__gif_
00430 8b 85 04 01 00
00 mov eax, DWORD PTR h$5[rbp]
00436 8b 8d c4 00 00
00 mov ecx, DWORD PTR y$3[rbp]
0043c 03 c8 add ecx, eax
0043e 8b c1 mov eax, ecx
00440 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00447 3b 41 04 cmp eax, DWORD PTR [rcx+4]
0044a 7e 34 jle SHORT $LN32@stbi__gif_
$LN33@stbi__gif_:
; 7701 : return stbi__errpuc("bad Image Descriptor", "Corrupt GIF");
0044c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@
00453 e8 00 00 00 00 call stbi__err
00458 85 c0 test eax, eax
0045a 74 0d je SHORT $LN59@stbi__gif_
0045c 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv250[rbp], 0
00467 eb 0b jmp SHORT $LN60@stbi__gif_
$LN59@stbi__gif_:
00469 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv250[rbp], 0
$LN60@stbi__gif_:
00474 48 8b 85 38 02
00 00 mov rax, QWORD PTR tv250[rbp]
0047b e9 56 05 00 00 jmp $LN1@stbi__gif_
$LN32@stbi__gif_:
; 7702 :
; 7703 : g->line_size = g->w * 4;
00480 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00487 8b 00 mov eax, DWORD PTR [rax]
00489 c1 e0 02 shl eax, 2
0048c 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00493 89 81 64 88 00
00 mov DWORD PTR [rcx+34916], eax
; 7704 : g->start_x = x * 4;
00499 8b 85 a4 00 00
00 mov eax, DWORD PTR x$2[rbp]
0049f c1 e0 02 shl eax, 2
004a2 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
004a9 89 81 4c 88 00
00 mov DWORD PTR [rcx+34892], eax
; 7705 : g->start_y = y * g->line_size;
004af 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
004b6 8b 8d c4 00 00
00 mov ecx, DWORD PTR y$3[rbp]
004bc 0f af 88 64 88
00 00 imul ecx, DWORD PTR [rax+34916]
004c3 8b c1 mov eax, ecx
004c5 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
004cc 89 81 50 88 00
00 mov DWORD PTR [rcx+34896], eax
; 7706 : g->max_x = g->start_x + w * 4;
004d2 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
004d9 8b 80 4c 88 00
00 mov eax, DWORD PTR [rax+34892]
004df 8b 8d e4 00 00
00 mov ecx, DWORD PTR w$4[rbp]
004e5 8d 04 88 lea eax, DWORD PTR [rax+rcx*4]
004e8 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
004ef 89 81 54 88 00
00 mov DWORD PTR [rcx+34900], eax
; 7707 : g->max_y = g->start_y + h * g->line_size;
004f5 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
004fc 8b 8d 04 01 00
00 mov ecx, DWORD PTR h$5[rbp]
00502 0f af 88 64 88
00 00 imul ecx, DWORD PTR [rax+34916]
00509 8b c1 mov eax, ecx
0050b 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00512 03 81 50 88 00
00 add eax, DWORD PTR [rcx+34896]
00518 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
0051f 89 81 58 88 00
00 mov DWORD PTR [rcx+34904], eax
; 7708 : g->cur_x = g->start_x;
00525 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0052c 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00533 8b 89 4c 88 00
00 mov ecx, DWORD PTR [rcx+34892]
00539 89 88 5c 88 00
00 mov DWORD PTR [rax+34908], ecx
; 7709 : g->cur_y = g->start_y;
0053f 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00546 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
0054d 8b 89 50 88 00
00 mov ecx, DWORD PTR [rcx+34896]
00553 89 88 60 88 00
00 mov DWORD PTR [rax+34912], ecx
; 7710 :
; 7711 : // if the width of the specified rectangle is 0, that means
; 7712 : // we may not see *any* pixels or the image is malformed;
; 7713 : // to make sure this is caught, move the current y down to
; 7714 : // max_y (which is what out_gif_code checks).
; 7715 : if (w == 0)
00559 83 bd e4 00 00
00 00 cmp DWORD PTR w$4[rbp], 0
00560 75 1a jne SHORT $LN34@stbi__gif_
; 7716 : g->cur_y = g->max_y;
00562 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00569 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00570 8b 89 58 88 00
00 mov ecx, DWORD PTR [rcx+34904]
00576 89 88 60 88 00
00 mov DWORD PTR [rax+34912], ecx
$LN34@stbi__gif_:
; 7717 :
; 7718 : g->lflags = stbi__get8(s);
0057c 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00583 e8 00 00 00 00 call stbi__get8
00588 0f b6 c0 movzx eax, al
0058b 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00592 89 81 48 88 00
00 mov DWORD PTR [rcx+34888], eax
; 7719 :
; 7720 : if (g->lflags & 0x40) {
00598 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0059f 8b 80 48 88 00
00 mov eax, DWORD PTR [rax+34888]
005a5 83 e0 40 and eax, 64 ; 00000040H
005a8 85 c0 test eax, eax
005aa 74 30 je SHORT $LN35@stbi__gif_
; 7721 : g->step = 8 * g->line_size; // first interlaced spacing
005ac 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
005b3 8b 80 64 88 00
00 mov eax, DWORD PTR [rax+34916]
005b9 c1 e0 03 shl eax, 3
005bc 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
005c3 89 81 44 88 00
00 mov DWORD PTR [rcx+34884], eax
; 7722 : g->parse = 3;
005c9 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
005d0 c7 80 40 88 00
00 03 00 00 00 mov DWORD PTR [rax+34880], 3
; 7723 : } else {
005da eb 2b jmp SHORT $LN36@stbi__gif_
$LN35@stbi__gif_:
; 7724 : g->step = g->line_size;
005dc 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
005e3 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
005ea 8b 89 64 88 00
00 mov ecx, DWORD PTR [rcx+34916]
005f0 89 88 44 88 00
00 mov DWORD PTR [rax+34884], ecx
; 7725 : g->parse = 0;
005f6 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
005fd c7 80 40 88 00
00 00 00 00 00 mov DWORD PTR [rax+34880], 0
$LN36@stbi__gif_:
; 7726 : }
; 7727 :
; 7728 : if (g->lflags & 0x80) {
00607 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0060e 8b 80 48 88 00
00 mov eax, DWORD PTR [rax+34888]
00614 25 80 00 00 00 and eax, 128 ; 00000080H
00619 85 c0 test eax, eax
0061b 0f 84 98 00 00
00 je $LN37@stbi__gif_
; 7729 : stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7),
00621 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00628 8b 40 30 mov eax, DWORD PTR [rax+48]
0062b 83 e0 01 and eax, 1
0062e 85 c0 test eax, eax
00630 74 12 je SHORT $LN61@stbi__gif_
00632 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00639 8b 40 2c mov eax, DWORD PTR [rax+44]
0063c 89 85 34 02 00
00 mov DWORD PTR tv296[rbp], eax
00642 eb 0a jmp SHORT $LN62@stbi__gif_
$LN61@stbi__gif_:
00644 c7 85 34 02 00
00 ff ff ff ff mov DWORD PTR tv296[rbp], -1
$LN62@stbi__gif_:
0064e 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00655 8b 80 48 88 00
00 mov eax, DWORD PTR [rax+34888]
0065b 83 e0 07 and eax, 7
0065e b9 02 00 00 00 mov ecx, 2
00663 89 8d 38 02 00
00 mov DWORD PTR tv578[rbp], ecx
00669 0f b6 c8 movzx ecx, al
0066c 8b 85 38 02 00
00 mov eax, DWORD PTR tv578[rbp]
00672 d3 e0 shl eax, cl
00674 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
0067b 48 81 c1 34 04
00 00 add rcx, 1076 ; 00000434H
00682 44 8b 8d 34 02
00 00 mov r9d, DWORD PTR tv296[rbp]
00689 44 8b c0 mov r8d, eax
0068c 48 8b d1 mov rdx, rcx
0068f 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00696 e8 00 00 00 00 call stbi__gif_parse_colortable
0069b 90 npad 1
; 7730 : g->eflags & 0x01 ? g->transparent : -1);
; 7731 : g->color_table = (stbi_uc *)g->lpal;
0069c 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
006a3 48 05 34 04 00
00 add rax, 1076 ; 00000434H
006a9 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
006b0 48 89 81 38 88
00 00 mov QWORD PTR [rcx+34872], rax
006b7 eb 62 jmp SHORT $LN38@stbi__gif_
$LN37@stbi__gif_:
; 7732 : } else if (g->flags & 0x80) {
006b9 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
006c0 8b 40 20 mov eax, DWORD PTR [rax+32]
006c3 25 80 00 00 00 and eax, 128 ; 00000080H
006c8 85 c0 test eax, eax
006ca 74 1b je SHORT $LN39@stbi__gif_
; 7733 : g->color_table = (stbi_uc *)g->pal;
006cc 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
006d3 48 83 c0 34 add rax, 52 ; 00000034H
006d7 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
006de 48 89 81 38 88
00 00 mov QWORD PTR [rcx+34872], rax
; 7734 : } else
006e5 eb 34 jmp SHORT $LN40@stbi__gif_
$LN39@stbi__gif_:
; 7735 : return stbi__errpuc("missing color table", "Corrupt GIF");
006e7 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BE@NAMJKDNF@missing?5color?5table@
006ee e8 00 00 00 00 call stbi__err
006f3 85 c0 test eax, eax
006f5 74 0d je SHORT $LN63@stbi__gif_
006f7 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv315[rbp], 0
00702 eb 0b jmp SHORT $LN64@stbi__gif_
$LN63@stbi__gif_:
00704 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv315[rbp], 0
$LN64@stbi__gif_:
0070f 48 8b 85 38 02
00 00 mov rax, QWORD PTR tv315[rbp]
00716 e9 bb 02 00 00 jmp $LN1@stbi__gif_
$LN40@stbi__gif_:
$LN38@stbi__gif_:
; 7736 :
; 7737 : o = stbi__process_gif_raster(s, g);
0071b 48 8b 95 68 02
00 00 mov rdx, QWORD PTR g$[rbp]
00722 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00729 e8 00 00 00 00 call stbi__process_gif_raster
0072e 48 89 85 28 01
00 00 mov QWORD PTR o$6[rbp], rax
; 7738 : if (!o)
00735 48 83 bd 28 01
00 00 00 cmp QWORD PTR o$6[rbp], 0
0073d 75 07 jne SHORT $LN41@stbi__gif_
; 7739 : return NULL;
0073f 33 c0 xor eax, eax
00741 e9 90 02 00 00 jmp $LN1@stbi__gif_
$LN41@stbi__gif_:
; 7740 :
; 7741 : // if this was the first frame,
; 7742 : pcount = g->w * g->h;
00746 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0074d 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00754 8b 00 mov eax, DWORD PTR [rax]
00756 0f af 41 04 imul eax, DWORD PTR [rcx+4]
0075a 89 45 64 mov DWORD PTR pcount$[rbp], eax
; 7743 : if (first_frame && (g->bgindex > 0)) {
0075d 83 7d 24 00 cmp DWORD PTR first_frame$[rbp], 0
00761 0f 84 ae 00 00
00 je $LN42@stbi__gif_
00767 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0076e 83 78 24 00 cmp DWORD PTR [rax+36], 0
00772 0f 8e 9d 00 00
00 jle $LN42@stbi__gif_
; 7744 : // if first frame, any pixel not drawn to gets the background color
; 7745 : for (pi = 0; pi < pcount; ++pi) {
00778 c7 45 44 00 00
00 00 mov DWORD PTR pi$[rbp], 0
0077f eb 08 jmp SHORT $LN15@stbi__gif_
$LN13@stbi__gif_:
00781 8b 45 44 mov eax, DWORD PTR pi$[rbp]
00784 ff c0 inc eax
00786 89 45 44 mov DWORD PTR pi$[rbp], eax
$LN15@stbi__gif_:
00789 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
0078c 39 45 44 cmp DWORD PTR pi$[rbp], eax
0078f 0f 8d 80 00 00
00 jge $LN14@stbi__gif_
; 7746 : if (g->history[pi] == 0) {
00795 48 63 45 44 movsxd rax, DWORD PTR pi$[rbp]
00799 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
007a0 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
007a4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
007a8 85 c0 test eax, eax
007aa 75 64 jne SHORT $LN43@stbi__gif_
; 7747 : g->pal[g->bgindex][3] =
007ac 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
007b3 48 63 40 24 movsxd rax, DWORD PTR [rax+36]
007b7 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
007be 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
007c3 b9 01 00 00 00 mov ecx, 1
007c8 48 6b c9 03 imul rcx, rcx, 3
007cc c6 04 08 ff mov BYTE PTR [rax+rcx], 255 ; 000000ffH
; 7748 : 255; // just in case it was made transparent, undo that; It will be reset next frame if need be;
; 7749 : memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4);
007d0 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
007d7 48 63 40 24 movsxd rax, DWORD PTR [rax+36]
007db 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
007e2 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
007e7 8b 4d 44 mov ecx, DWORD PTR pi$[rbp]
007ea c1 e1 02 shl ecx, 2
007ed 48 63 c9 movsxd rcx, ecx
007f0 48 8b 95 68 02
00 00 mov rdx, QWORD PTR g$[rbp]
007f7 48 8b 52 08 mov rdx, QWORD PTR [rdx+8]
007fb 48 03 d1 add rdx, rcx
007fe 48 8b ca mov rcx, rdx
00801 41 b8 04 00 00
00 mov r8d, 4
00807 48 8b d0 mov rdx, rax
0080a e8 00 00 00 00 call memcpy
0080f 90 npad 1
$LN43@stbi__gif_:
; 7750 : }
; 7751 : }
00810 e9 6c ff ff ff jmp $LN13@stbi__gif_
$LN14@stbi__gif_:
$LN42@stbi__gif_:
; 7752 : }
; 7753 :
; 7754 : return o;
00815 48 8b 85 28 01
00 00 mov rax, QWORD PTR o$6[rbp]
0081c e9 b5 01 00 00 jmp $LN1@stbi__gif_
$LN44@stbi__gif_:
; 7755 : }
; 7756 :
; 7757 : case 0x21: // Comment Extension.
; 7758 : {
; 7759 : int len;
; 7760 : int ext = stbi__get8(s);
00821 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00828 e8 00 00 00 00 call stbi__get8
0082d 0f b6 c0 movzx eax, al
00830 89 85 64 01 00
00 mov DWORD PTR ext$8[rbp], eax
; 7761 : if (ext == 0xF9) { // Graphic Control Extension.
00836 81 bd 64 01 00
00 f9 00 00 00 cmp DWORD PTR ext$8[rbp], 249 ; 000000f9H
00840 0f 85 1c 01 00
00 jne $LN45@stbi__gif_
; 7762 : len = stbi__get8(s);
00846 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
0084d e8 00 00 00 00 call stbi__get8
00852 0f b6 c0 movzx eax, al
00855 89 85 44 01 00
00 mov DWORD PTR len$7[rbp], eax
; 7763 : if (len == 4) {
0085b 83 bd 44 01 00
00 04 cmp DWORD PTR len$7[rbp], 4
00862 0f 85 e5 00 00
00 jne $LN46@stbi__gif_
; 7764 : g->eflags = stbi__get8(s);
00868 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
0086f e8 00 00 00 00 call stbi__get8
00874 0f b6 c0 movzx eax, al
00877 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
0087e 89 41 30 mov DWORD PTR [rcx+48], eax
; 7765 : g->delay =
00881 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00888 e8 00 00 00 00 call stbi__get16le
0088d 6b c0 0a imul eax, eax, 10
00890 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00897 89 81 68 88 00
00 mov DWORD PTR [rcx+34920], eax
; 7766 : 10 *
; 7767 : stbi__get16le(
; 7768 : s); // delay - 1/100th of a second, saving as 1/1000ths.
; 7769 :
; 7770 : // unset old transparent
; 7771 : if (g->transparent >= 0) {
0089d 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
008a4 83 78 2c 00 cmp DWORD PTR [rax+44], 0
008a8 7c 24 jl SHORT $LN48@stbi__gif_
; 7772 : g->pal[g->transparent][3] = 255;
008aa 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
008b1 48 63 40 2c movsxd rax, DWORD PTR [rax+44]
008b5 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
008bc 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
008c1 b9 01 00 00 00 mov ecx, 1
008c6 48 6b c9 03 imul rcx, rcx, 3
008ca c6 04 08 ff mov BYTE PTR [rax+rcx], 255 ; 000000ffH
$LN48@stbi__gif_:
; 7773 : }
; 7774 : if (g->eflags & 0x01) {
008ce 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
008d5 8b 40 30 mov eax, DWORD PTR [rax+48]
008d8 83 e0 01 and eax, 1
008db 85 c0 test eax, eax
008dd 74 4c je SHORT $LN49@stbi__gif_
; 7775 : g->transparent = stbi__get8(s);
008df 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
008e6 e8 00 00 00 00 call stbi__get8
008eb 0f b6 c0 movzx eax, al
008ee 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
008f5 89 41 2c mov DWORD PTR [rcx+44], eax
; 7776 : if (g->transparent >= 0) {
008f8 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
008ff 83 78 2c 00 cmp DWORD PTR [rax+44], 0
00903 7c 24 jl SHORT $LN51@stbi__gif_
; 7777 : g->pal[g->transparent][3] = 0;
00905 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
0090c 48 63 40 2c movsxd rax, DWORD PTR [rax+44]
00910 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR g$[rbp]
00917 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
0091c b9 01 00 00 00 mov ecx, 1
00921 48 6b c9 03 imul rcx, rcx, 3
00925 c6 04 08 00 mov BYTE PTR [rax+rcx], 0
$LN51@stbi__gif_:
; 7778 : }
; 7779 : } else {
00929 eb 20 jmp SHORT $LN50@stbi__gif_
$LN49@stbi__gif_:
; 7780 : // don't need transparent
; 7781 : stbi__skip(s, 1);
0092b ba 01 00 00 00 mov edx, 1
00930 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00937 e8 00 00 00 00 call stbi__skip
0093c 90 npad 1
; 7782 : g->transparent = -1;
0093d 48 8b 85 68 02
00 00 mov rax, QWORD PTR g$[rbp]
00944 c7 40 2c ff ff
ff ff mov DWORD PTR [rax+44], -1
$LN50@stbi__gif_:
; 7783 : }
; 7784 : } else {
0094b eb 15 jmp SHORT $LN47@stbi__gif_
$LN46@stbi__gif_:
; 7785 : stbi__skip(s, len);
0094d 8b 95 44 01 00
00 mov edx, DWORD PTR len$7[rbp]
00953 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
0095a e8 00 00 00 00 call stbi__skip
0095f 90 npad 1
; 7786 : break;
00960 eb 6f jmp SHORT $LN11@stbi__gif_
$LN47@stbi__gif_:
$LN45@stbi__gif_:
$LN16@stbi__gif_:
; 7787 : }
; 7788 : }
; 7789 : while ((len = stbi__get8(s)) != 0) {
00962 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
00969 e8 00 00 00 00 call stbi__get8
0096e 0f b6 c0 movzx eax, al
00971 89 85 44 01 00
00 mov DWORD PTR len$7[rbp], eax
00977 83 bd 44 01 00
00 00 cmp DWORD PTR len$7[rbp], 0
0097e 74 15 je SHORT $LN17@stbi__gif_
; 7790 : stbi__skip(s, len);
00980 8b 95 44 01 00
00 mov edx, DWORD PTR len$7[rbp]
00986 48 8b 8d 60 02
00 00 mov rcx, QWORD PTR s$[rbp]
0098d e8 00 00 00 00 call stbi__skip
00992 90 npad 1
; 7791 : }
00993 eb cd jmp SHORT $LN16@stbi__gif_
$LN17@stbi__gif_:
; 7792 : break;
00995 eb 3a jmp SHORT $LN11@stbi__gif_
$LN52@stbi__gif_:
; 7793 : }
; 7794 :
; 7795 : case 0x3B: // gif stream termination code
; 7796 : return (stbi_uc *)s; // using '1' causes warning on some compilers
00997 48 8b 85 60 02
00 00 mov rax, QWORD PTR s$[rbp]
0099e eb 36 jmp SHORT $LN1@stbi__gif_
$LN53@stbi__gif_:
; 7797 :
; 7798 : default:
; 7799 : return stbi__errpuc("unknown code", "Corrupt GIF");
009a0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@DJABBOOH@unknown?5code@
009a7 e8 00 00 00 00 call stbi__err
009ac 85 c0 test eax, eax
009ae 74 0d je SHORT $LN65@stbi__gif_
009b0 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv409[rbp], 0
009bb eb 0b jmp SHORT $LN66@stbi__gif_
$LN65@stbi__gif_:
009bd 48 c7 85 38 02
00 00 00 00 00
00 mov QWORD PTR tv409[rbp], 0
$LN66@stbi__gif_:
009c8 48 8b 85 38 02
00 00 mov rax, QWORD PTR tv409[rbp]
009cf eb 05 jmp SHORT $LN1@stbi__gif_
$LN11@stbi__gif_:
; 7800 : }
; 7801 : }
009d1 e9 ae f9 ff ff jmp $LN8@stbi__gif_
$LN1@stbi__gif_:
; 7802 : }
009d6 48 8d a5 48 02
00 00 lea rsp, QWORD PTR [rbp+584]
009dd 5f pop rdi
009de 5d pop rbp
009df c3 ret 0
stbi__gif_load_next ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__process_gif_raster
_TEXT SEGMENT
lzw_cs$ = 4
len$ = 36
init_code$ = 68
first$ = 100
codesize$ = 132
codemask$ = 164
avail$ = 196
oldcode$ = 228
bits$ = 260
valid_bits$ = 292
clear$ = 324
p$ = 360
code$1 = 388
tv192 = 596
tv242 = 596
tv246 = 596
tv273 = 596
tv297 = 596
tv163 = 600
tv174 = 600
tv198 = 600
tv210 = 600
s$ = 640
g$ = 648
stbi__process_gif_raster PROC ; COMDAT
; 7530 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 88 02
00 00 sub rsp, 648 ; 00000288H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 7531 : stbi_uc lzw_cs;
; 7532 : stbi__int32 len, init_code;
; 7533 : stbi__uint32 first;
; 7534 : stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear;
; 7535 : stbi__gif_lzw *p;
; 7536 :
; 7537 : lzw_cs = stbi__get8(s);
00025 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR s$[rbp]
0002c e8 00 00 00 00 call stbi__get8
00031 88 45 04 mov BYTE PTR lzw_cs$[rbp], al
; 7538 : if (lzw_cs > 12)
00034 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
00038 83 f8 0c cmp eax, 12
0003b 7e 07 jle SHORT $LN10@stbi__proc
; 7539 : return NULL;
0003d 33 c0 xor eax, eax
0003f e9 a2 04 00 00 jmp $LN1@stbi__proc
$LN10@stbi__proc:
; 7540 : clear = 1 << lzw_cs;
00044 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
00048 b9 01 00 00 00 mov ecx, 1
0004d 89 8d 54 02 00
00 mov DWORD PTR tv242[rbp], ecx
00053 0f b6 c8 movzx ecx, al
00056 8b 85 54 02 00
00 mov eax, DWORD PTR tv242[rbp]
0005c d3 e0 shl eax, cl
0005e 89 85 44 01 00
00 mov DWORD PTR clear$[rbp], eax
; 7541 : first = 1;
00064 c7 45 64 01 00
00 00 mov DWORD PTR first$[rbp], 1
; 7542 : codesize = lzw_cs + 1;
0006b 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
0006f ff c0 inc eax
00071 89 85 84 00 00
00 mov DWORD PTR codesize$[rbp], eax
; 7543 : codemask = (1 << codesize) - 1;
00077 8b 85 84 00 00
00 mov eax, DWORD PTR codesize$[rbp]
0007d b9 01 00 00 00 mov ecx, 1
00082 89 8d 54 02 00
00 mov DWORD PTR tv246[rbp], ecx
00088 0f b6 c8 movzx ecx, al
0008b 8b 85 54 02 00
00 mov eax, DWORD PTR tv246[rbp]
00091 d3 e0 shl eax, cl
00093 ff c8 dec eax
00095 89 85 a4 00 00
00 mov DWORD PTR codemask$[rbp], eax
; 7544 : bits = 0;
0009b c7 85 04 01 00
00 00 00 00 00 mov DWORD PTR bits$[rbp], 0
; 7545 : valid_bits = 0;
000a5 c7 85 24 01 00
00 00 00 00 00 mov DWORD PTR valid_bits$[rbp], 0
; 7546 : for (init_code = 0; init_code < clear; init_code++) {
000af c7 45 44 00 00
00 00 mov DWORD PTR init_code$[rbp], 0
000b6 eb 08 jmp SHORT $LN4@stbi__proc
$LN2@stbi__proc:
000b8 8b 45 44 mov eax, DWORD PTR init_code$[rbp]
000bb ff c0 inc eax
000bd 89 45 44 mov DWORD PTR init_code$[rbp], eax
$LN4@stbi__proc:
000c0 8b 85 44 01 00
00 mov eax, DWORD PTR clear$[rbp]
000c6 39 45 44 cmp DWORD PTR init_code$[rbp], eax
000c9 7d 46 jge SHORT $LN3@stbi__proc
; 7547 : g->codes[init_code].prefix = -1;
000cb 48 63 45 44 movsxd rax, DWORD PTR init_code$[rbp]
000cf b9 ff ff ff ff mov ecx, -1
000d4 48 8b 95 88 02
00 00 mov rdx, QWORD PTR g$[rbp]
000db 66 89 8c 82 34
08 00 00 mov WORD PTR [rdx+rax*4+2100], cx
; 7548 : g->codes[init_code].first = (stbi_uc)init_code;
000e3 48 63 45 44 movsxd rax, DWORD PTR init_code$[rbp]
000e7 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR g$[rbp]
000ee 0f b6 55 44 movzx edx, BYTE PTR init_code$[rbp]
000f2 88 94 81 36 08
00 00 mov BYTE PTR [rcx+rax*4+2102], dl
; 7549 : g->codes[init_code].suffix = (stbi_uc)init_code;
000f9 48 63 45 44 movsxd rax, DWORD PTR init_code$[rbp]
000fd 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR g$[rbp]
00104 0f b6 55 44 movzx edx, BYTE PTR init_code$[rbp]
00108 88 94 81 37 08
00 00 mov BYTE PTR [rcx+rax*4+2103], dl
; 7550 : }
0010f eb a7 jmp SHORT $LN2@stbi__proc
$LN3@stbi__proc:
; 7551 :
; 7552 : // support no starting clear code
; 7553 : avail = clear + 2;
00111 8b 85 44 01 00
00 mov eax, DWORD PTR clear$[rbp]
00117 83 c0 02 add eax, 2
0011a 89 85 c4 00 00
00 mov DWORD PTR avail$[rbp], eax
; 7554 : oldcode = -1;
00120 c7 85 e4 00 00
00 ff ff ff ff mov DWORD PTR oldcode$[rbp], -1
; 7555 :
; 7556 : len = 0;
0012a c7 45 24 00 00
00 00 mov DWORD PTR len$[rbp], 0
$LN5@stbi__proc:
; 7557 : for (;;) {
; 7558 : if (valid_bits < codesize) {
00131 8b 85 84 00 00
00 mov eax, DWORD PTR codesize$[rbp]
00137 39 85 24 01 00
00 cmp DWORD PTR valid_bits$[rbp], eax
0013d 7d 71 jge SHORT $LN11@stbi__proc
; 7559 : if (len == 0) {
0013f 83 7d 24 00 cmp DWORD PTR len$[rbp], 0
00143 75 28 jne SHORT $LN13@stbi__proc
; 7560 : len = stbi__get8(s); // start new block
00145 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR s$[rbp]
0014c e8 00 00 00 00 call stbi__get8
00151 0f b6 c0 movzx eax, al
00154 89 45 24 mov DWORD PTR len$[rbp], eax
; 7561 : if (len == 0)
00157 83 7d 24 00 cmp DWORD PTR len$[rbp], 0
0015b 75 10 jne SHORT $LN14@stbi__proc
; 7562 : return g->out;
0015d 48 8b 85 88 02
00 00 mov rax, QWORD PTR g$[rbp]
00164 48 8b 40 08 mov rax, QWORD PTR [rax+8]
00168 e9 79 03 00 00 jmp $LN1@stbi__proc
$LN14@stbi__proc:
$LN13@stbi__proc:
; 7563 : }
; 7564 : --len;
0016d 8b 45 24 mov eax, DWORD PTR len$[rbp]
00170 ff c8 dec eax
00172 89 45 24 mov DWORD PTR len$[rbp], eax
; 7565 : bits |= (stbi__int32)stbi__get8(s) << valid_bits;
00175 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR s$[rbp]
0017c e8 00 00 00 00 call stbi__get8
00181 0f b6 c0 movzx eax, al
00184 8b 8d 24 01 00
00 mov ecx, DWORD PTR valid_bits$[rbp]
0018a d3 e0 shl eax, cl
0018c 8b 8d 04 01 00
00 mov ecx, DWORD PTR bits$[rbp]
00192 0b c8 or ecx, eax
00194 8b c1 mov eax, ecx
00196 89 85 04 01 00
00 mov DWORD PTR bits$[rbp], eax
; 7566 : valid_bits += 8;
0019c 8b 85 24 01 00
00 mov eax, DWORD PTR valid_bits$[rbp]
001a2 83 c0 08 add eax, 8
001a5 89 85 24 01 00
00 mov DWORD PTR valid_bits$[rbp], eax
; 7567 : } else {
001ab e9 31 03 00 00 jmp $LN12@stbi__proc
$LN11@stbi__proc:
; 7568 : stbi__int32 code = bits & codemask;
001b0 8b 85 a4 00 00
00 mov eax, DWORD PTR codemask$[rbp]
001b6 8b 8d 04 01 00
00 mov ecx, DWORD PTR bits$[rbp]
001bc 23 c8 and ecx, eax
001be 8b c1 mov eax, ecx
001c0 89 85 84 01 00
00 mov DWORD PTR code$1[rbp], eax
; 7569 : bits >>= codesize;
001c6 8b 85 84 00 00
00 mov eax, DWORD PTR codesize$[rbp]
001cc 0f b6 c8 movzx ecx, al
001cf 8b 85 04 01 00
00 mov eax, DWORD PTR bits$[rbp]
001d5 d3 f8 sar eax, cl
001d7 89 85 04 01 00
00 mov DWORD PTR bits$[rbp], eax
; 7570 : valid_bits -= codesize;
001dd 8b 85 84 00 00
00 mov eax, DWORD PTR codesize$[rbp]
001e3 8b 8d 24 01 00
00 mov ecx, DWORD PTR valid_bits$[rbp]
001e9 2b c8 sub ecx, eax
001eb 8b c1 mov eax, ecx
001ed 89 85 24 01 00
00 mov DWORD PTR valid_bits$[rbp], eax
; 7571 : // @OPTIMIZE: is there some way we can accelerate the non-clear path?
; 7572 : if (code == clear) { // clear code
001f3 8b 85 44 01 00
00 mov eax, DWORD PTR clear$[rbp]
001f9 39 85 84 01 00
00 cmp DWORD PTR code$1[rbp], eax
001ff 75 55 jne SHORT $LN15@stbi__proc
; 7573 : codesize = lzw_cs + 1;
00201 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
00205 ff c0 inc eax
00207 89 85 84 00 00
00 mov DWORD PTR codesize$[rbp], eax
; 7574 : codemask = (1 << codesize) - 1;
0020d 8b 85 84 00 00
00 mov eax, DWORD PTR codesize$[rbp]
00213 b9 01 00 00 00 mov ecx, 1
00218 89 8d 54 02 00
00 mov DWORD PTR tv273[rbp], ecx
0021e 0f b6 c8 movzx ecx, al
00221 8b 85 54 02 00
00 mov eax, DWORD PTR tv273[rbp]
00227 d3 e0 shl eax, cl
00229 ff c8 dec eax
0022b 89 85 a4 00 00
00 mov DWORD PTR codemask$[rbp], eax
; 7575 : avail = clear + 2;
00231 8b 85 44 01 00
00 mov eax, DWORD PTR clear$[rbp]
00237 83 c0 02 add eax, 2
0023a 89 85 c4 00 00
00 mov DWORD PTR avail$[rbp], eax
; 7576 : oldcode = -1;
00240 c7 85 e4 00 00
00 ff ff ff ff mov DWORD PTR oldcode$[rbp], -1
; 7577 : first = 0;
0024a c7 45 64 00 00
00 00 mov DWORD PTR first$[rbp], 0
00251 e9 8b 02 00 00 jmp $LN16@stbi__proc
$LN15@stbi__proc:
; 7578 : } else if (code == clear + 1) { // end of stream code
00256 8b 85 44 01 00
00 mov eax, DWORD PTR clear$[rbp]
0025c ff c0 inc eax
0025e 39 85 84 01 00
00 cmp DWORD PTR code$1[rbp], eax
00264 75 4f jne SHORT $LN17@stbi__proc
; 7579 : stbi__skip(s, len);
00266 8b 55 24 mov edx, DWORD PTR len$[rbp]
00269 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR s$[rbp]
00270 e8 00 00 00 00 call stbi__skip
00275 90 npad 1
$LN8@stbi__proc:
; 7580 : while ((len = stbi__get8(s)) > 0)
00276 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR s$[rbp]
0027d e8 00 00 00 00 call stbi__get8
00282 0f b6 c0 movzx eax, al
00285 89 45 24 mov DWORD PTR len$[rbp], eax
00288 83 7d 24 00 cmp DWORD PTR len$[rbp], 0
0028c 7e 12 jle SHORT $LN9@stbi__proc
; 7581 : stbi__skip(s, len);
0028e 8b 55 24 mov edx, DWORD PTR len$[rbp]
00291 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR s$[rbp]
00298 e8 00 00 00 00 call stbi__skip
0029d 90 npad 1
0029e eb d6 jmp SHORT $LN8@stbi__proc
$LN9@stbi__proc:
; 7582 : return g->out;
002a0 48 8b 85 88 02
00 00 mov rax, QWORD PTR g$[rbp]
002a7 48 8b 40 08 mov rax, QWORD PTR [rax+8]
002ab e9 36 02 00 00 jmp $LN1@stbi__proc
002b0 e9 2c 02 00 00 jmp $LN18@stbi__proc
$LN17@stbi__proc:
; 7583 : } else if (code <= avail) {
002b5 8b 85 c4 00 00
00 mov eax, DWORD PTR avail$[rbp]
002bb 39 85 84 01 00
00 cmp DWORD PTR code$1[rbp], eax
002c1 0f 8f e9 01 00
00 jg $LN19@stbi__proc
; 7584 : if (first) {
002c7 83 7d 64 00 cmp DWORD PTR first$[rbp], 0
002cb 74 34 je SHORT $LN21@stbi__proc
; 7585 : return stbi__errpuc("no clear code", "Corrupt GIF");
002cd 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@MGDACKOJ@no?5clear?5code@
002d4 e8 00 00 00 00 call stbi__err
002d9 85 c0 test eax, eax
002db 74 0d je SHORT $LN28@stbi__proc
002dd 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv163[rbp], 0
002e8 eb 0b jmp SHORT $LN29@stbi__proc
$LN28@stbi__proc:
002ea 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv163[rbp], 0
$LN29@stbi__proc:
002f5 48 8b 85 58 02
00 00 mov rax, QWORD PTR tv163[rbp]
002fc e9 e5 01 00 00 jmp $LN1@stbi__proc
$LN21@stbi__proc:
; 7586 : }
; 7587 :
; 7588 : if (oldcode >= 0) {
00301 83 bd e4 00 00
00 00 cmp DWORD PTR oldcode$[rbp], 0
00308 0f 8c ec 00 00
00 jl $LN22@stbi__proc
; 7589 : p = &g->codes[avail++];
0030e 48 63 85 c4 00
00 00 movsxd rax, DWORD PTR avail$[rbp]
00315 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR g$[rbp]
0031c 48 8d 84 81 34
08 00 00 lea rax, QWORD PTR [rcx+rax*4+2100]
00324 48 89 85 68 01
00 00 mov QWORD PTR p$[rbp], rax
0032b 8b 85 c4 00 00
00 mov eax, DWORD PTR avail$[rbp]
00331 ff c0 inc eax
00333 89 85 c4 00 00
00 mov DWORD PTR avail$[rbp], eax
; 7590 : if (avail > 8192) {
00339 81 bd c4 00 00
00 00 20 00 00 cmp DWORD PTR avail$[rbp], 8192 ; 00002000H
00343 7e 34 jle SHORT $LN24@stbi__proc
; 7591 : return stbi__errpuc("too many codes",
00345 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@GJNJCPDJ@too?5many?5codes@
0034c e8 00 00 00 00 call stbi__err
00351 85 c0 test eax, eax
00353 74 0d je SHORT $LN30@stbi__proc
00355 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv174[rbp], 0
00360 eb 0b jmp SHORT $LN31@stbi__proc
$LN30@stbi__proc:
00362 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv174[rbp], 0
$LN31@stbi__proc:
0036d 48 8b 85 58 02
00 00 mov rax, QWORD PTR tv174[rbp]
00374 e9 6d 01 00 00 jmp $LN1@stbi__proc
$LN24@stbi__proc:
; 7592 : "Corrupt GIF");
; 7593 : }
; 7594 :
; 7595 : p->prefix = (stbi__int16)oldcode;
00379 48 8b 85 68 01
00 00 mov rax, QWORD PTR p$[rbp]
00380 0f b7 8d e4 00
00 00 movzx ecx, WORD PTR oldcode$[rbp]
00387 66 89 08 mov WORD PTR [rax], cx
; 7596 : p->first = g->codes[oldcode].first;
0038a 48 63 85 e4 00
00 00 movsxd rax, DWORD PTR oldcode$[rbp]
00391 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR p$[rbp]
00398 48 8b 95 88 02
00 00 mov rdx, QWORD PTR g$[rbp]
0039f 0f b6 84 82 36
08 00 00 movzx eax, BYTE PTR [rdx+rax*4+2102]
003a7 88 41 02 mov BYTE PTR [rcx+2], al
; 7597 : p->suffix = (code == avail) ? p->first :
003aa 8b 85 c4 00 00
00 mov eax, DWORD PTR avail$[rbp]
003b0 39 85 84 01 00
00 cmp DWORD PTR code$1[rbp], eax
003b6 75 13 jne SHORT $LN32@stbi__proc
003b8 48 8b 85 68 01
00 00 mov rax, QWORD PTR p$[rbp]
003bf 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
003c3 89 85 54 02 00
00 mov DWORD PTR tv192[rbp], eax
003c9 eb 1c jmp SHORT $LN33@stbi__proc
$LN32@stbi__proc:
003cb 48 63 85 84 01
00 00 movsxd rax, DWORD PTR code$1[rbp]
003d2 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR g$[rbp]
003d9 0f b6 84 81 36
08 00 00 movzx eax, BYTE PTR [rcx+rax*4+2102]
003e1 89 85 54 02 00
00 mov DWORD PTR tv192[rbp], eax
$LN33@stbi__proc:
003e7 48 8b 85 68 01
00 00 mov rax, QWORD PTR p$[rbp]
003ee 0f b6 8d 54 02
00 00 movzx ecx, BYTE PTR tv192[rbp]
003f5 88 48 03 mov BYTE PTR [rax+3], cl
003f8 eb 42 jmp SHORT $LN23@stbi__proc
$LN22@stbi__proc:
; 7598 : g->codes[code].first;
; 7599 : } else if (code == avail)
003fa 8b 85 c4 00 00
00 mov eax, DWORD PTR avail$[rbp]
00400 39 85 84 01 00
00 cmp DWORD PTR code$1[rbp], eax
00406 75 34 jne SHORT $LN25@stbi__proc
; 7600 : return stbi__errpuc("illegal code in raster",
00408 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@
0040f e8 00 00 00 00 call stbi__err
00414 85 c0 test eax, eax
00416 74 0d je SHORT $LN34@stbi__proc
00418 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv198[rbp], 0
00423 eb 0b jmp SHORT $LN35@stbi__proc
$LN34@stbi__proc:
00425 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv198[rbp], 0
$LN35@stbi__proc:
00430 48 8b 85 58 02
00 00 mov rax, QWORD PTR tv198[rbp]
00437 e9 aa 00 00 00 jmp $LN1@stbi__proc
$LN25@stbi__proc:
$LN23@stbi__proc:
; 7601 : "Corrupt GIF");
; 7602 :
; 7603 : stbi__out_gif_code(g, (stbi__uint16)code);
0043c 0f b7 95 84 01
00 00 movzx edx, WORD PTR code$1[rbp]
00443 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR g$[rbp]
0044a e8 00 00 00 00 call stbi__out_gif_code
0044f 90 npad 1
; 7604 :
; 7605 : if ((avail & codemask) == 0 && avail <= 0x0FFF) {
00450 8b 85 a4 00 00
00 mov eax, DWORD PTR codemask$[rbp]
00456 8b 8d c4 00 00
00 mov ecx, DWORD PTR avail$[rbp]
0045c 23 c8 and ecx, eax
0045e 8b c1 mov eax, ecx
00460 85 c0 test eax, eax
00462 75 3e jne SHORT $LN26@stbi__proc
00464 81 bd c4 00 00
00 ff 0f 00 00 cmp DWORD PTR avail$[rbp], 4095 ; 00000fffH
0046e 7f 32 jg SHORT $LN26@stbi__proc
; 7606 : codesize++;
00470 8b 85 84 00 00
00 mov eax, DWORD PTR codesize$[rbp]
00476 ff c0 inc eax
00478 89 85 84 00 00
00 mov DWORD PTR codesize$[rbp], eax
; 7607 : codemask = (1 << codesize) - 1;
0047e 8b 85 84 00 00
00 mov eax, DWORD PTR codesize$[rbp]
00484 b9 01 00 00 00 mov ecx, 1
00489 89 8d 54 02 00
00 mov DWORD PTR tv297[rbp], ecx
0048f 0f b6 c8 movzx ecx, al
00492 8b 85 54 02 00
00 mov eax, DWORD PTR tv297[rbp]
00498 d3 e0 shl eax, cl
0049a ff c8 dec eax
0049c 89 85 a4 00 00
00 mov DWORD PTR codemask$[rbp], eax
$LN26@stbi__proc:
; 7608 : }
; 7609 :
; 7610 : oldcode = code;
004a2 8b 85 84 01 00
00 mov eax, DWORD PTR code$1[rbp]
004a8 89 85 e4 00 00
00 mov DWORD PTR oldcode$[rbp], eax
; 7611 : } else {
004ae eb 31 jmp SHORT $LN20@stbi__proc
$LN19@stbi__proc:
; 7612 : return stbi__errpuc("illegal code in raster", "Corrupt GIF");
004b0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@
004b7 e8 00 00 00 00 call stbi__err
004bc 85 c0 test eax, eax
004be 74 0d je SHORT $LN36@stbi__proc
004c0 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv210[rbp], 0
004cb eb 0b jmp SHORT $LN37@stbi__proc
$LN36@stbi__proc:
004cd 48 c7 85 58 02
00 00 00 00 00
00 mov QWORD PTR tv210[rbp], 0
$LN37@stbi__proc:
004d8 48 8b 85 58 02
00 00 mov rax, QWORD PTR tv210[rbp]
004df eb 05 jmp SHORT $LN1@stbi__proc
$LN20@stbi__proc:
$LN18@stbi__proc:
$LN16@stbi__proc:
$LN12@stbi__proc:
; 7613 : }
; 7614 : }
; 7615 : }
004e1 e9 4b fc ff ff jmp $LN5@stbi__proc
$LN1@stbi__proc:
; 7616 : }
004e6 48 8d a5 68 02
00 00 lea rsp, QWORD PTR [rbp+616]
004ed 5f pop rdi
004ee 5d pop rbp
004ef c3 ret 0
stbi__process_gif_raster ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__out_gif_code
_TEXT SEGMENT
p$ = 8
c$ = 40
idx$ = 68
tv257 = 276
g$ = 320
code$ = 328
stbi__out_gif_code PROC ; COMDAT
; 7492 : {
00000 66 89 54 24 10 mov WORD PTR [rsp+16], dx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 7493 : stbi_uc *p, *c;
; 7494 : int idx;
; 7495 :
; 7496 : // recurse to decode the prefixes, since the linked-list is backwards,
; 7497 : // and working backwards through an interleaved image would be nasty
; 7498 : if (g->codes[code].prefix >= 0)
00025 0f b7 85 48 01
00 00 movzx eax, WORD PTR code$[rbp]
0002c 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00033 0f bf 84 81 34
08 00 00 movsx eax, WORD PTR [rcx+rax*4+2100]
0003b 85 c0 test eax, eax
0003d 7c 23 jl SHORT $LN4@stbi__out_
; 7499 : stbi__out_gif_code(g, g->codes[code].prefix);
0003f 0f b7 85 48 01
00 00 movzx eax, WORD PTR code$[rbp]
00046 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
0004d 0f b7 94 81 34
08 00 00 movzx edx, WORD PTR [rcx+rax*4+2100]
00055 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
0005c e8 00 00 00 00 call stbi__out_gif_code
00061 90 npad 1
$LN4@stbi__out_:
; 7500 :
; 7501 : if (g->cur_y >= g->max_y)
00062 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
00069 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00070 8b 89 58 88 00
00 mov ecx, DWORD PTR [rcx+34904]
00076 39 88 60 88 00
00 cmp DWORD PTR [rax+34912], ecx
0007c 7c 05 jl SHORT $LN5@stbi__out_
; 7502 : return;
0007e e9 64 02 00 00 jmp $LN1@stbi__out_
$LN5@stbi__out_:
; 7503 :
; 7504 : idx = g->cur_x + g->cur_y;
00083 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
0008a 8b 80 5c 88 00
00 mov eax, DWORD PTR [rax+34908]
00090 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00097 03 81 60 88 00
00 add eax, DWORD PTR [rcx+34912]
0009d 89 45 44 mov DWORD PTR idx$[rbp], eax
; 7505 : p = &g->out[idx];
000a0 48 63 45 44 movsxd rax, DWORD PTR idx$[rbp]
000a4 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
000ab 48 8b 49 08 mov rcx, QWORD PTR [rcx+8]
000af 48 03 c8 add rcx, rax
000b2 48 8b c1 mov rax, rcx
000b5 48 89 45 08 mov QWORD PTR p$[rbp], rax
; 7506 : g->history[idx / 4] = 1;
000b9 8b 45 44 mov eax, DWORD PTR idx$[rbp]
000bc 99 cdq
000bd 83 e2 03 and edx, 3
000c0 03 c2 add eax, edx
000c2 c1 f8 02 sar eax, 2
000c5 48 98 cdqe
000c7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
000ce 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
000d2 c6 04 01 01 mov BYTE PTR [rcx+rax], 1
; 7507 :
; 7508 : c = &g->color_table[g->codes[code].suffix * 4];
000d6 0f b7 85 48 01
00 00 movzx eax, WORD PTR code$[rbp]
000dd 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
000e4 0f b6 84 81 37
08 00 00 movzx eax, BYTE PTR [rcx+rax*4+2103]
000ec c1 e0 02 shl eax, 2
000ef 48 98 cdqe
000f1 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
000f8 48 8b 89 38 88
00 00 mov rcx, QWORD PTR [rcx+34872]
000ff 48 03 c8 add rcx, rax
00102 48 8b c1 mov rax, rcx
00105 48 89 45 28 mov QWORD PTR c$[rbp], rax
; 7509 : if (c[3] > 128) { // don't render transparent pixels;
00109 b8 01 00 00 00 mov eax, 1
0010e 48 6b c0 03 imul rax, rax, 3
00112 48 8b 4d 28 mov rcx, QWORD PTR c$[rbp]
00116 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0011a 3d 80 00 00 00 cmp eax, 128 ; 00000080H
0011f 0f 8e 88 00 00
00 jle $LN6@stbi__out_
; 7510 : p[0] = c[2];
00125 b8 01 00 00 00 mov eax, 1
0012a 48 6b c0 02 imul rax, rax, 2
0012e b9 01 00 00 00 mov ecx, 1
00133 48 6b c9 00 imul rcx, rcx, 0
00137 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
0013b 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
0013f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00144 88 04 0a mov BYTE PTR [rdx+rcx], al
; 7511 : p[1] = c[1];
00147 b8 01 00 00 00 mov eax, 1
0014c 48 6b c0 01 imul rax, rax, 1
00150 b9 01 00 00 00 mov ecx, 1
00155 48 6b c9 01 imul rcx, rcx, 1
00159 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
0015d 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
00161 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00166 88 04 0a mov BYTE PTR [rdx+rcx], al
; 7512 : p[2] = c[0];
00169 b8 01 00 00 00 mov eax, 1
0016e 48 6b c0 00 imul rax, rax, 0
00172 b9 01 00 00 00 mov ecx, 1
00177 48 6b c9 02 imul rcx, rcx, 2
0017b 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
0017f 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
00183 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00188 88 04 0a mov BYTE PTR [rdx+rcx], al
; 7513 : p[3] = c[3];
0018b b8 01 00 00 00 mov eax, 1
00190 48 6b c0 03 imul rax, rax, 3
00194 b9 01 00 00 00 mov ecx, 1
00199 48 6b c9 03 imul rcx, rcx, 3
0019d 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
001a1 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
001a5 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
001aa 88 04 0a mov BYTE PTR [rdx+rcx], al
$LN6@stbi__out_:
; 7514 : }
; 7515 : g->cur_x += 4;
001ad 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
001b4 8b 80 5c 88 00
00 mov eax, DWORD PTR [rax+34908]
001ba 83 c0 04 add eax, 4
001bd 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
001c4 89 81 5c 88 00
00 mov DWORD PTR [rcx+34908], eax
; 7516 :
; 7517 : if (g->cur_x >= g->max_x) {
001ca 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
001d1 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
001d8 8b 89 54 88 00
00 mov ecx, DWORD PTR [rcx+34900]
001de 39 88 5c 88 00
00 cmp DWORD PTR [rax+34908], ecx
001e4 0f 8c fd 00 00
00 jl $LN7@stbi__out_
; 7518 : g->cur_x = g->start_x;
001ea 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
001f1 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
001f8 8b 89 4c 88 00
00 mov ecx, DWORD PTR [rcx+34892]
001fe 89 88 5c 88 00
00 mov DWORD PTR [rax+34908], ecx
; 7519 : g->cur_y += g->step;
00204 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
0020b 8b 80 60 88 00
00 mov eax, DWORD PTR [rax+34912]
00211 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00218 03 81 44 88 00
00 add eax, DWORD PTR [rcx+34884]
0021e 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00225 89 81 60 88 00
00 mov DWORD PTR [rcx+34912], eax
$LN2@stbi__out_:
; 7520 :
; 7521 : while (g->cur_y >= g->max_y && g->parse > 0) {
0022b 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
00232 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00239 8b 89 58 88 00
00 mov ecx, DWORD PTR [rcx+34904]
0023f 39 88 60 88 00
00 cmp DWORD PTR [rax+34912], ecx
00245 0f 8c 9c 00 00
00 jl $LN3@stbi__out_
0024b 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
00252 83 b8 40 88 00
00 00 cmp DWORD PTR [rax+34880], 0
00259 0f 8e 88 00 00
00 jle $LN3@stbi__out_
; 7522 : g->step = (1 << g->parse) * g->line_size;
0025f 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
00266 8b 80 40 88 00
00 mov eax, DWORD PTR [rax+34880]
0026c b9 01 00 00 00 mov ecx, 1
00271 89 8d 14 01 00
00 mov DWORD PTR tv257[rbp], ecx
00277 0f b6 c8 movzx ecx, al
0027a 8b 85 14 01 00
00 mov eax, DWORD PTR tv257[rbp]
00280 d3 e0 shl eax, cl
00282 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00289 0f af 81 64 88
00 00 imul eax, DWORD PTR [rcx+34916]
00290 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
00297 89 81 44 88 00
00 mov DWORD PTR [rcx+34884], eax
; 7523 : g->cur_y = g->start_y + (g->step >> 1);
0029d 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
002a4 8b 80 44 88 00
00 mov eax, DWORD PTR [rax+34884]
002aa d1 f8 sar eax, 1
002ac 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
002b3 03 81 50 88 00
00 add eax, DWORD PTR [rcx+34896]
002b9 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
002c0 89 81 60 88 00
00 mov DWORD PTR [rcx+34912], eax
; 7524 : --g->parse;
002c6 48 8b 85 40 01
00 00 mov rax, QWORD PTR g$[rbp]
002cd 8b 80 40 88 00
00 mov eax, DWORD PTR [rax+34880]
002d3 ff c8 dec eax
002d5 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR g$[rbp]
002dc 89 81 40 88 00
00 mov DWORD PTR [rcx+34880], eax
; 7525 : }
002e2 e9 44 ff ff ff jmp $LN2@stbi__out_
$LN3@stbi__out_:
$LN7@stbi__out_:
$LN1@stbi__out_:
; 7526 : }
; 7527 : }
002e7 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
002ee 5f pop rdi
002ef 5d pop rbp
002f0 c3 ret 0
stbi__out_gif_code ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_info_raw
_TEXT SEGMENT
g$ = 8
s$ = 256
x$ = 264
y$ = 272
comp$ = 280
stbi__gif_info_raw PROC ; COMDAT
; 7474 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 7475 : stbi__gif *g = (stbi__gif *)stbi__malloc(sizeof(stbi__gif));
0002f b9 70 88 00 00 mov ecx, 34928 ; 00008870H
00034 e8 00 00 00 00 call stbi__malloc
00039 48 89 45 08 mov QWORD PTR g$[rbp], rax
; 7476 : if (!g)
0003d 48 83 7d 08 00 cmp QWORD PTR g$[rbp], 0
00042 75 11 jne SHORT $LN2@stbi__gif_
; 7477 : return stbi__err("outofmem", "Out of memory");
00044 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0004b e8 00 00 00 00 call stbi__err
00050 e9 80 00 00 00 jmp $LN1@stbi__gif_
$LN2@stbi__gif_:
; 7478 : if (!stbi__gif_header(s, g, comp, 1)) {
00055 41 b9 01 00 00
00 mov r9d, 1
0005b 4c 8b 85 18 01
00 00 mov r8, QWORD PTR comp$[rbp]
00062 48 8b 55 08 mov rdx, QWORD PTR g$[rbp]
00066 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0006d e8 00 00 00 00 call stbi__gif_header
00072 85 c0 test eax, eax
00074 75 1c jne SHORT $LN3@stbi__gif_
; 7479 : STBI_FREE(g);
00076 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
0007a ff 15 00 00 00
00 call QWORD PTR __imp_free
00080 90 npad 1
; 7480 : stbi__rewind(s);
00081 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00088 e8 00 00 00 00 call stbi__rewind
0008d 90 npad 1
; 7481 : return 0;
0008e 33 c0 xor eax, eax
00090 eb 43 jmp SHORT $LN1@stbi__gif_
$LN3@stbi__gif_:
; 7482 : }
; 7483 : if (x)
00092 48 83 bd 08 01
00 00 00 cmp QWORD PTR x$[rbp], 0
0009a 74 0f je SHORT $LN4@stbi__gif_
; 7484 : *x = g->w;
0009c 48 8b 85 08 01
00 00 mov rax, QWORD PTR x$[rbp]
000a3 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
000a7 8b 09 mov ecx, DWORD PTR [rcx]
000a9 89 08 mov DWORD PTR [rax], ecx
$LN4@stbi__gif_:
; 7485 : if (y)
000ab 48 83 bd 10 01
00 00 00 cmp QWORD PTR y$[rbp], 0
000b3 74 10 je SHORT $LN5@stbi__gif_
; 7486 : *y = g->h;
000b5 48 8b 85 10 01
00 00 mov rax, QWORD PTR y$[rbp]
000bc 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
000c0 8b 49 04 mov ecx, DWORD PTR [rcx+4]
000c3 89 08 mov DWORD PTR [rax], ecx
$LN5@stbi__gif_:
; 7487 : STBI_FREE(g);
000c5 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
000c9 ff 15 00 00 00
00 call QWORD PTR __imp_free
000cf 90 npad 1
; 7488 : return 1;
000d0 b8 01 00 00 00 mov eax, 1
$LN1@stbi__gif_:
; 7489 : }
000d5 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000dc 5f pop rdi
000dd 5d pop rbp
000de c3 ret 0
stbi__gif_info_raw ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_header
_TEXT SEGMENT
version$ = 4
tv225 = 212
s$ = 256
g$ = 264
comp$ = 272
is_info$ = 280
stbi__gif_header PROC ; COMDAT
; 7436 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 7437 : stbi_uc version;
; 7438 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' ||
0002f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__get8
0003b 0f b6 c0 movzx eax, al
0003e 83 f8 47 cmp eax, 71 ; 00000047H
00041 75 3c jne SHORT $LN3@stbi__gif_
00043 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0004a e8 00 00 00 00 call stbi__get8
0004f 0f b6 c0 movzx eax, al
00052 83 f8 49 cmp eax, 73 ; 00000049H
00055 75 28 jne SHORT $LN3@stbi__gif_
00057 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0005e e8 00 00 00 00 call stbi__get8
00063 0f b6 c0 movzx eax, al
00066 83 f8 46 cmp eax, 70 ; 00000046H
00069 75 14 jne SHORT $LN3@stbi__gif_
0006b 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00072 e8 00 00 00 00 call stbi__get8
00077 0f b6 c0 movzx eax, al
0007a 83 f8 38 cmp eax, 56 ; 00000038H
0007d 74 11 je SHORT $LN2@stbi__gif_
$LN3@stbi__gif_:
; 7439 : stbi__get8(s) != '8')
; 7440 : return stbi__err("not GIF", "Corrupt GIF");
0007f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
00086 e8 00 00 00 00 call stbi__err
0008b e9 c7 01 00 00 jmp $LN1@stbi__gif_
$LN2@stbi__gif_:
; 7441 :
; 7442 : version = stbi__get8(s);
00090 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00097 e8 00 00 00 00 call stbi__get8
0009c 88 45 04 mov BYTE PTR version$[rbp], al
; 7443 : if (version != '7' && version != '9')
0009f 0f b6 45 04 movzx eax, BYTE PTR version$[rbp]
000a3 83 f8 37 cmp eax, 55 ; 00000037H
000a6 74 1a je SHORT $LN4@stbi__gif_
000a8 0f b6 45 04 movzx eax, BYTE PTR version$[rbp]
000ac 83 f8 39 cmp eax, 57 ; 00000039H
000af 74 11 je SHORT $LN4@stbi__gif_
; 7444 : return stbi__err("not GIF", "Corrupt GIF");
000b1 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
000b8 e8 00 00 00 00 call stbi__err
000bd e9 95 01 00 00 jmp $LN1@stbi__gif_
$LN4@stbi__gif_:
; 7445 : if (stbi__get8(s) != 'a')
000c2 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c9 e8 00 00 00 00 call stbi__get8
000ce 0f b6 c0 movzx eax, al
000d1 83 f8 61 cmp eax, 97 ; 00000061H
000d4 74 11 je SHORT $LN5@stbi__gif_
; 7446 : return stbi__err("not GIF", "Corrupt GIF");
000d6 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
000dd e8 00 00 00 00 call stbi__err
000e2 e9 70 01 00 00 jmp $LN1@stbi__gif_
$LN5@stbi__gif_:
; 7447 :
; 7448 : stbi__g_failure_reason = "";
000e7 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__g_failure_reason
000ec 8b c0 mov eax, eax
000ee 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
000f4 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
000fd 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00101 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_00CNPNBAHC@@
00108 48 89 14 08 mov QWORD PTR [rax+rcx], rdx
; 7449 : g->w = stbi__get16le(s);
0010c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00113 e8 00 00 00 00 call stbi__get16le
00118 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR g$[rbp]
0011f 89 01 mov DWORD PTR [rcx], eax
; 7450 : g->h = stbi__get16le(s);
00121 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00128 e8 00 00 00 00 call stbi__get16le
0012d 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR g$[rbp]
00134 89 41 04 mov DWORD PTR [rcx+4], eax
; 7451 : g->flags = stbi__get8(s);
00137 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0013e e8 00 00 00 00 call stbi__get8
00143 0f b6 c0 movzx eax, al
00146 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR g$[rbp]
0014d 89 41 20 mov DWORD PTR [rcx+32], eax
; 7452 : g->bgindex = stbi__get8(s);
00150 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00157 e8 00 00 00 00 call stbi__get8
0015c 0f b6 c0 movzx eax, al
0015f 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR g$[rbp]
00166 89 41 24 mov DWORD PTR [rcx+36], eax
; 7453 : g->ratio = stbi__get8(s);
00169 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00170 e8 00 00 00 00 call stbi__get8
00175 0f b6 c0 movzx eax, al
00178 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR g$[rbp]
0017f 89 41 28 mov DWORD PTR [rcx+40], eax
; 7454 : g->transparent = -1;
00182 48 8b 85 08 01
00 00 mov rax, QWORD PTR g$[rbp]
00189 c7 40 2c ff ff
ff ff mov DWORD PTR [rax+44], -1
; 7455 :
; 7456 : if (g->w > STBI_MAX_DIMENSIONS)
00190 48 8b 85 08 01
00 00 mov rax, QWORD PTR g$[rbp]
00197 81 38 00 00 00
01 cmp DWORD PTR [rax], 16777216 ; 01000000H
0019d 7e 11 jle SHORT $LN6@stbi__gif_
; 7457 : return stbi__err("too large", "Very large image (corrupt?)");
0019f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
001a6 e8 00 00 00 00 call stbi__err
001ab e9 a7 00 00 00 jmp $LN1@stbi__gif_
$LN6@stbi__gif_:
; 7458 : if (g->h > STBI_MAX_DIMENSIONS)
001b0 48 8b 85 08 01
00 00 mov rax, QWORD PTR g$[rbp]
001b7 81 78 04 00 00
00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
001be 7e 11 jle SHORT $LN7@stbi__gif_
; 7459 : return stbi__err("too large", "Very large image (corrupt?)");
001c0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
001c7 e8 00 00 00 00 call stbi__err
001cc e9 86 00 00 00 jmp $LN1@stbi__gif_
$LN7@stbi__gif_:
; 7460 :
; 7461 : if (comp != 0)
001d1 48 83 bd 10 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
001d9 74 0d je SHORT $LN8@stbi__gif_
; 7462 : *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments
001db 48 8b 85 10 01
00 00 mov rax, QWORD PTR comp$[rbp]
001e2 c7 00 04 00 00
00 mov DWORD PTR [rax], 4
$LN8@stbi__gif_:
; 7463 :
; 7464 : if (is_info)
001e8 83 bd 18 01 00
00 00 cmp DWORD PTR is_info$[rbp], 0
001ef 74 07 je SHORT $LN9@stbi__gif_
; 7465 : return 1;
001f1 b8 01 00 00 00 mov eax, 1
001f6 eb 5f jmp SHORT $LN1@stbi__gif_
$LN9@stbi__gif_:
; 7466 :
; 7467 : if (g->flags & 0x80)
001f8 48 8b 85 08 01
00 00 mov rax, QWORD PTR g$[rbp]
001ff 8b 40 20 mov eax, DWORD PTR [rax+32]
00202 25 80 00 00 00 and eax, 128 ; 00000080H
00207 85 c0 test eax, eax
00209 74 47 je SHORT $LN10@stbi__gif_
; 7468 : stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1);
0020b 48 8b 85 08 01
00 00 mov rax, QWORD PTR g$[rbp]
00212 8b 40 20 mov eax, DWORD PTR [rax+32]
00215 83 e0 07 and eax, 7
00218 b9 02 00 00 00 mov ecx, 2
0021d 89 8d d4 00 00
00 mov DWORD PTR tv225[rbp], ecx
00223 0f b6 c8 movzx ecx, al
00226 8b 85 d4 00 00
00 mov eax, DWORD PTR tv225[rbp]
0022c d3 e0 shl eax, cl
0022e 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR g$[rbp]
00235 48 83 c1 34 add rcx, 52 ; 00000034H
00239 41 b9 ff ff ff
ff mov r9d, -1
0023f 44 8b c0 mov r8d, eax
00242 48 8b d1 mov rdx, rcx
00245 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0024c e8 00 00 00 00 call stbi__gif_parse_colortable
00251 90 npad 1
$LN10@stbi__gif_:
; 7469 :
; 7470 : return 1;
00252 b8 01 00 00 00 mov eax, 1
$LN1@stbi__gif_:
; 7471 : }
00257 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
0025e 5f pop rdi
0025f 5d pop rbp
00260 c3 ret 0
stbi__gif_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_parse_colortable
_TEXT SEGMENT
i$ = 4
tv93 = 212
s$ = 256
pal$ = 264
num_entries$ = 272
transp$ = 280
stbi__gif_parse_colortable PROC ; COMDAT
; 7425 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 7426 : int i;
; 7427 : for (i = 0; i < num_entries; ++i) {
0002f c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00036 eb 08 jmp SHORT $LN4@stbi__gif_
$LN2@stbi__gif_:
00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
0003b ff c0 inc eax
0003d 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__gif_:
00040 8b 85 10 01 00
00 mov eax, DWORD PTR num_entries$[rbp]
00046 39 45 04 cmp DWORD PTR i$[rbp], eax
00049 0f 8d bd 00 00
00 jge $LN3@stbi__gif_
; 7428 : pal[i][2] = stbi__get8(s);
0004f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00056 e8 00 00 00 00 call stbi__get8
0005b 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
0005f 48 8b 95 08 01
00 00 mov rdx, QWORD PTR pal$[rbp]
00066 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
0006a ba 01 00 00 00 mov edx, 1
0006f 48 6b d2 02 imul rdx, rdx, 2
00073 88 04 11 mov BYTE PTR [rcx+rdx], al
; 7429 : pal[i][1] = stbi__get8(s);
00076 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0007d e8 00 00 00 00 call stbi__get8
00082 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
00086 48 8b 95 08 01
00 00 mov rdx, QWORD PTR pal$[rbp]
0008d 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
00091 ba 01 00 00 00 mov edx, 1
00096 48 6b d2 01 imul rdx, rdx, 1
0009a 88 04 11 mov BYTE PTR [rcx+rdx], al
; 7430 : pal[i][0] = stbi__get8(s);
0009d 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a4 e8 00 00 00 00 call stbi__get8
000a9 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
000ad 48 8b 95 08 01
00 00 mov rdx, QWORD PTR pal$[rbp]
000b4 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
000b8 ba 01 00 00 00 mov edx, 1
000bd 48 6b d2 00 imul rdx, rdx, 0
000c1 88 04 11 mov BYTE PTR [rcx+rdx], al
; 7431 : pal[i][3] = transp == i ? 0 : 255;
000c4 8b 45 04 mov eax, DWORD PTR i$[rbp]
000c7 39 85 18 01 00
00 cmp DWORD PTR transp$[rbp], eax
000cd 75 0c jne SHORT $LN6@stbi__gif_
000cf c7 85 d4 00 00
00 00 00 00 00 mov DWORD PTR tv93[rbp], 0
000d9 eb 0a jmp SHORT $LN7@stbi__gif_
$LN6@stbi__gif_:
000db c7 85 d4 00 00
00 ff 00 00 00 mov DWORD PTR tv93[rbp], 255 ; 000000ffH
$LN7@stbi__gif_:
000e5 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000e9 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR pal$[rbp]
000f0 48 8d 04 81 lea rax, QWORD PTR [rcx+rax*4]
000f4 b9 01 00 00 00 mov ecx, 1
000f9 48 6b c9 03 imul rcx, rcx, 3
000fd 0f b6 95 d4 00
00 00 movzx edx, BYTE PTR tv93[rbp]
00104 88 14 08 mov BYTE PTR [rax+rcx], dl
; 7432 : }
00107 e9 2c ff ff ff jmp $LN2@stbi__gif_
$LN3@stbi__gif_:
; 7433 : }
0010c 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00113 5f pop rdi
00114 5d pop rbp
00115 c3 ret 0
stbi__gif_parse_colortable ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_test_raw
_TEXT SEGMENT
sz$ = 4
s$ = 256
stbi__gif_test_raw PROC ; COMDAT
; 7403 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 7404 : int sz;
; 7405 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' ||
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get8
0002c 0f b6 c0 movzx eax, al
0002f 83 f8 47 cmp eax, 71 ; 00000047H
00032 75 3c jne SHORT $LN3@stbi__gif_
00034 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0003b e8 00 00 00 00 call stbi__get8
00040 0f b6 c0 movzx eax, al
00043 83 f8 49 cmp eax, 73 ; 00000049H
00046 75 28 jne SHORT $LN3@stbi__gif_
00048 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0004f e8 00 00 00 00 call stbi__get8
00054 0f b6 c0 movzx eax, al
00057 83 f8 46 cmp eax, 70 ; 00000046H
0005a 75 14 jne SHORT $LN3@stbi__gif_
0005c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00063 e8 00 00 00 00 call stbi__get8
00068 0f b6 c0 movzx eax, al
0006b 83 f8 38 cmp eax, 56 ; 00000038H
0006e 74 04 je SHORT $LN2@stbi__gif_
$LN3@stbi__gif_:
; 7406 : stbi__get8(s) != '8')
; 7407 : return 0;
00070 33 c0 xor eax, eax
00072 eb 3f jmp SHORT $LN1@stbi__gif_
$LN2@stbi__gif_:
; 7408 : sz = stbi__get8(s);
00074 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0007b e8 00 00 00 00 call stbi__get8
00080 0f b6 c0 movzx eax, al
00083 89 45 04 mov DWORD PTR sz$[rbp], eax
; 7409 : if (sz != '9' && sz != '7')
00086 83 7d 04 39 cmp DWORD PTR sz$[rbp], 57 ; 00000039H
0008a 74 0a je SHORT $LN4@stbi__gif_
0008c 83 7d 04 37 cmp DWORD PTR sz$[rbp], 55 ; 00000037H
00090 74 04 je SHORT $LN4@stbi__gif_
; 7410 : return 0;
00092 33 c0 xor eax, eax
00094 eb 1d jmp SHORT $LN1@stbi__gif_
$LN4@stbi__gif_:
; 7411 : if (stbi__get8(s) != 'a')
00096 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0009d e8 00 00 00 00 call stbi__get8
000a2 0f b6 c0 movzx eax, al
000a5 83 f8 61 cmp eax, 97 ; 00000061H
000a8 74 04 je SHORT $LN5@stbi__gif_
; 7412 : return 0;
000aa 33 c0 xor eax, eax
000ac eb 05 jmp SHORT $LN1@stbi__gif_
$LN5@stbi__gif_:
; 7413 : return 1;
000ae b8 01 00 00 00 mov eax, 1
$LN1@stbi__gif_:
; 7414 : }
000b3 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000ba 5f pop rdi
000bb 5d pop rbp
000bc c3 ret 0
stbi__gif_test_raw ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pic_load_core
_TEXT SEGMENT
act_comp$ = 4
num_packets$ = 36
y$ = 68
chained$ = 100
packets$ = 136
packet$6 = 200
packet_idx$7 = 228
packet$8 = 264
dest$9 = 296
x$10 = 324
left$11 = 356
i$12 = 388
count$13 = 420
value$14 = 452
left$15 = 484
count$16 = 516
i$17 = 548
value$18 = 580
tv138 = 980
tv152 = 980
tv95 = 984
tv134 = 984
tv238 = 984
tv69 = 984
tv156 = 984
tv176 = 984
tv207 = 984
tv217 = 984
__$ArrayPad$ = 992
s$ = 1040
width$ = 1048
height$ = 1056
comp$ = 1064
result$ = 1072
stbi__pic_load_core PROC ; COMDAT
; 7194 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 18 04
00 00 sub rsp, 1048 ; 00000418H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00026 b9 9e 00 00 00 mov ecx, 158 ; 0000009eH
0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00030 f3 ab rep stosd
00032 48 8b 8c 24 38
04 00 00 mov rcx, QWORD PTR [rsp+1080]
0003a 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00041 48 33 c5 xor rax, rbp
00044 48 89 85 e0 03
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00057 90 npad 1
; 7195 : int act_comp = 0, num_packets = 0, y, chained;
00058 c7 45 04 00 00
00 00 mov DWORD PTR act_comp$[rbp], 0
0005f c7 45 24 00 00
00 00 mov DWORD PTR num_packets$[rbp], 0
$LN4@stbi__pic_:
; 7196 : stbi__pic_packet packets[10];
; 7197 :
; 7198 : // this will (should...) cater for even some bizarre stuff like having data
; 7199 : // for the same channel in multiple packets.
; 7200 : do {
; 7201 : stbi__pic_packet *packet;
; 7202 :
; 7203 : if (num_packets == sizeof(packets) / sizeof(packets[0]))
00066 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
0006a 48 83 f8 0a cmp rax, 10
0006e 75 34 jne SHORT $LN29@stbi__pic_
; 7204 : return stbi__errpuc("bad format", "too many packets");
00070 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
00077 e8 00 00 00 00 call stbi__err
0007c 85 c0 test eax, eax
0007e 74 0d je SHORT $LN50@stbi__pic_
00080 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv69[rbp], 0
0008b eb 0b jmp SHORT $LN51@stbi__pic_
$LN50@stbi__pic_:
0008d 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv69[rbp], 0
$LN51@stbi__pic_:
00098 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv69[rbp]
0009f e9 3a 06 00 00 jmp $LN1@stbi__pic_
$LN29@stbi__pic_:
; 7205 :
; 7206 : packet = &packets[num_packets++];
000a4 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
000a8 48 6b c0 03 imul rax, rax, 3
000ac 48 8d 84 05 88
00 00 00 lea rax, QWORD PTR packets$[rbp+rax]
000b4 48 89 85 c8 00
00 00 mov QWORD PTR packet$6[rbp], rax
000bb 8b 45 24 mov eax, DWORD PTR num_packets$[rbp]
000be ff c0 inc eax
000c0 89 45 24 mov DWORD PTR num_packets$[rbp], eax
; 7207 :
; 7208 : chained = stbi__get8(s);
000c3 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
000ca e8 00 00 00 00 call stbi__get8
000cf 0f b6 c0 movzx eax, al
000d2 89 45 64 mov DWORD PTR chained$[rbp], eax
; 7209 : packet->size = stbi__get8(s);
000d5 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
000dc e8 00 00 00 00 call stbi__get8
000e1 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR packet$6[rbp]
000e8 88 01 mov BYTE PTR [rcx], al
; 7210 : packet->type = stbi__get8(s);
000ea 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
000f1 e8 00 00 00 00 call stbi__get8
000f6 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR packet$6[rbp]
000fd 88 41 01 mov BYTE PTR [rcx+1], al
; 7211 : packet->channel = stbi__get8(s);
00100 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
00107 e8 00 00 00 00 call stbi__get8
0010c 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR packet$6[rbp]
00113 88 41 02 mov BYTE PTR [rcx+2], al
; 7212 :
; 7213 : act_comp |= packet->channel;
00116 48 8b 85 c8 00
00 00 mov rax, QWORD PTR packet$6[rbp]
0011d 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
00121 8b 4d 04 mov ecx, DWORD PTR act_comp$[rbp]
00124 0b c8 or ecx, eax
00126 8b c1 mov eax, ecx
00128 89 45 04 mov DWORD PTR act_comp$[rbp], eax
; 7214 :
; 7215 : if (stbi__at_eof(s))
0012b 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
00132 e8 00 00 00 00 call stbi__at_eof
00137 85 c0 test eax, eax
00139 74 34 je SHORT $LN30@stbi__pic_
; 7216 : return stbi__errpuc("bad file", "file too short (reading packets)");
0013b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
00142 e8 00 00 00 00 call stbi__err
00147 85 c0 test eax, eax
00149 74 0d je SHORT $LN52@stbi__pic_
0014b 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv95[rbp], 0
00156 eb 0b jmp SHORT $LN53@stbi__pic_
$LN52@stbi__pic_:
00158 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv95[rbp], 0
$LN53@stbi__pic_:
00163 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv95[rbp]
0016a e9 6f 05 00 00 jmp $LN1@stbi__pic_
$LN30@stbi__pic_:
; 7217 : if (packet->size != 8)
0016f 48 8b 85 c8 00
00 00 mov rax, QWORD PTR packet$6[rbp]
00176 0f b6 00 movzx eax, BYTE PTR [rax]
00179 83 f8 08 cmp eax, 8
0017c 74 34 je SHORT $LN31@stbi__pic_
; 7218 : return stbi__errpuc("bad format", "packet isn't 8bpp");
0017e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
00185 e8 00 00 00 00 call stbi__err
0018a 85 c0 test eax, eax
0018c 74 0d je SHORT $LN54@stbi__pic_
0018e 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv134[rbp], 0
00199 eb 0b jmp SHORT $LN55@stbi__pic_
$LN54@stbi__pic_:
0019b 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv134[rbp], 0
$LN55@stbi__pic_:
001a6 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv134[rbp]
001ad e9 2c 05 00 00 jmp $LN1@stbi__pic_
$LN31@stbi__pic_:
; 7219 : } while (chained);
001b2 83 7d 64 00 cmp DWORD PTR chained$[rbp], 0
001b6 0f 85 aa fe ff
ff jne $LN4@stbi__pic_
; 7220 :
; 7221 : *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel?
001bc 8b 45 04 mov eax, DWORD PTR act_comp$[rbp]
001bf 83 e0 10 and eax, 16
001c2 85 c0 test eax, eax
001c4 74 0c je SHORT $LN56@stbi__pic_
001c6 c7 85 d4 03 00
00 04 00 00 00 mov DWORD PTR tv138[rbp], 4
001d0 eb 0a jmp SHORT $LN57@stbi__pic_
$LN56@stbi__pic_:
001d2 c7 85 d4 03 00
00 03 00 00 00 mov DWORD PTR tv138[rbp], 3
$LN57@stbi__pic_:
001dc 48 8b 85 28 04
00 00 mov rax, QWORD PTR comp$[rbp]
001e3 8b 8d d4 03 00
00 mov ecx, DWORD PTR tv138[rbp]
001e9 89 08 mov DWORD PTR [rax], ecx
; 7222 :
; 7223 : for (y = 0; y < height; ++y) {
001eb c7 45 44 00 00
00 00 mov DWORD PTR y$[rbp], 0
001f2 eb 08 jmp SHORT $LN7@stbi__pic_
$LN5@stbi__pic_:
001f4 8b 45 44 mov eax, DWORD PTR y$[rbp]
001f7 ff c0 inc eax
001f9 89 45 44 mov DWORD PTR y$[rbp], eax
$LN7@stbi__pic_:
001fc 8b 85 20 04 00
00 mov eax, DWORD PTR height$[rbp]
00202 39 45 44 cmp DWORD PTR y$[rbp], eax
00205 0f 8d cc 04 00
00 jge $LN6@stbi__pic_
; 7224 : int packet_idx;
; 7225 :
; 7226 : for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) {
0020b c7 85 e4 00 00
00 00 00 00 00 mov DWORD PTR packet_idx$7[rbp], 0
00215 eb 0e jmp SHORT $LN10@stbi__pic_
$LN8@stbi__pic_:
00217 8b 85 e4 00 00
00 mov eax, DWORD PTR packet_idx$7[rbp]
0021d ff c0 inc eax
0021f 89 85 e4 00 00
00 mov DWORD PTR packet_idx$7[rbp], eax
$LN10@stbi__pic_:
00225 8b 45 24 mov eax, DWORD PTR num_packets$[rbp]
00228 39 85 e4 00 00
00 cmp DWORD PTR packet_idx$7[rbp], eax
0022e 0f 8d 9e 04 00
00 jge $LN9@stbi__pic_
; 7227 : stbi__pic_packet *packet = &packets[packet_idx];
00234 48 63 85 e4 00
00 00 movsxd rax, DWORD PTR packet_idx$7[rbp]
0023b 48 6b c0 03 imul rax, rax, 3
0023f 48 8d 84 05 88
00 00 00 lea rax, QWORD PTR packets$[rbp+rax]
00247 48 89 85 08 01
00 00 mov QWORD PTR packet$8[rbp], rax
; 7228 : stbi_uc *dest = result + y * width * 4;
0024e 8b 45 44 mov eax, DWORD PTR y$[rbp]
00251 0f af 85 18 04
00 00 imul eax, DWORD PTR width$[rbp]
00258 c1 e0 02 shl eax, 2
0025b 48 98 cdqe
0025d 48 8b 8d 30 04
00 00 mov rcx, QWORD PTR result$[rbp]
00264 48 03 c8 add rcx, rax
00267 48 8b c1 mov rax, rcx
0026a 48 89 85 28 01
00 00 mov QWORD PTR dest$9[rbp], rax
; 7229 :
; 7230 : switch (packet->type) {
00271 48 8b 85 08 01
00 00 mov rax, QWORD PTR packet$8[rbp]
00278 0f b6 40 01 movzx eax, BYTE PTR [rax+1]
0027c 88 85 d4 03 00
00 mov BYTE PTR tv152[rbp], al
00282 80 bd d4 03 00
00 00 cmp BYTE PTR tv152[rbp], 0
00289 74 4e je SHORT $LN33@stbi__pic_
0028b 80 bd d4 03 00
00 01 cmp BYTE PTR tv152[rbp], 1
00292 0f 84 ae 00 00
00 je $LN35@stbi__pic_
00298 80 bd d4 03 00
00 02 cmp BYTE PTR tv152[rbp], 2
0029f 0f 84 d7 01 00
00 je $LN39@stbi__pic_
; 7231 : default:
; 7232 : return stbi__errpuc("bad format",
002a5 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
002ac e8 00 00 00 00 call stbi__err
002b1 85 c0 test eax, eax
002b3 74 0d je SHORT $LN58@stbi__pic_
002b5 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv156[rbp], 0
002c0 eb 0b jmp SHORT $LN59@stbi__pic_
$LN58@stbi__pic_:
002c2 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv156[rbp], 0
$LN59@stbi__pic_:
002cd 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv156[rbp]
002d4 e9 05 04 00 00 jmp $LN1@stbi__pic_
$LN33@stbi__pic_:
; 7233 : "packet has bad compression type");
; 7234 :
; 7235 : case 0: { //uncompressed
; 7236 : int x;
; 7237 :
; 7238 : for (x = 0; x < width; ++x, dest += 4)
002d9 c7 85 44 01 00
00 00 00 00 00 mov DWORD PTR x$10[rbp], 0
002e3 eb 20 jmp SHORT $LN15@stbi__pic_
$LN13@stbi__pic_:
002e5 8b 85 44 01 00
00 mov eax, DWORD PTR x$10[rbp]
002eb ff c0 inc eax
002ed 89 85 44 01 00
00 mov DWORD PTR x$10[rbp], eax
002f3 48 8b 85 28 01
00 00 mov rax, QWORD PTR dest$9[rbp]
002fa 48 83 c0 04 add rax, 4
002fe 48 89 85 28 01
00 00 mov QWORD PTR dest$9[rbp], rax
$LN15@stbi__pic_:
00305 8b 85 18 04 00
00 mov eax, DWORD PTR width$[rbp]
0030b 39 85 44 01 00
00 cmp DWORD PTR x$10[rbp], eax
00311 7d 2e jge SHORT $LN14@stbi__pic_
; 7239 : if (!stbi__readval(s, packet->channel, dest))
00313 48 8b 85 08 01
00 00 mov rax, QWORD PTR packet$8[rbp]
0031a 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
0031e 4c 8b 85 28 01
00 00 mov r8, QWORD PTR dest$9[rbp]
00325 8b d0 mov edx, eax
00327 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
0032e e8 00 00 00 00 call stbi__readval
00333 48 85 c0 test rax, rax
00336 75 07 jne SHORT $LN34@stbi__pic_
; 7240 : return 0;
00338 33 c0 xor eax, eax
0033a e9 9f 03 00 00 jmp $LN1@stbi__pic_
$LN34@stbi__pic_:
0033f eb a4 jmp SHORT $LN13@stbi__pic_
$LN14@stbi__pic_:
; 7241 : break;
00341 e9 87 03 00 00 jmp $LN11@stbi__pic_
$LN35@stbi__pic_:
; 7242 : }
; 7243 :
; 7244 : case 1: //Pure RLE
; 7245 : {
; 7246 : int left = width, i;
00346 8b 85 18 04 00
00 mov eax, DWORD PTR width$[rbp]
0034c 89 85 64 01 00
00 mov DWORD PTR left$11[rbp], eax
$LN16@stbi__pic_:
; 7247 :
; 7248 : while (left > 0) {
00352 83 bd 64 01 00
00 00 cmp DWORD PTR left$11[rbp], 0
00359 0f 8e 18 01 00
00 jle $LN17@stbi__pic_
; 7249 : stbi_uc count, value[4];
; 7250 :
; 7251 : count = stbi__get8(s);
0035f 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
00366 e8 00 00 00 00 call stbi__get8
0036b 88 85 a4 01 00
00 mov BYTE PTR count$13[rbp], al
; 7252 : if (stbi__at_eof(s))
00371 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
00378 e8 00 00 00 00 call stbi__at_eof
0037d 85 c0 test eax, eax
0037f 74 34 je SHORT $LN36@stbi__pic_
; 7253 : return stbi__errpuc(
00381 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
00388 e8 00 00 00 00 call stbi__err
0038d 85 c0 test eax, eax
0038f 74 0d je SHORT $LN60@stbi__pic_
00391 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv176[rbp], 0
0039c eb 0b jmp SHORT $LN61@stbi__pic_
$LN60@stbi__pic_:
0039e 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv176[rbp], 0
$LN61@stbi__pic_:
003a9 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv176[rbp]
003b0 e9 29 03 00 00 jmp $LN1@stbi__pic_
$LN36@stbi__pic_:
; 7254 : "bad file",
; 7255 : "file too short (pure read count)");
; 7256 :
; 7257 : if (count > left)
003b5 0f b6 85 a4 01
00 00 movzx eax, BYTE PTR count$13[rbp]
003bc 3b 85 64 01 00
00 cmp eax, DWORD PTR left$11[rbp]
003c2 7e 0d jle SHORT $LN37@stbi__pic_
; 7258 : count = (stbi_uc)left;
003c4 0f b6 85 64 01
00 00 movzx eax, BYTE PTR left$11[rbp]
003cb 88 85 a4 01 00
00 mov BYTE PTR count$13[rbp], al
$LN37@stbi__pic_:
; 7259 :
; 7260 : if (!stbi__readval(s, packet->channel, value))
003d1 48 8b 85 08 01
00 00 mov rax, QWORD PTR packet$8[rbp]
003d8 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
003dc 4c 8d 85 c4 01
00 00 lea r8, QWORD PTR value$14[rbp]
003e3 8b d0 mov edx, eax
003e5 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
003ec e8 00 00 00 00 call stbi__readval
003f1 48 85 c0 test rax, rax
003f4 75 07 jne SHORT $LN38@stbi__pic_
; 7261 : return 0;
003f6 33 c0 xor eax, eax
003f8 e9 e1 02 00 00 jmp $LN1@stbi__pic_
$LN38@stbi__pic_:
; 7262 :
; 7263 : for (i = 0; i < count; ++i, dest += 4)
003fd c7 85 84 01 00
00 00 00 00 00 mov DWORD PTR i$12[rbp], 0
00407 eb 20 jmp SHORT $LN20@stbi__pic_
$LN18@stbi__pic_:
00409 8b 85 84 01 00
00 mov eax, DWORD PTR i$12[rbp]
0040f ff c0 inc eax
00411 89 85 84 01 00
00 mov DWORD PTR i$12[rbp], eax
00417 48 8b 85 28 01
00 00 mov rax, QWORD PTR dest$9[rbp]
0041e 48 83 c0 04 add rax, 4
00422 48 89 85 28 01
00 00 mov QWORD PTR dest$9[rbp], rax
$LN20@stbi__pic_:
00429 0f b6 85 a4 01
00 00 movzx eax, BYTE PTR count$13[rbp]
00430 39 85 84 01 00
00 cmp DWORD PTR i$12[rbp], eax
00436 7d 23 jge SHORT $LN19@stbi__pic_
; 7264 : stbi__copyval(packet->channel, dest, value);
00438 48 8b 85 08 01
00 00 mov rax, QWORD PTR packet$8[rbp]
0043f 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
00443 4c 8d 85 c4 01
00 00 lea r8, QWORD PTR value$14[rbp]
0044a 48 8b 95 28 01
00 00 mov rdx, QWORD PTR dest$9[rbp]
00451 8b c8 mov ecx, eax
00453 e8 00 00 00 00 call stbi__copyval
00458 90 npad 1
00459 eb ae jmp SHORT $LN18@stbi__pic_
$LN19@stbi__pic_:
; 7265 : left -= count;
0045b 0f b6 85 a4 01
00 00 movzx eax, BYTE PTR count$13[rbp]
00462 8b 8d 64 01 00
00 mov ecx, DWORD PTR left$11[rbp]
00468 2b c8 sub ecx, eax
0046a 8b c1 mov eax, ecx
0046c 89 85 64 01 00
00 mov DWORD PTR left$11[rbp], eax
; 7266 : }
00472 e9 db fe ff ff jmp $LN16@stbi__pic_
$LN17@stbi__pic_:
; 7267 : } break;
00477 e9 51 02 00 00 jmp $LN11@stbi__pic_
$LN39@stbi__pic_:
; 7268 :
; 7269 : case 2: { //Mixed RLE
; 7270 : int left = width;
0047c 8b 85 18 04 00
00 mov eax, DWORD PTR width$[rbp]
00482 89 85 e4 01 00
00 mov DWORD PTR left$15[rbp], eax
$LN21@stbi__pic_:
; 7271 : while (left > 0) {
00488 83 bd e4 01 00
00 00 cmp DWORD PTR left$15[rbp], 0
0048f 0f 8e 38 02 00
00 jle $LN22@stbi__pic_
; 7272 : int count = stbi__get8(s), i;
00495 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
0049c e8 00 00 00 00 call stbi__get8
004a1 0f b6 c0 movzx eax, al
004a4 89 85 04 02 00
00 mov DWORD PTR count$16[rbp], eax
; 7273 : if (stbi__at_eof(s))
004aa 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
004b1 e8 00 00 00 00 call stbi__at_eof
004b6 85 c0 test eax, eax
004b8 74 34 je SHORT $LN40@stbi__pic_
; 7274 : return stbi__errpuc(
004ba 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
004c1 e8 00 00 00 00 call stbi__err
004c6 85 c0 test eax, eax
004c8 74 0d je SHORT $LN62@stbi__pic_
004ca 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv207[rbp], 0
004d5 eb 0b jmp SHORT $LN63@stbi__pic_
$LN62@stbi__pic_:
004d7 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv207[rbp], 0
$LN63@stbi__pic_:
004e2 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv207[rbp]
004e9 e9 f0 01 00 00 jmp $LN1@stbi__pic_
$LN40@stbi__pic_:
; 7275 : "bad file",
; 7276 : "file too short (mixed read count)");
; 7277 :
; 7278 : if (count >= 128) { // Repeated
004ee 81 bd 04 02 00
00 80 00 00 00 cmp DWORD PTR count$16[rbp], 128 ; 00000080H
004f8 0f 8c ff 00 00
00 jl $LN41@stbi__pic_
; 7279 : stbi_uc value[4];
; 7280 :
; 7281 : if (count == 128)
004fe 81 bd 04 02 00
00 80 00 00 00 cmp DWORD PTR count$16[rbp], 128 ; 00000080H
00508 75 14 jne SHORT $LN43@stbi__pic_
; 7282 : count = stbi__get16be(s);
0050a 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
00511 e8 00 00 00 00 call stbi__get16be
00516 89 85 04 02 00
00 mov DWORD PTR count$16[rbp], eax
0051c eb 0f jmp SHORT $LN44@stbi__pic_
$LN43@stbi__pic_:
; 7283 : else
; 7284 : count -= 127;
0051e 8b 85 04 02 00
00 mov eax, DWORD PTR count$16[rbp]
00524 83 e8 7f sub eax, 127 ; 0000007fH
00527 89 85 04 02 00
00 mov DWORD PTR count$16[rbp], eax
$LN44@stbi__pic_:
; 7285 : if (count > left)
0052d 8b 85 e4 01 00
00 mov eax, DWORD PTR left$15[rbp]
00533 39 85 04 02 00
00 cmp DWORD PTR count$16[rbp], eax
00539 7e 34 jle SHORT $LN45@stbi__pic_
; 7286 : return stbi__errpuc("bad file",
0053b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
00542 e8 00 00 00 00 call stbi__err
00547 85 c0 test eax, eax
00549 74 0d je SHORT $LN64@stbi__pic_
0054b 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv217[rbp], 0
00556 eb 0b jmp SHORT $LN65@stbi__pic_
$LN64@stbi__pic_:
00558 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv217[rbp], 0
$LN65@stbi__pic_:
00563 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv217[rbp]
0056a e9 6f 01 00 00 jmp $LN1@stbi__pic_
$LN45@stbi__pic_:
; 7287 : "scanline overrun");
; 7288 :
; 7289 : if (!stbi__readval(s, packet->channel, value))
0056f 48 8b 85 08 01
00 00 mov rax, QWORD PTR packet$8[rbp]
00576 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
0057a 4c 8d 85 44 02
00 00 lea r8, QWORD PTR value$18[rbp]
00581 8b d0 mov edx, eax
00583 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
0058a e8 00 00 00 00 call stbi__readval
0058f 48 85 c0 test rax, rax
00592 75 07 jne SHORT $LN46@stbi__pic_
; 7290 : return 0;
00594 33 c0 xor eax, eax
00596 e9 43 01 00 00 jmp $LN1@stbi__pic_
$LN46@stbi__pic_:
; 7291 :
; 7292 : for (i = 0; i < count; ++i, dest += 4)
0059b c7 85 24 02 00
00 00 00 00 00 mov DWORD PTR i$17[rbp], 0
005a5 eb 20 jmp SHORT $LN25@stbi__pic_
$LN23@stbi__pic_:
005a7 8b 85 24 02 00
00 mov eax, DWORD PTR i$17[rbp]
005ad ff c0 inc eax
005af 89 85 24 02 00
00 mov DWORD PTR i$17[rbp], eax
005b5 48 8b 85 28 01
00 00 mov rax, QWORD PTR dest$9[rbp]
005bc 48 83 c0 04 add rax, 4
005c0 48 89 85 28 01
00 00 mov QWORD PTR dest$9[rbp], rax
$LN25@stbi__pic_:
005c7 8b 85 04 02 00
00 mov eax, DWORD PTR count$16[rbp]
005cd 39 85 24 02 00
00 cmp DWORD PTR i$17[rbp], eax
005d3 7d 23 jge SHORT $LN24@stbi__pic_
; 7293 : stbi__copyval(packet->channel, dest, value);
005d5 48 8b 85 08 01
00 00 mov rax, QWORD PTR packet$8[rbp]
005dc 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
005e0 4c 8d 85 44 02
00 00 lea r8, QWORD PTR value$18[rbp]
005e7 48 8b 95 28 01
00 00 mov rdx, QWORD PTR dest$9[rbp]
005ee 8b c8 mov ecx, eax
005f0 e8 00 00 00 00 call stbi__copyval
005f5 90 npad 1
005f6 eb af jmp SHORT $LN23@stbi__pic_
$LN24@stbi__pic_:
; 7294 : } else { // Raw
005f8 e9 b5 00 00 00 jmp $LN42@stbi__pic_
$LN41@stbi__pic_:
; 7295 : ++count;
005fd 8b 85 04 02 00
00 mov eax, DWORD PTR count$16[rbp]
00603 ff c0 inc eax
00605 89 85 04 02 00
00 mov DWORD PTR count$16[rbp], eax
; 7296 : if (count > left)
0060b 8b 85 e4 01 00
00 mov eax, DWORD PTR left$15[rbp]
00611 39 85 04 02 00
00 cmp DWORD PTR count$16[rbp], eax
00617 7e 34 jle SHORT $LN47@stbi__pic_
; 7297 : return stbi__errpuc("bad file",
00619 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
00620 e8 00 00 00 00 call stbi__err
00625 85 c0 test eax, eax
00627 74 0d je SHORT $LN66@stbi__pic_
00629 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv238[rbp], 0
00634 eb 0b jmp SHORT $LN67@stbi__pic_
$LN66@stbi__pic_:
00636 48 c7 85 d8 03
00 00 00 00 00
00 mov QWORD PTR tv238[rbp], 0
$LN67@stbi__pic_:
00641 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv238[rbp]
00648 e9 91 00 00 00 jmp $LN1@stbi__pic_
$LN47@stbi__pic_:
; 7298 : "scanline overrun");
; 7299 :
; 7300 : for (i = 0; i < count; ++i, dest += 4)
0064d c7 85 24 02 00
00 00 00 00 00 mov DWORD PTR i$17[rbp], 0
00657 eb 20 jmp SHORT $LN28@stbi__pic_
$LN26@stbi__pic_:
00659 8b 85 24 02 00
00 mov eax, DWORD PTR i$17[rbp]
0065f ff c0 inc eax
00661 89 85 24 02 00
00 mov DWORD PTR i$17[rbp], eax
00667 48 8b 85 28 01
00 00 mov rax, QWORD PTR dest$9[rbp]
0066e 48 83 c0 04 add rax, 4
00672 48 89 85 28 01
00 00 mov QWORD PTR dest$9[rbp], rax
$LN28@stbi__pic_:
00679 8b 85 04 02 00
00 mov eax, DWORD PTR count$16[rbp]
0067f 39 85 24 02 00
00 cmp DWORD PTR i$17[rbp], eax
00685 7d 2b jge SHORT $LN27@stbi__pic_
; 7301 : if (!stbi__readval(s, packet->channel,
00687 48 8b 85 08 01
00 00 mov rax, QWORD PTR packet$8[rbp]
0068e 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
00692 4c 8b 85 28 01
00 00 mov r8, QWORD PTR dest$9[rbp]
00699 8b d0 mov edx, eax
0069b 48 8b 8d 10 04
00 00 mov rcx, QWORD PTR s$[rbp]
006a2 e8 00 00 00 00 call stbi__readval
006a7 48 85 c0 test rax, rax
006aa 75 04 jne SHORT $LN48@stbi__pic_
; 7302 : dest))
; 7303 : return 0;
006ac 33 c0 xor eax, eax
006ae eb 2e jmp SHORT $LN1@stbi__pic_
$LN48@stbi__pic_:
006b0 eb a7 jmp SHORT $LN26@stbi__pic_
$LN27@stbi__pic_:
$LN42@stbi__pic_:
; 7304 : }
; 7305 : left -= count;
006b2 8b 85 04 02 00
00 mov eax, DWORD PTR count$16[rbp]
006b8 8b 8d e4 01 00
00 mov ecx, DWORD PTR left$15[rbp]
006be 2b c8 sub ecx, eax
006c0 8b c1 mov eax, ecx
006c2 89 85 e4 01 00
00 mov DWORD PTR left$15[rbp], eax
; 7306 : }
006c8 e9 bb fd ff ff jmp $LN21@stbi__pic_
$LN22@stbi__pic_:
$LN11@stbi__pic_:
; 7307 : break;
; 7308 : }
; 7309 : }
; 7310 : }
006cd e9 45 fb ff ff jmp $LN8@stbi__pic_
$LN9@stbi__pic_:
; 7311 : }
006d2 e9 1d fb ff ff jmp $LN5@stbi__pic_
$LN6@stbi__pic_:
; 7312 :
; 7313 : return result;
006d7 48 8b 85 30 04
00 00 mov rax, QWORD PTR result$[rbp]
$LN1@stbi__pic_:
; 7314 : }
006de 48 8b f8 mov rdi, rax
006e1 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
006e5 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__pic_load_core$rtcFrameData
006ec e8 00 00 00 00 call _RTC_CheckStackVars
006f1 48 8b c7 mov rax, rdi
006f4 48 8b 8d e0 03
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
006fb 48 33 cd xor rcx, rbp
006fe e8 00 00 00 00 call __security_check_cookie
00703 48 8d a5 f8 03
00 00 lea rsp, QWORD PTR [rbp+1016]
0070a 5f pop rdi
0070b 5d pop rbp
0070c c3 ret 0
stbi__pic_load_core ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__copyval
_TEXT SEGMENT
mask$ = 4
i$ = 36
channel$ = 288
dest$ = 296
src$ = 304
stbi__copyval PROC ; COMDAT
; 7184 : {
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000e 55 push rbp
0000f 57 push rdi
00010 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00028 90 npad 1
; 7185 : int mask = 0x80, i;
00029 c7 45 04 80 00
00 00 mov DWORD PTR mask$[rbp], 128 ; 00000080H
; 7186 :
; 7187 : for (i = 0; i < 4; ++i, mask >>= 1)
00030 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
00037 eb 10 jmp SHORT $LN4@stbi__copy
$LN2@stbi__copy:
00039 8b 45 24 mov eax, DWORD PTR i$[rbp]
0003c ff c0 inc eax
0003e 89 45 24 mov DWORD PTR i$[rbp], eax
00041 8b 45 04 mov eax, DWORD PTR mask$[rbp]
00044 d1 f8 sar eax, 1
00046 89 45 04 mov DWORD PTR mask$[rbp], eax
$LN4@stbi__copy:
00049 83 7d 24 04 cmp DWORD PTR i$[rbp], 4
0004d 7d 31 jge SHORT $LN3@stbi__copy
; 7188 : if (channel & mask)
0004f 8b 45 04 mov eax, DWORD PTR mask$[rbp]
00052 8b 8d 20 01 00
00 mov ecx, DWORD PTR channel$[rbp]
00058 23 c8 and ecx, eax
0005a 8b c1 mov eax, ecx
0005c 85 c0 test eax, eax
0005e 74 1e je SHORT $LN5@stbi__copy
; 7189 : dest[i] = src[i];
00060 48 63 45 24 movsxd rax, DWORD PTR i$[rbp]
00064 48 63 4d 24 movsxd rcx, DWORD PTR i$[rbp]
00068 48 8b 95 28 01
00 00 mov rdx, QWORD PTR dest$[rbp]
0006f 4c 8b 85 30 01
00 00 mov r8, QWORD PTR src$[rbp]
00076 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0007b 88 04 0a mov BYTE PTR [rdx+rcx], al
$LN5@stbi__copy:
0007e eb b9 jmp SHORT $LN2@stbi__copy
$LN3@stbi__copy:
; 7190 : }
00080 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00087 5f pop rdi
00088 5d pop rbp
00089 c3 ret 0
stbi__copyval ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__readval
_TEXT SEGMENT
mask$ = 4
i$ = 36
tv75 = 248
s$ = 288
channel$ = 296
dest$ = 304
stbi__readval PROC ; COMDAT
; 7169 : {
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00028 90 npad 1
; 7170 : int mask = 0x80, i;
00029 c7 45 04 80 00
00 00 mov DWORD PTR mask$[rbp], 128 ; 00000080H
; 7171 :
; 7172 : for (i = 0; i < 4; ++i, mask >>= 1) {
00030 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
00037 eb 10 jmp SHORT $LN4@stbi__read
$LN2@stbi__read:
00039 8b 45 24 mov eax, DWORD PTR i$[rbp]
0003c ff c0 inc eax
0003e 89 45 24 mov DWORD PTR i$[rbp], eax
00041 8b 45 04 mov eax, DWORD PTR mask$[rbp]
00044 d1 f8 sar eax, 1
00046 89 45 04 mov DWORD PTR mask$[rbp], eax
$LN4@stbi__read:
00049 83 7d 24 04 cmp DWORD PTR i$[rbp], 4
0004d 7d 71 jge SHORT $LN3@stbi__read
; 7173 : if (channel & mask) {
0004f 8b 45 04 mov eax, DWORD PTR mask$[rbp]
00052 8b 8d 28 01 00
00 mov ecx, DWORD PTR channel$[rbp]
00058 23 c8 and ecx, eax
0005a 8b c1 mov eax, ecx
0005c 85 c0 test eax, eax
0005e 74 5b je SHORT $LN5@stbi__read
; 7174 : if (stbi__at_eof(s))
00060 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00067 e8 00 00 00 00 call stbi__at_eof
0006c 85 c0 test eax, eax
0006e 74 31 je SHORT $LN6@stbi__read
; 7175 : return stbi__errpuc("bad file", "PIC file too short");
00070 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
00077 e8 00 00 00 00 call stbi__err
0007c 85 c0 test eax, eax
0007e 74 0d je SHORT $LN8@stbi__read
00080 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv75[rbp], 0
0008b eb 0b jmp SHORT $LN9@stbi__read
$LN8@stbi__read:
0008d 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv75[rbp], 0
$LN9@stbi__read:
00098 48 8b 85 f8 00
00 00 mov rax, QWORD PTR tv75[rbp]
0009f eb 26 jmp SHORT $LN1@stbi__read
$LN6@stbi__read:
; 7176 : dest[i] = stbi__get8(s);
000a1 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a8 e8 00 00 00 00 call stbi__get8
000ad 48 63 4d 24 movsxd rcx, DWORD PTR i$[rbp]
000b1 48 8b 95 30 01
00 00 mov rdx, QWORD PTR dest$[rbp]
000b8 88 04 0a mov BYTE PTR [rdx+rcx], al
$LN5@stbi__read:
; 7177 : }
; 7178 : }
000bb e9 79 ff ff ff jmp $LN2@stbi__read
$LN3@stbi__read:
; 7179 :
; 7180 : return dest;
000c0 48 8b 85 30 01
00 00 mov rax, QWORD PTR dest$[rbp]
$LN1@stbi__read:
; 7181 : }
000c7 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000ce 5f pop rdi
000cf 5d pop rbp
000d0 c3 ret 0
stbi__readval ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pic_test_core
_TEXT SEGMENT
i$ = 4
s$ = 256
stbi__pic_test_core PROC ; COMDAT
; 7149 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 7150 : int i;
; 7151 :
; 7152 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34"))
00020 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_04KBFEPHFH@S?$IA?v4@
00027 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0002e e8 00 00 00 00 call stbi__pic_is4
00033 85 c0 test eax, eax
00035 75 04 jne SHORT $LN5@stbi__pic_
; 7153 : return 0;
00037 33 c0 xor eax, eax
00039 eb 46 jmp SHORT $LN1@stbi__pic_
$LN5@stbi__pic_:
; 7154 :
; 7155 : for (i = 0; i < 84; ++i)
0003b c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00042 eb 08 jmp SHORT $LN4@stbi__pic_
$LN2@stbi__pic_:
00044 8b 45 04 mov eax, DWORD PTR i$[rbp]
00047 ff c0 inc eax
00049 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__pic_:
0004c 83 7d 04 54 cmp DWORD PTR i$[rbp], 84 ; 00000054H
00050 7d 0f jge SHORT $LN3@stbi__pic_
; 7156 : stbi__get8(s);
00052 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00059 e8 00 00 00 00 call stbi__get8
0005e 90 npad 1
0005f eb e3 jmp SHORT $LN2@stbi__pic_
$LN3@stbi__pic_:
; 7157 :
; 7158 : if (!stbi__pic_is4(s, "PICT"))
00061 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_04ELNJHLFH@PICT@
00068 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0006f e8 00 00 00 00 call stbi__pic_is4
00074 85 c0 test eax, eax
00076 75 04 jne SHORT $LN6@stbi__pic_
; 7159 : return 0;
00078 33 c0 xor eax, eax
0007a eb 05 jmp SHORT $LN1@stbi__pic_
$LN6@stbi__pic_:
; 7160 :
; 7161 : return 1;
0007c b8 01 00 00 00 mov eax, 1
$LN1@stbi__pic_:
; 7162 : }
00081 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00088 5f pop rdi
00089 5d pop rbp
0008a c3 ret 0
stbi__pic_test_core ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pic_is4
_TEXT SEGMENT
i$ = 4
s$ = 256
str$ = 264
stbi__pic_is4 PROC ; COMDAT
; 7139 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 7140 : int i;
; 7141 : for (i = 0; i < 4; ++i)
00025 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
0002c eb 08 jmp SHORT $LN4@stbi__pic_
$LN2@stbi__pic_:
0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
00031 ff c0 inc eax
00033 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__pic_:
00036 83 7d 04 04 cmp DWORD PTR i$[rbp], 4
0003a 7d 28 jge SHORT $LN3@stbi__pic_
; 7142 : if (stbi__get8(s) != (stbi_uc)str[i])
0003c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00043 e8 00 00 00 00 call stbi__get8
00048 0f b6 c0 movzx eax, al
0004b 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
0004f 48 8b 95 08 01
00 00 mov rdx, QWORD PTR str$[rbp]
00056 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0005a 3b c1 cmp eax, ecx
0005c 74 04 je SHORT $LN5@stbi__pic_
; 7143 : return 0;
0005e 33 c0 xor eax, eax
00060 eb 07 jmp SHORT $LN1@stbi__pic_
$LN5@stbi__pic_:
00062 eb ca jmp SHORT $LN2@stbi__pic_
$LN3@stbi__pic_:
; 7144 :
; 7145 : return 1;
00064 b8 01 00 00 00 mov eax, 1
$LN1@stbi__pic_:
; 7146 : }
00069 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00070 5f pop rdi
00071 5d pop rbp
00072 c3 ret 0
stbi__pic_is4 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__psd_decode_rle
_TEXT SEGMENT
count$ = 4
nleft$ = 36
len$ = 68
val$1 = 100
s$ = 352
p$ = 360
pixelCount$ = 368
stbi__psd_decode_rle PROC ; COMDAT
; 6881 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 68 01
00 00 sub rsp, 360 ; 00000168H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 6882 : int count, nleft, len;
; 6883 :
; 6884 : count = 0;
0002a c7 45 04 00 00
00 00 mov DWORD PTR count$[rbp], 0
$LN2@stbi__psd_:
; 6885 : while ((nleft = pixelCount - count) > 0) {
00031 8b 45 04 mov eax, DWORD PTR count$[rbp]
00034 8b 8d 70 01 00
00 mov ecx, DWORD PTR pixelCount$[rbp]
0003a 2b c8 sub ecx, eax
0003c 8b c1 mov eax, ecx
0003e 89 45 24 mov DWORD PTR nleft$[rbp], eax
00041 83 7d 24 00 cmp DWORD PTR nleft$[rbp], 0
00045 0f 8e f6 00 00
00 jle $LN3@stbi__psd_
; 6886 : len = stbi__get8(s);
0004b 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR s$[rbp]
00052 e8 00 00 00 00 call stbi__get8
00057 0f b6 c0 movzx eax, al
0005a 89 45 44 mov DWORD PTR len$[rbp], eax
; 6887 : if (len == 128) {
0005d 81 7d 44 80 00
00 00 cmp DWORD PTR len$[rbp], 128 ; 00000080H
00064 75 05 jne SHORT $LN8@stbi__psd_
00066 e9 d1 00 00 00 jmp $LN9@stbi__psd_
$LN8@stbi__psd_:
; 6888 : // No-op.
; 6889 : } else if (len < 128) {
0006b 81 7d 44 80 00
00 00 cmp DWORD PTR len$[rbp], 128 ; 00000080H
00072 7d 5d jge SHORT $LN10@stbi__psd_
; 6890 : // Copy next len+1 bytes literally.
; 6891 : len++;
00074 8b 45 44 mov eax, DWORD PTR len$[rbp]
00077 ff c0 inc eax
00079 89 45 44 mov DWORD PTR len$[rbp], eax
; 6892 : if (len > nleft)
0007c 8b 45 24 mov eax, DWORD PTR nleft$[rbp]
0007f 39 45 44 cmp DWORD PTR len$[rbp], eax
00082 7e 07 jle SHORT $LN12@stbi__psd_
; 6893 : return 0; // corrupt data
00084 33 c0 xor eax, eax
00086 e9 bb 00 00 00 jmp $LN1@stbi__psd_
$LN12@stbi__psd_:
; 6894 : count += len;
0008b 8b 45 44 mov eax, DWORD PTR len$[rbp]
0008e 8b 4d 04 mov ecx, DWORD PTR count$[rbp]
00091 03 c8 add ecx, eax
00093 8b c1 mov eax, ecx
00095 89 45 04 mov DWORD PTR count$[rbp], eax
$LN4@stbi__psd_:
; 6895 : while (len) {
00098 83 7d 44 00 cmp DWORD PTR len$[rbp], 0
0009c 74 31 je SHORT $LN5@stbi__psd_
; 6896 : *p = stbi__get8(s);
0009e 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a5 e8 00 00 00 00 call stbi__get8
000aa 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR p$[rbp]
000b1 88 01 mov BYTE PTR [rcx], al
; 6897 : p += 4;
000b3 48 8b 85 68 01
00 00 mov rax, QWORD PTR p$[rbp]
000ba 48 83 c0 04 add rax, 4
000be 48 89 85 68 01
00 00 mov QWORD PTR p$[rbp], rax
; 6898 : len--;
000c5 8b 45 44 mov eax, DWORD PTR len$[rbp]
000c8 ff c8 dec eax
000ca 89 45 44 mov DWORD PTR len$[rbp], eax
; 6899 : }
000cd eb c9 jmp SHORT $LN4@stbi__psd_
$LN5@stbi__psd_:
; 6900 : } else if (len > 128) {
000cf eb 6b jmp SHORT $LN11@stbi__psd_
$LN10@stbi__psd_:
000d1 81 7d 44 80 00
00 00 cmp DWORD PTR len$[rbp], 128 ; 00000080H
000d8 7e 62 jle SHORT $LN13@stbi__psd_
; 6901 : stbi_uc val;
; 6902 : // Next -len+1 bytes in the dest are replicated from next source byte.
; 6903 : // (Interpret len as a negative 8-bit int.)
; 6904 : len = 257 - len;
000da b8 01 01 00 00 mov eax, 257 ; 00000101H
000df 2b 45 44 sub eax, DWORD PTR len$[rbp]
000e2 89 45 44 mov DWORD PTR len$[rbp], eax
; 6905 : if (len > nleft)
000e5 8b 45 24 mov eax, DWORD PTR nleft$[rbp]
000e8 39 45 44 cmp DWORD PTR len$[rbp], eax
000eb 7e 04 jle SHORT $LN14@stbi__psd_
; 6906 : return 0; // corrupt data
000ed 33 c0 xor eax, eax
000ef eb 55 jmp SHORT $LN1@stbi__psd_
$LN14@stbi__psd_:
; 6907 : val = stbi__get8(s);
000f1 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR s$[rbp]
000f8 e8 00 00 00 00 call stbi__get8
000fd 88 45 64 mov BYTE PTR val$1[rbp], al
; 6908 : count += len;
00100 8b 45 44 mov eax, DWORD PTR len$[rbp]
00103 8b 4d 04 mov ecx, DWORD PTR count$[rbp]
00106 03 c8 add ecx, eax
00108 8b c1 mov eax, ecx
0010a 89 45 04 mov DWORD PTR count$[rbp], eax
$LN6@stbi__psd_:
; 6909 : while (len) {
0010d 83 7d 44 00 cmp DWORD PTR len$[rbp], 0
00111 74 29 je SHORT $LN7@stbi__psd_
; 6910 : *p = val;
00113 48 8b 85 68 01
00 00 mov rax, QWORD PTR p$[rbp]
0011a 0f b6 4d 64 movzx ecx, BYTE PTR val$1[rbp]
0011e 88 08 mov BYTE PTR [rax], cl
; 6911 : p += 4;
00120 48 8b 85 68 01
00 00 mov rax, QWORD PTR p$[rbp]
00127 48 83 c0 04 add rax, 4
0012b 48 89 85 68 01
00 00 mov QWORD PTR p$[rbp], rax
; 6912 : len--;
00132 8b 45 44 mov eax, DWORD PTR len$[rbp]
00135 ff c8 dec eax
00137 89 45 44 mov DWORD PTR len$[rbp], eax
; 6913 : }
0013a eb d1 jmp SHORT $LN6@stbi__psd_
$LN7@stbi__psd_:
$LN13@stbi__psd_:
$LN11@stbi__psd_:
$LN9@stbi__psd_:
; 6914 : }
; 6915 : }
0013c e9 f0 fe ff ff jmp $LN2@stbi__psd_
$LN3@stbi__psd_:
; 6916 :
; 6917 : return 1;
00141 b8 01 00 00 00 mov eax, 1
$LN1@stbi__psd_:
; 6918 : }
00146 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
0014d 5f pop rdi
0014e 5d pop rbp
0014f c3 ret 0
stbi__psd_decode_rle ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__tga_read_rgb16
_TEXT SEGMENT
px$ = 4
fiveBitMask$ = 36
r$ = 68
g$ = 100
b$ = 132
s$ = 384
out$ = 392
stbi__tga_read_rgb16 PROC ; COMDAT
; 6650 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 88 01
00 00 sub rsp, 392 ; 00000188H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 6651 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s);
00025 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
0002c e8 00 00 00 00 call stbi__get16le
00031 66 89 45 04 mov WORD PTR px$[rbp], ax
; 6652 : stbi__uint16 fiveBitMask = 31;
00035 b8 1f 00 00 00 mov eax, 31
0003a 66 89 45 24 mov WORD PTR fiveBitMask$[rbp], ax
; 6653 : // we have 3 channels with 5bits each
; 6654 : int r = (px >> 10) & fiveBitMask;
0003e 0f b7 45 04 movzx eax, WORD PTR px$[rbp]
00042 c1 f8 0a sar eax, 10
00045 0f b7 4d 24 movzx ecx, WORD PTR fiveBitMask$[rbp]
00049 23 c1 and eax, ecx
0004b 89 45 44 mov DWORD PTR r$[rbp], eax
; 6655 : int g = (px >> 5) & fiveBitMask;
0004e 0f b7 45 04 movzx eax, WORD PTR px$[rbp]
00052 c1 f8 05 sar eax, 5
00055 0f b7 4d 24 movzx ecx, WORD PTR fiveBitMask$[rbp]
00059 23 c1 and eax, ecx
0005b 89 45 64 mov DWORD PTR g$[rbp], eax
; 6656 : int b = px & fiveBitMask;
0005e 0f b7 45 04 movzx eax, WORD PTR px$[rbp]
00062 0f b7 4d 24 movzx ecx, WORD PTR fiveBitMask$[rbp]
00066 23 c1 and eax, ecx
00068 89 85 84 00 00
00 mov DWORD PTR b$[rbp], eax
; 6657 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later
; 6658 : out[0] = (stbi_uc)((r * 255) / 31);
0006e 69 45 44 ff 00
00 00 imul eax, DWORD PTR r$[rbp], 255 ; 000000ffH
00075 99 cdq
00076 b9 1f 00 00 00 mov ecx, 31
0007b f7 f9 idiv ecx
0007d b9 01 00 00 00 mov ecx, 1
00082 48 6b c9 00 imul rcx, rcx, 0
00086 48 8b 95 88 01
00 00 mov rdx, QWORD PTR out$[rbp]
0008d 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6659 : out[1] = (stbi_uc)((g * 255) / 31);
00090 69 45 64 ff 00
00 00 imul eax, DWORD PTR g$[rbp], 255 ; 000000ffH
00097 99 cdq
00098 b9 1f 00 00 00 mov ecx, 31
0009d f7 f9 idiv ecx
0009f b9 01 00 00 00 mov ecx, 1
000a4 48 6b c9 01 imul rcx, rcx, 1
000a8 48 8b 95 88 01
00 00 mov rdx, QWORD PTR out$[rbp]
000af 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6660 : out[2] = (stbi_uc)((b * 255) / 31);
000b2 69 85 84 00 00
00 ff 00 00 00 imul eax, DWORD PTR b$[rbp], 255 ; 000000ffH
000bc 99 cdq
000bd b9 1f 00 00 00 mov ecx, 31
000c2 f7 f9 idiv ecx
000c4 b9 01 00 00 00 mov ecx, 1
000c9 48 6b c9 02 imul rcx, rcx, 2
000cd 48 8b 95 88 01
00 00 mov rdx, QWORD PTR out$[rbp]
000d4 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6661 :
; 6662 : // some people claim that the most significant bit might be used for alpha
; 6663 : // (possibly if an alpha-bit is set in the "image descriptor byte")
; 6664 : // but that only made 16bit test images completely translucent..
; 6665 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha.
; 6666 : }
000d7 48 8d a5 68 01
00 00 lea rsp, QWORD PTR [rbp+360]
000de 5f pop rdi
000df 5d pop rbp
000e0 c3 ret 0
stbi__tga_read_rgb16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__tga_get_comp
_TEXT SEGMENT
tv65 = 192
bits_per_pixel$ = 240
is_grey$ = 248
is_rgb16$ = 256
stbi__tga_get_comp PROC ; COMDAT
; 6516 : {
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000d 55 push rbp
0000e 57 push rdi
0000f 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00027 90 npad 1
; 6517 : // only RGB or RGBA (incl. 16bit) or grey allowed
; 6518 : if (is_rgb16)
00028 48 83 bd 00 01
00 00 00 cmp QWORD PTR is_rgb16$[rbp], 0
00030 74 0d je SHORT $LN4@stbi__tga_
; 6519 : *is_rgb16 = 0;
00032 48 8b 85 00 01
00 00 mov rax, QWORD PTR is_rgb16$[rbp]
00039 c7 00 00 00 00
00 mov DWORD PTR [rax], 0
$LN4@stbi__tga_:
; 6520 : switch (bits_per_pixel) {
0003f 8b 85 f0 00 00
00 mov eax, DWORD PTR bits_per_pixel$[rbp]
00045 89 85 c0 00 00
00 mov DWORD PTR tv65[rbp], eax
0004b 83 bd c0 00 00
00 08 cmp DWORD PTR tv65[rbp], 8
00052 74 26 je SHORT $LN5@stbi__tga_
00054 83 bd c0 00 00
00 0f cmp DWORD PTR tv65[rbp], 15
0005b 74 34 je SHORT $LN8@stbi__tga_
0005d 83 bd c0 00 00
00 10 cmp DWORD PTR tv65[rbp], 16
00064 74 1b je SHORT $LN6@stbi__tga_
00066 83 bd c0 00 00
00 18 cmp DWORD PTR tv65[rbp], 24
0006d 74 40 je SHORT $LN10@stbi__tga_
0006f 83 bd c0 00 00
00 20 cmp DWORD PTR tv65[rbp], 32 ; 00000020H
00076 74 37 je SHORT $LN11@stbi__tga_
00078 eb 46 jmp SHORT $LN12@stbi__tga_
$LN5@stbi__tga_:
; 6521 : case 8:
; 6522 : return STBI_grey;
0007a b8 01 00 00 00 mov eax, 1
0007f eb 41 jmp SHORT $LN1@stbi__tga_
$LN6@stbi__tga_:
; 6523 : case 16:
; 6524 : if (is_grey)
00081 83 bd f8 00 00
00 00 cmp DWORD PTR is_grey$[rbp], 0
00088 74 07 je SHORT $LN7@stbi__tga_
; 6525 : return STBI_grey_alpha;
0008a b8 02 00 00 00 mov eax, 2
0008f eb 31 jmp SHORT $LN1@stbi__tga_
$LN7@stbi__tga_:
$LN8@stbi__tga_:
; 6526 : // fallthrough
; 6527 : case 15:
; 6528 : if (is_rgb16)
00091 48 83 bd 00 01
00 00 00 cmp QWORD PTR is_rgb16$[rbp], 0
00099 74 0d je SHORT $LN9@stbi__tga_
; 6529 : *is_rgb16 = 1;
0009b 48 8b 85 00 01
00 00 mov rax, QWORD PTR is_rgb16$[rbp]
000a2 c7 00 01 00 00
00 mov DWORD PTR [rax], 1
$LN9@stbi__tga_:
; 6530 : return STBI_rgb;
000a8 b8 03 00 00 00 mov eax, 3
000ad eb 13 jmp SHORT $LN1@stbi__tga_
$LN10@stbi__tga_:
$LN11@stbi__tga_:
; 6531 : case 24: // fallthrough
; 6532 : case 32:
; 6533 : return bits_per_pixel / 8;
000af 8b 85 f0 00 00
00 mov eax, DWORD PTR bits_per_pixel$[rbp]
000b5 99 cdq
000b6 83 e2 07 and edx, 7
000b9 03 c2 add eax, edx
000bb c1 f8 03 sar eax, 3
000be eb 02 jmp SHORT $LN1@stbi__tga_
$LN12@stbi__tga_:
; 6534 : default:
; 6535 : return 0;
000c0 33 c0 xor eax, eax
$LN1@stbi__tga_:
; 6536 : }
; 6537 : }
000c2 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000c9 5f pop rdi
000ca 5d pop rbp
000cb c3 ret 0
stbi__tga_get_comp ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bmp_parse_header
_TEXT SEGMENT
hsz$ = 4
compress$1 = 36
i$2 = 68
tv75 = 280
tv95 = 280
tv136 = 280
tv156 = 280
tv168 = 280
tv173 = 280
tv182 = 280
tv224 = 280
tv228 = 280
tv234 = 280
s$ = 320
info$ = 328
stbi__bmp_parse_header PROC ; COMDAT
; 6166 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 6167 : int hsz;
; 6168 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M')
00025 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0002c e8 00 00 00 00 call stbi__get8
00031 0f b6 c0 movzx eax, al
00034 83 f8 42 cmp eax, 66 ; 00000042H
00037 75 14 jne SHORT $LN6@stbi__bmp_
00039 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00040 e8 00 00 00 00 call stbi__get8
00045 0f b6 c0 movzx eax, al
00048 83 f8 4d cmp eax, 77 ; 0000004dH
0004b 74 34 je SHORT $LN5@stbi__bmp_
$LN6@stbi__bmp_:
; 6169 : return stbi__errpuc("not BMP", "Corrupt BMP");
0004d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IANEBNLB@not?5BMP@
00054 e8 00 00 00 00 call stbi__err
00059 85 c0 test eax, eax
0005b 74 0d je SHORT $LN32@stbi__bmp_
0005d 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv75[rbp], 0
00068 eb 0b jmp SHORT $LN33@stbi__bmp_
$LN32@stbi__bmp_:
0006a 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv75[rbp], 0
$LN33@stbi__bmp_:
00075 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv75[rbp]
0007c e9 af 05 00 00 jmp $LN1@stbi__bmp_
$LN5@stbi__bmp_:
; 6170 : stbi__get32le(s); // discard filesize
00081 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00088 e8 00 00 00 00 call stbi__get32le
0008d 90 npad 1
; 6171 : stbi__get16le(s); // discard reserved
0008e 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00095 e8 00 00 00 00 call stbi__get16le
0009a 90 npad 1
; 6172 : stbi__get16le(s); // discard reserved
0009b 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a2 e8 00 00 00 00 call stbi__get16le
000a7 90 npad 1
; 6173 : info->offset = stbi__get32le(s);
000a8 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000af e8 00 00 00 00 call stbi__get32le
000b4 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
000bb 89 41 04 mov DWORD PTR [rcx+4], eax
; 6174 : info->hsz = hsz = stbi__get32le(s);
000be 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c5 e8 00 00 00 00 call stbi__get32le
000ca 89 45 04 mov DWORD PTR hsz$[rbp], eax
000cd 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
000d4 8b 4d 04 mov ecx, DWORD PTR hsz$[rbp]
000d7 89 48 08 mov DWORD PTR [rax+8], ecx
; 6175 : info->mr = info->mg = info->mb = info->ma = 0;
000da 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
000e1 c7 40 18 00 00
00 00 mov DWORD PTR [rax+24], 0
000e8 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
000ef c7 40 14 00 00
00 00 mov DWORD PTR [rax+20], 0
000f6 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
000fd c7 40 10 00 00
00 00 mov DWORD PTR [rax+16], 0
00104 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
0010b c7 40 0c 00 00
00 00 mov DWORD PTR [rax+12], 0
; 6176 : info->extra_read = 14;
00112 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
00119 c7 40 20 0e 00
00 00 mov DWORD PTR [rax+32], 14
; 6177 :
; 6178 : if (info->offset < 0)
00120 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
00127 83 78 04 00 cmp DWORD PTR [rax+4], 0
0012b 7d 34 jge SHORT $LN7@stbi__bmp_
; 6179 : return stbi__errpuc("bad BMP", "bad BMP");
0012d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
00134 e8 00 00 00 00 call stbi__err
00139 85 c0 test eax, eax
0013b 74 0d je SHORT $LN34@stbi__bmp_
0013d 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv95[rbp], 0
00148 eb 0b jmp SHORT $LN35@stbi__bmp_
$LN34@stbi__bmp_:
0014a 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv95[rbp], 0
$LN35@stbi__bmp_:
00155 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv95[rbp]
0015c e9 cf 04 00 00 jmp $LN1@stbi__bmp_
$LN7@stbi__bmp_:
; 6180 :
; 6181 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124)
00161 83 7d 04 0c cmp DWORD PTR hsz$[rbp], 12
00165 74 4c je SHORT $LN8@stbi__bmp_
00167 83 7d 04 28 cmp DWORD PTR hsz$[rbp], 40 ; 00000028H
0016b 74 46 je SHORT $LN8@stbi__bmp_
0016d 83 7d 04 38 cmp DWORD PTR hsz$[rbp], 56 ; 00000038H
00171 74 40 je SHORT $LN8@stbi__bmp_
00173 83 7d 04 6c cmp DWORD PTR hsz$[rbp], 108 ; 0000006cH
00177 74 3a je SHORT $LN8@stbi__bmp_
00179 83 7d 04 7c cmp DWORD PTR hsz$[rbp], 124 ; 0000007cH
0017d 74 34 je SHORT $LN8@stbi__bmp_
; 6182 : return stbi__errpuc("unknown BMP", "BMP type not supported: unknown");
0017f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@KHBIBJBG@unknown?5BMP@
00186 e8 00 00 00 00 call stbi__err
0018b 85 c0 test eax, eax
0018d 74 0d je SHORT $LN36@stbi__bmp_
0018f 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv136[rbp], 0
0019a eb 0b jmp SHORT $LN37@stbi__bmp_
$LN36@stbi__bmp_:
0019c 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv136[rbp], 0
$LN37@stbi__bmp_:
001a7 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv136[rbp]
001ae e9 7d 04 00 00 jmp $LN1@stbi__bmp_
$LN8@stbi__bmp_:
; 6183 : if (hsz == 12) {
001b3 83 7d 04 0c cmp DWORD PTR hsz$[rbp], 12
001b7 75 2d jne SHORT $LN9@stbi__bmp_
; 6184 : s->img_x = stbi__get16le(s);
001b9 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
001c0 e8 00 00 00 00 call stbi__get16le
001c5 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
001cc 89 01 mov DWORD PTR [rcx], eax
; 6185 : s->img_y = stbi__get16le(s);
001ce 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
001d5 e8 00 00 00 00 call stbi__get16le
001da 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
001e1 89 41 04 mov DWORD PTR [rcx+4], eax
; 6186 : } else {
001e4 eb 2b jmp SHORT $LN10@stbi__bmp_
$LN9@stbi__bmp_:
; 6187 : s->img_x = stbi__get32le(s);
001e6 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
001ed e8 00 00 00 00 call stbi__get32le
001f2 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
001f9 89 01 mov DWORD PTR [rcx], eax
; 6188 : s->img_y = stbi__get32le(s);
001fb 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00202 e8 00 00 00 00 call stbi__get32le
00207 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0020e 89 41 04 mov DWORD PTR [rcx+4], eax
$LN10@stbi__bmp_:
; 6189 : }
; 6190 : if (stbi__get16le(s) != 1)
00211 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00218 e8 00 00 00 00 call stbi__get16le
0021d 83 f8 01 cmp eax, 1
00220 74 34 je SHORT $LN11@stbi__bmp_
; 6191 : return stbi__errpuc("bad BMP", "bad BMP");
00222 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
00229 e8 00 00 00 00 call stbi__err
0022e 85 c0 test eax, eax
00230 74 0d je SHORT $LN38@stbi__bmp_
00232 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv156[rbp], 0
0023d eb 0b jmp SHORT $LN39@stbi__bmp_
$LN38@stbi__bmp_:
0023f 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv156[rbp], 0
$LN39@stbi__bmp_:
0024a 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv156[rbp]
00251 e9 da 03 00 00 jmp $LN1@stbi__bmp_
$LN11@stbi__bmp_:
; 6192 : info->bpp = stbi__get16le(s);
00256 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0025d e8 00 00 00 00 call stbi__get16le
00262 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00269 89 01 mov DWORD PTR [rcx], eax
; 6193 : if (hsz != 12) {
0026b 83 7d 04 0c cmp DWORD PTR hsz$[rbp], 12
0026f 0f 84 b6 03 00
00 je $LN12@stbi__bmp_
; 6194 : int compress = stbi__get32le(s);
00275 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0027c e8 00 00 00 00 call stbi__get32le
00281 89 45 24 mov DWORD PTR compress$1[rbp], eax
; 6195 : if (compress == 1 || compress == 2)
00284 83 7d 24 01 cmp DWORD PTR compress$1[rbp], 1
00288 74 06 je SHORT $LN14@stbi__bmp_
0028a 83 7d 24 02 cmp DWORD PTR compress$1[rbp], 2
0028e 75 34 jne SHORT $LN13@stbi__bmp_
$LN14@stbi__bmp_:
; 6196 : return stbi__errpuc("BMP RLE", "BMP type not supported: RLE");
00290 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IMHMNOIB@BMP?5RLE@
00297 e8 00 00 00 00 call stbi__err
0029c 85 c0 test eax, eax
0029e 74 0d je SHORT $LN40@stbi__bmp_
002a0 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv168[rbp], 0
002ab eb 0b jmp SHORT $LN41@stbi__bmp_
$LN40@stbi__bmp_:
002ad 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv168[rbp], 0
$LN41@stbi__bmp_:
002b8 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv168[rbp]
002bf e9 6c 03 00 00 jmp $LN1@stbi__bmp_
$LN13@stbi__bmp_:
; 6197 : if (compress >= 4)
002c4 83 7d 24 04 cmp DWORD PTR compress$1[rbp], 4
002c8 7c 34 jl SHORT $LN15@stbi__bmp_
; 6198 : return stbi__errpuc(
002ca 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@
002d1 e8 00 00 00 00 call stbi__err
002d6 85 c0 test eax, eax
002d8 74 0d je SHORT $LN42@stbi__bmp_
002da 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv173[rbp], 0
002e5 eb 0b jmp SHORT $LN43@stbi__bmp_
$LN42@stbi__bmp_:
002e7 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv173[rbp], 0
$LN43@stbi__bmp_:
002f2 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv173[rbp]
002f9 e9 32 03 00 00 jmp $LN1@stbi__bmp_
$LN15@stbi__bmp_:
; 6199 : "BMP JPEG/PNG",
; 6200 : "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes
; 6201 : if (compress == 3 && info->bpp != 16 && info->bpp != 32)
002fe 83 7d 24 03 cmp DWORD PTR compress$1[rbp], 3
00302 75 4c jne SHORT $LN16@stbi__bmp_
00304 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
0030b 83 38 10 cmp DWORD PTR [rax], 16
0030e 74 40 je SHORT $LN16@stbi__bmp_
00310 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
00317 83 38 20 cmp DWORD PTR [rax], 32 ; 00000020H
0031a 74 34 je SHORT $LN16@stbi__bmp_
; 6202 : return stbi__errpuc("bad BMP",
0031c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
00323 e8 00 00 00 00 call stbi__err
00328 85 c0 test eax, eax
0032a 74 0d je SHORT $LN44@stbi__bmp_
0032c 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv182[rbp], 0
00337 eb 0b jmp SHORT $LN45@stbi__bmp_
$LN44@stbi__bmp_:
00339 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv182[rbp], 0
$LN45@stbi__bmp_:
00344 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv182[rbp]
0034b e9 e0 02 00 00 jmp $LN1@stbi__bmp_
$LN16@stbi__bmp_:
; 6203 : "bad BMP"); // bitfields requires 16 or 32 bits/pixel
; 6204 : stbi__get32le(s); // discard sizeof
00350 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00357 e8 00 00 00 00 call stbi__get32le
0035c 90 npad 1
; 6205 : stbi__get32le(s); // discard hres
0035d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00364 e8 00 00 00 00 call stbi__get32le
00369 90 npad 1
; 6206 : stbi__get32le(s); // discard vres
0036a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00371 e8 00 00 00 00 call stbi__get32le
00376 90 npad 1
; 6207 : stbi__get32le(s); // discard colorsused
00377 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0037e e8 00 00 00 00 call stbi__get32le
00383 90 npad 1
; 6208 : stbi__get32le(s); // discard max important
00384 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0038b e8 00 00 00 00 call stbi__get32le
00390 90 npad 1
; 6209 : if (hsz == 40 || hsz == 56) {
00391 83 7d 04 28 cmp DWORD PTR hsz$[rbp], 40 ; 00000028H
00395 74 0a je SHORT $LN19@stbi__bmp_
00397 83 7d 04 38 cmp DWORD PTR hsz$[rbp], 56 ; 00000038H
0039b 0f 85 6f 01 00
00 jne $LN17@stbi__bmp_
$LN19@stbi__bmp_:
; 6210 : if (hsz == 56) {
003a1 83 7d 04 38 cmp DWORD PTR hsz$[rbp], 56 ; 00000038H
003a5 75 34 jne SHORT $LN20@stbi__bmp_
; 6211 : stbi__get32le(s);
003a7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
003ae e8 00 00 00 00 call stbi__get32le
003b3 90 npad 1
; 6212 : stbi__get32le(s);
003b4 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
003bb e8 00 00 00 00 call stbi__get32le
003c0 90 npad 1
; 6213 : stbi__get32le(s);
003c1 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
003c8 e8 00 00 00 00 call stbi__get32le
003cd 90 npad 1
; 6214 : stbi__get32le(s);
003ce 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
003d5 e8 00 00 00 00 call stbi__get32le
003da 90 npad 1
$LN20@stbi__bmp_:
; 6215 : }
; 6216 : if (info->bpp == 16 || info->bpp == 32) {
003db 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
003e2 83 38 10 cmp DWORD PTR [rax], 16
003e5 74 10 je SHORT $LN22@stbi__bmp_
003e7 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
003ee 83 38 20 cmp DWORD PTR [rax], 32 ; 00000020H
003f1 0f 85 14 01 00
00 jne $LN21@stbi__bmp_
$LN22@stbi__bmp_:
; 6217 : if (compress == 0) {
003f7 83 7d 24 00 cmp DWORD PTR compress$1[rbp], 0
003fb 75 15 jne SHORT $LN23@stbi__bmp_
; 6218 : stbi__bmp_set_mask_defaults(info, compress);
003fd 8b 55 24 mov edx, DWORD PTR compress$1[rbp]
00400 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00407 e8 00 00 00 00 call stbi__bmp_set_mask_defaults
0040c 90 npad 1
0040d e9 f9 00 00 00 jmp $LN24@stbi__bmp_
$LN23@stbi__bmp_:
; 6219 : } else if (compress == 3) {
00412 83 7d 24 03 cmp DWORD PTR compress$1[rbp], 3
00416 0f 85 bb 00 00
00 jne $LN25@stbi__bmp_
; 6220 : info->mr = stbi__get32le(s);
0041c 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00423 e8 00 00 00 00 call stbi__get32le
00428 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
0042f 89 41 0c mov DWORD PTR [rcx+12], eax
; 6221 : info->mg = stbi__get32le(s);
00432 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00439 e8 00 00 00 00 call stbi__get32le
0043e 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00445 89 41 10 mov DWORD PTR [rcx+16], eax
; 6222 : info->mb = stbi__get32le(s);
00448 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0044f e8 00 00 00 00 call stbi__get32le
00454 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
0045b 89 41 14 mov DWORD PTR [rcx+20], eax
; 6223 : info->extra_read += 12;
0045e 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
00465 8b 40 20 mov eax, DWORD PTR [rax+32]
00468 83 c0 0c add eax, 12
0046b 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00472 89 41 20 mov DWORD PTR [rcx+32], eax
; 6224 : // not documented, but generated by photoshop and handled by mspaint
; 6225 : if (info->mr == info->mg && info->mg == info->mb) {
00475 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
0047c 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00483 8b 49 10 mov ecx, DWORD PTR [rcx+16]
00486 39 48 0c cmp DWORD PTR [rax+12], ecx
00489 75 4a jne SHORT $LN27@stbi__bmp_
0048b 48 8b 85 48 01
00 00 mov rax, QWORD PTR info$[rbp]
00492 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00499 8b 49 14 mov ecx, DWORD PTR [rcx+20]
0049c 39 48 10 cmp DWORD PTR [rax+16], ecx
0049f 75 34 jne SHORT $LN27@stbi__bmp_
; 6226 : // ?!?!?
; 6227 : return stbi__errpuc("bad BMP", "bad BMP");
004a1 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
004a8 e8 00 00 00 00 call stbi__err
004ad 85 c0 test eax, eax
004af 74 0d je SHORT $LN46@stbi__bmp_
004b1 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv224[rbp], 0
004bc eb 0b jmp SHORT $LN47@stbi__bmp_
$LN46@stbi__bmp_:
004be 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv224[rbp], 0
$LN47@stbi__bmp_:
004c9 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv224[rbp]
004d0 e9 5b 01 00 00 jmp $LN1@stbi__bmp_
$LN27@stbi__bmp_:
; 6228 : }
; 6229 : } else
004d5 eb 34 jmp SHORT $LN26@stbi__bmp_
$LN25@stbi__bmp_:
; 6230 : return stbi__errpuc("bad BMP", "bad BMP");
004d7 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
004de e8 00 00 00 00 call stbi__err
004e3 85 c0 test eax, eax
004e5 74 0d je SHORT $LN48@stbi__bmp_
004e7 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv228[rbp], 0
004f2 eb 0b jmp SHORT $LN49@stbi__bmp_
$LN48@stbi__bmp_:
004f4 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv228[rbp], 0
$LN49@stbi__bmp_:
004ff 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv228[rbp]
00506 e9 25 01 00 00 jmp $LN1@stbi__bmp_
$LN26@stbi__bmp_:
$LN24@stbi__bmp_:
$LN21@stbi__bmp_:
; 6231 : }
; 6232 : } else {
0050b e9 1b 01 00 00 jmp $LN18@stbi__bmp_
$LN17@stbi__bmp_:
; 6233 : // V4/V5 header
; 6234 : int i;
; 6235 : if (hsz != 108 && hsz != 124)
00510 83 7d 04 6c cmp DWORD PTR hsz$[rbp], 108 ; 0000006cH
00514 74 3a je SHORT $LN28@stbi__bmp_
00516 83 7d 04 7c cmp DWORD PTR hsz$[rbp], 124 ; 0000007cH
0051a 74 34 je SHORT $LN28@stbi__bmp_
; 6236 : return stbi__errpuc("bad BMP", "bad BMP");
0051c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
00523 e8 00 00 00 00 call stbi__err
00528 85 c0 test eax, eax
0052a 74 0d je SHORT $LN50@stbi__bmp_
0052c 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv234[rbp], 0
00537 eb 0b jmp SHORT $LN51@stbi__bmp_
$LN50@stbi__bmp_:
00539 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv234[rbp], 0
$LN51@stbi__bmp_:
00544 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv234[rbp]
0054b e9 e0 00 00 00 jmp $LN1@stbi__bmp_
$LN28@stbi__bmp_:
; 6237 : info->mr = stbi__get32le(s);
00550 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00557 e8 00 00 00 00 call stbi__get32le
0055c 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00563 89 41 0c mov DWORD PTR [rcx+12], eax
; 6238 : info->mg = stbi__get32le(s);
00566 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0056d e8 00 00 00 00 call stbi__get32le
00572 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
00579 89 41 10 mov DWORD PTR [rcx+16], eax
; 6239 : info->mb = stbi__get32le(s);
0057c 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00583 e8 00 00 00 00 call stbi__get32le
00588 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
0058f 89 41 14 mov DWORD PTR [rcx+20], eax
; 6240 : info->ma = stbi__get32le(s);
00592 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00599 e8 00 00 00 00 call stbi__get32le
0059e 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
005a5 89 41 18 mov DWORD PTR [rcx+24], eax
; 6241 : if (compress !=
005a8 83 7d 24 03 cmp DWORD PTR compress$1[rbp], 3
005ac 74 10 je SHORT $LN29@stbi__bmp_
; 6242 : 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs
; 6243 : stbi__bmp_set_mask_defaults(info, compress);
005ae 8b 55 24 mov edx, DWORD PTR compress$1[rbp]
005b1 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR info$[rbp]
005b8 e8 00 00 00 00 call stbi__bmp_set_mask_defaults
005bd 90 npad 1
$LN29@stbi__bmp_:
; 6244 : stbi__get32le(s); // discard color space
005be 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
005c5 e8 00 00 00 00 call stbi__get32le
005ca 90 npad 1
; 6245 : for (i = 0; i < 12; ++i)
005cb c7 45 44 00 00
00 00 mov DWORD PTR i$2[rbp], 0
005d2 eb 08 jmp SHORT $LN4@stbi__bmp_
$LN2@stbi__bmp_:
005d4 8b 45 44 mov eax, DWORD PTR i$2[rbp]
005d7 ff c0 inc eax
005d9 89 45 44 mov DWORD PTR i$2[rbp], eax
$LN4@stbi__bmp_:
005dc 83 7d 44 0c cmp DWORD PTR i$2[rbp], 12
005e0 7d 0f jge SHORT $LN3@stbi__bmp_
; 6246 : stbi__get32le(s); // discard color space parameters
005e2 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
005e9 e8 00 00 00 00 call stbi__get32le
005ee 90 npad 1
005ef eb e3 jmp SHORT $LN2@stbi__bmp_
$LN3@stbi__bmp_:
; 6247 : if (hsz == 124) {
005f1 83 7d 04 7c cmp DWORD PTR hsz$[rbp], 124 ; 0000007cH
005f5 75 34 jne SHORT $LN30@stbi__bmp_
; 6248 : stbi__get32le(s); // discard rendering intent
005f7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
005fe e8 00 00 00 00 call stbi__get32le
00603 90 npad 1
; 6249 : stbi__get32le(s); // discard offset of profile data
00604 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0060b e8 00 00 00 00 call stbi__get32le
00610 90 npad 1
; 6250 : stbi__get32le(s); // discard size of profile data
00611 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00618 e8 00 00 00 00 call stbi__get32le
0061d 90 npad 1
; 6251 : stbi__get32le(s); // discard reserved
0061e 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00625 e8 00 00 00 00 call stbi__get32le
0062a 90 npad 1
$LN30@stbi__bmp_:
$LN18@stbi__bmp_:
$LN12@stbi__bmp_:
; 6252 : }
; 6253 : }
; 6254 : }
; 6255 : return (void *)1;
0062b b8 01 00 00 00 mov eax, 1
$LN1@stbi__bmp_:
; 6256 : }
00630 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
00637 5f pop rdi
00638 5d pop rbp
00639 c3 ret 0
stbi__bmp_parse_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bmp_set_mask_defaults
_TEXT SEGMENT
info$ = 224
compress$ = 232
stbi__bmp_set_mask_defaults PROC ; COMDAT
; 6139 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 6140 : // BI_BITFIELDS specifies masks explicitly, don't override
; 6141 : if (compress == 3)
00024 83 bd e8 00 00
00 03 cmp DWORD PTR compress$[rbp], 3
0002b 75 0a jne SHORT $LN2@stbi__bmp_
; 6142 : return 1;
0002d b8 01 00 00 00 mov eax, 1
00032 e9 dd 00 00 00 jmp $LN1@stbi__bmp_
$LN2@stbi__bmp_:
; 6143 :
; 6144 : if (compress == 0) {
00037 83 bd e8 00 00
00 00 cmp DWORD PTR compress$[rbp], 0
0003e 0f 85 ce 00 00
00 jne $LN3@stbi__bmp_
; 6145 : if (info->bpp == 16) {
00044 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
0004b 83 38 10 cmp DWORD PTR [rax], 16
0004e 75 2f jne SHORT $LN4@stbi__bmp_
; 6146 : info->mr = 31u << 10;
00050 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
00057 c7 40 0c 00 7c
00 00 mov DWORD PTR [rax+12], 31744 ; 00007c00H
; 6147 : info->mg = 31u << 5;
0005e 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
00065 c7 40 10 e0 03
00 00 mov DWORD PTR [rax+16], 992 ; 000003e0H
; 6148 : info->mb = 31u << 0;
0006c 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
00073 c7 40 14 1f 00
00 00 mov DWORD PTR [rax+20], 31
0007a e9 8c 00 00 00 jmp $LN5@stbi__bmp_
$LN4@stbi__bmp_:
; 6149 : } else if (info->bpp == 32) {
0007f 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
00086 83 38 20 cmp DWORD PTR [rax], 32 ; 00000020H
00089 75 48 jne SHORT $LN6@stbi__bmp_
; 6150 : info->mr = 0xffu << 16;
0008b 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
00092 c7 40 0c 00 00
ff 00 mov DWORD PTR [rax+12], 16711680 ; 00ff0000H
; 6151 : info->mg = 0xffu << 8;
00099 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
000a0 c7 40 10 00 ff
00 00 mov DWORD PTR [rax+16], 65280 ; 0000ff00H
; 6152 : info->mb = 0xffu << 0;
000a7 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
000ae c7 40 14 ff 00
00 00 mov DWORD PTR [rax+20], 255 ; 000000ffH
; 6153 : info->ma = 0xffu << 24;
000b5 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
000bc c7 40 18 00 00
00 ff mov DWORD PTR [rax+24], -16777216 ; ff000000H
; 6154 : info->all_a =
000c3 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
000ca c7 40 1c 00 00
00 00 mov DWORD PTR [rax+28], 0
; 6155 : 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0
; 6156 : } else {
000d1 eb 38 jmp SHORT $LN7@stbi__bmp_
$LN6@stbi__bmp_:
; 6157 : // otherwise, use defaults, which is all-0
; 6158 : info->mr = info->mg = info->mb = info->ma = 0;
000d3 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
000da c7 40 18 00 00
00 00 mov DWORD PTR [rax+24], 0
000e1 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
000e8 c7 40 14 00 00
00 00 mov DWORD PTR [rax+20], 0
000ef 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
000f6 c7 40 10 00 00
00 00 mov DWORD PTR [rax+16], 0
000fd 48 8b 85 e0 00
00 00 mov rax, QWORD PTR info$[rbp]
00104 c7 40 0c 00 00
00 00 mov DWORD PTR [rax+12], 0
$LN7@stbi__bmp_:
$LN5@stbi__bmp_:
; 6159 : }
; 6160 : return 1;
0010b b8 01 00 00 00 mov eax, 1
00110 eb 02 jmp SHORT $LN1@stbi__bmp_
$LN3@stbi__bmp_:
; 6161 : }
; 6162 : return 0; // error
00112 33 c0 xor eax, eax
$LN1@stbi__bmp_:
; 6163 : }
00114 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0011b 5f pop rdi
0011c 5d pop rbp
0011d c3 ret 0
stbi__bmp_set_mask_defaults ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__shiftsigned
_TEXT SEGMENT
v$ = 224
shift$ = 232
bits$ = 240
stbi__shiftsigned PROC ; COMDAT
; 6107 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000d 55 push rbp
0000e 57 push rdi
0000f 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00027 90 npad 1
; 6108 : static unsigned int mul_table[9] = {
; 6109 : 0,
; 6110 : 0xff /*0b11111111*/,
; 6111 : 0x55 /*0b01010101*/,
; 6112 : 0x49 /*0b01001001*/,
; 6113 : 0x11 /*0b00010001*/,
; 6114 : 0x21 /*0b00100001*/,
; 6115 : 0x41 /*0b01000001*/,
; 6116 : 0x81 /*0b10000001*/,
; 6117 : 0x01 /*0b00000001*/,
; 6118 : };
; 6119 : static unsigned int shift_table[9] = {
; 6120 : 0, 0, 0, 1, 0, 2, 4, 6, 0,
; 6121 : };
; 6122 : if (shift < 0)
00028 83 bd e8 00 00
00 00 cmp DWORD PTR shift$[rbp], 0
0002f 7d 1b jge SHORT $LN2@stbi__shif
; 6123 : v <<= -shift;
00031 8b 85 e8 00 00
00 mov eax, DWORD PTR shift$[rbp]
00037 f7 d8 neg eax
00039 0f b6 c8 movzx ecx, al
0003c 8b 85 e0 00 00
00 mov eax, DWORD PTR v$[rbp]
00042 d3 e0 shl eax, cl
00044 89 85 e0 00 00
00 mov DWORD PTR v$[rbp], eax
0004a eb 17 jmp SHORT $LN3@stbi__shif
$LN2@stbi__shif:
; 6124 : else
; 6125 : v >>= shift;
0004c 8b 85 e8 00 00
00 mov eax, DWORD PTR shift$[rbp]
00052 0f b6 c8 movzx ecx, al
00055 8b 85 e0 00 00
00 mov eax, DWORD PTR v$[rbp]
0005b d3 e8 shr eax, cl
0005d 89 85 e0 00 00
00 mov DWORD PTR v$[rbp], eax
$LN3@stbi__shif:
; 6126 : STBI_ASSERT(v < 256);
00063 81 bd e0 00 00
00 00 01 00 00 cmp DWORD PTR v$[rbp], 256 ; 00000100H
0006d 72 1c jb SHORT $LN5@stbi__shif
0006f 41 b8 ee 17 00
00 mov r8d, 6126 ; 000017eeH
00075 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
0007c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@
00083 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00089 33 c0 xor eax, eax
$LN5@stbi__shif:
; 6127 : v >>= (8 - bits);
0008b b8 08 00 00 00 mov eax, 8
00090 2b 85 f0 00 00
00 sub eax, DWORD PTR bits$[rbp]
00096 0f b6 c8 movzx ecx, al
00099 8b 85 e0 00 00
00 mov eax, DWORD PTR v$[rbp]
0009f d3 e8 shr eax, cl
000a1 89 85 e0 00 00
00 mov DWORD PTR v$[rbp], eax
; 6128 : STBI_ASSERT(bits >= 0 && bits <= 8);
000a7 83 bd f0 00 00
00 00 cmp DWORD PTR bits$[rbp], 0
000ae 7c 09 jl SHORT $LN6@stbi__shif
000b0 83 bd f0 00 00
00 08 cmp DWORD PTR bits$[rbp], 8
000b7 7e 1c jle SHORT $LN7@stbi__shif
$LN6@stbi__shif:
000b9 41 b8 f0 17 00
00 mov r8d, 6128 ; 000017f0H
000bf 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
000c6 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@
000cd ff 15 00 00 00
00 call QWORD PTR __imp__wassert
000d3 33 c0 xor eax, eax
$LN7@stbi__shif:
; 6129 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits];
000d5 48 63 85 f0 00
00 00 movsxd rax, DWORD PTR bits$[rbp]
000dc 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?mul_table@?1??stbi__shiftsigned@@9@9
000e3 8b 95 e0 00 00
00 mov edx, DWORD PTR v$[rbp]
000e9 0f af 14 81 imul edx, DWORD PTR [rcx+rax*4]
000ed 8b c2 mov eax, edx
000ef 48 63 8d f0 00
00 00 movsxd rcx, DWORD PTR bits$[rbp]
000f6 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?shift_table@?1??stbi__shiftsigned@@9@9
000fd 8b 0c 8a mov ecx, DWORD PTR [rdx+rcx*4]
00100 d3 f8 sar eax, cl
; 6130 : }
00102 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00109 5f pop rdi
0010a 5d pop rbp
0010b c3 ret 0
stbi__shiftsigned ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bitcount
_TEXT SEGMENT
a$ = 224
stbi__bitcount PROC ; COMDAT
; 6094 : {
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 6095 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2
0001f 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
00025 25 55 55 55 55 and eax, 1431655765 ; 55555555H
0002a 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00030 d1 e9 shr ecx, 1
00032 81 e1 55 55 55
55 and ecx, 1431655765 ; 55555555H
00038 03 c1 add eax, ecx
0003a 89 85 e0 00 00
00 mov DWORD PTR a$[rbp], eax
; 6096 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4
00040 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
00046 25 33 33 33 33 and eax, 858993459 ; 33333333H
0004b 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00051 c1 e9 02 shr ecx, 2
00054 81 e1 33 33 33
33 and ecx, 858993459 ; 33333333H
0005a 03 c1 add eax, ecx
0005c 89 85 e0 00 00
00 mov DWORD PTR a$[rbp], eax
; 6097 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits
00062 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
00068 c1 e8 04 shr eax, 4
0006b 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00071 03 c8 add ecx, eax
00073 8b c1 mov eax, ecx
00075 25 0f 0f 0f 0f and eax, 252645135 ; 0f0f0f0fH
0007a 89 85 e0 00 00
00 mov DWORD PTR a$[rbp], eax
; 6098 : a = (a + (a >> 8)); // max 16 per 8 bits
00080 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
00086 c1 e8 08 shr eax, 8
00089 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
0008f 03 c8 add ecx, eax
00091 8b c1 mov eax, ecx
00093 89 85 e0 00 00
00 mov DWORD PTR a$[rbp], eax
; 6099 : a = (a + (a >> 16)); // max 32 per 8 bits
00099 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
0009f c1 e8 10 shr eax, 16
000a2 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
000a8 03 c8 add ecx, eax
000aa 8b c1 mov eax, ecx
000ac 89 85 e0 00 00
00 mov DWORD PTR a$[rbp], eax
; 6100 : return a & 0xff;
000b2 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
000b8 25 ff 00 00 00 and eax, 255 ; 000000ffH
; 6101 : }
000bd 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
000c4 5f pop rdi
000c5 5d pop rbp
000c6 c3 ret 0
stbi__bitcount ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__high_bit
_TEXT SEGMENT
n$ = 4
z$ = 256
stbi__high_bit PROC ; COMDAT
; 6067 : {
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 6068 : int n = 0;
0001f c7 45 04 00 00
00 00 mov DWORD PTR n$[rbp], 0
; 6069 : if (z == 0)
00026 83 bd 00 01 00
00 00 cmp DWORD PTR z$[rbp], 0
0002d 75 0a jne SHORT $LN2@stbi__high
; 6070 : return -1;
0002f b8 ff ff ff ff mov eax, -1
00034 e9 9e 00 00 00 jmp $LN1@stbi__high
$LN2@stbi__high:
; 6071 : if (z >= 0x10000) {
00039 81 bd 00 01 00
00 00 00 01 00 cmp DWORD PTR z$[rbp], 65536 ; 00010000H
00043 72 18 jb SHORT $LN3@stbi__high
; 6072 : n += 16;
00045 8b 45 04 mov eax, DWORD PTR n$[rbp]
00048 83 c0 10 add eax, 16
0004b 89 45 04 mov DWORD PTR n$[rbp], eax
; 6073 : z >>= 16;
0004e 8b 85 00 01 00
00 mov eax, DWORD PTR z$[rbp]
00054 c1 e8 10 shr eax, 16
00057 89 85 00 01 00
00 mov DWORD PTR z$[rbp], eax
$LN3@stbi__high:
; 6074 : }
; 6075 : if (z >= 0x00100) {
0005d 81 bd 00 01 00
00 00 01 00 00 cmp DWORD PTR z$[rbp], 256 ; 00000100H
00067 72 18 jb SHORT $LN4@stbi__high
; 6076 : n += 8;
00069 8b 45 04 mov eax, DWORD PTR n$[rbp]
0006c 83 c0 08 add eax, 8
0006f 89 45 04 mov DWORD PTR n$[rbp], eax
; 6077 : z >>= 8;
00072 8b 85 00 01 00
00 mov eax, DWORD PTR z$[rbp]
00078 c1 e8 08 shr eax, 8
0007b 89 85 00 01 00
00 mov DWORD PTR z$[rbp], eax
$LN4@stbi__high:
; 6078 : }
; 6079 : if (z >= 0x00010) {
00081 83 bd 00 01 00
00 10 cmp DWORD PTR z$[rbp], 16
00088 72 18 jb SHORT $LN5@stbi__high
; 6080 : n += 4;
0008a 8b 45 04 mov eax, DWORD PTR n$[rbp]
0008d 83 c0 04 add eax, 4
00090 89 45 04 mov DWORD PTR n$[rbp], eax
; 6081 : z >>= 4;
00093 8b 85 00 01 00
00 mov eax, DWORD PTR z$[rbp]
00099 c1 e8 04 shr eax, 4
0009c 89 85 00 01 00
00 mov DWORD PTR z$[rbp], eax
$LN5@stbi__high:
; 6082 : }
; 6083 : if (z >= 0x00004) {
000a2 83 bd 00 01 00
00 04 cmp DWORD PTR z$[rbp], 4
000a9 72 18 jb SHORT $LN6@stbi__high
; 6084 : n += 2;
000ab 8b 45 04 mov eax, DWORD PTR n$[rbp]
000ae 83 c0 02 add eax, 2
000b1 89 45 04 mov DWORD PTR n$[rbp], eax
; 6085 : z >>= 2;
000b4 8b 85 00 01 00
00 mov eax, DWORD PTR z$[rbp]
000ba c1 e8 02 shr eax, 2
000bd 89 85 00 01 00
00 mov DWORD PTR z$[rbp], eax
$LN6@stbi__high:
; 6086 : }
; 6087 : if (z >= 0x00002) {
000c3 83 bd 00 01 00
00 02 cmp DWORD PTR z$[rbp], 2
000ca 72 08 jb SHORT $LN7@stbi__high
; 6088 : n += 1; /* >>= 1;*/
000cc 8b 45 04 mov eax, DWORD PTR n$[rbp]
000cf ff c0 inc eax
000d1 89 45 04 mov DWORD PTR n$[rbp], eax
$LN7@stbi__high:
; 6089 : }
; 6090 : return n;
000d4 8b 45 04 mov eax, DWORD PTR n$[rbp]
$LN1@stbi__high:
; 6091 : }
000d7 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000de 5f pop rdi
000df 5d pop rbp
000e0 c3 ret 0
stbi__high_bit ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bmp_test_raw
_TEXT SEGMENT
r$ = 4
sz$ = 36
tv83 = 244
s$ = 288
stbi__bmp_test_raw PROC ; COMDAT
; 6042 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 6043 : int r;
; 6044 : int sz;
; 6045 : if (stbi__get8(s) != 'B')
00020 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get8
0002c 0f b6 c0 movzx eax, al
0002f 83 f8 42 cmp eax, 66 ; 00000042H
00032 74 07 je SHORT $LN2@stbi__bmp_
; 6046 : return 0;
00034 33 c0 xor eax, eax
00036 e9 9e 00 00 00 jmp $LN1@stbi__bmp_
$LN2@stbi__bmp_:
; 6047 : if (stbi__get8(s) != 'M')
0003b 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00042 e8 00 00 00 00 call stbi__get8
00047 0f b6 c0 movzx eax, al
0004a 83 f8 4d cmp eax, 77 ; 0000004dH
0004d 74 07 je SHORT $LN3@stbi__bmp_
; 6048 : return 0;
0004f 33 c0 xor eax, eax
00051 e9 83 00 00 00 jmp $LN1@stbi__bmp_
$LN3@stbi__bmp_:
; 6049 : stbi__get32le(s); // discard filesize
00056 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
0005d e8 00 00 00 00 call stbi__get32le
00062 90 npad 1
; 6050 : stbi__get16le(s); // discard reserved
00063 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__get16le
0006f 90 npad 1
; 6051 : stbi__get16le(s); // discard reserved
00070 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00077 e8 00 00 00 00 call stbi__get16le
0007c 90 npad 1
; 6052 : stbi__get32le(s); // discard data offset
0007d 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00084 e8 00 00 00 00 call stbi__get32le
00089 90 npad 1
; 6053 : sz = stbi__get32le(s);
0008a 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00091 e8 00 00 00 00 call stbi__get32le
00096 89 45 24 mov DWORD PTR sz$[rbp], eax
; 6054 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124);
00099 83 7d 24 0c cmp DWORD PTR sz$[rbp], 12
0009d 74 24 je SHORT $LN5@stbi__bmp_
0009f 83 7d 24 28 cmp DWORD PTR sz$[rbp], 40 ; 00000028H
000a3 74 1e je SHORT $LN5@stbi__bmp_
000a5 83 7d 24 38 cmp DWORD PTR sz$[rbp], 56 ; 00000038H
000a9 74 18 je SHORT $LN5@stbi__bmp_
000ab 83 7d 24 6c cmp DWORD PTR sz$[rbp], 108 ; 0000006cH
000af 74 12 je SHORT $LN5@stbi__bmp_
000b1 83 7d 24 7c cmp DWORD PTR sz$[rbp], 124 ; 0000007cH
000b5 74 0c je SHORT $LN5@stbi__bmp_
000b7 c7 85 f4 00 00
00 00 00 00 00 mov DWORD PTR tv83[rbp], 0
000c1 eb 0a jmp SHORT $LN6@stbi__bmp_
$LN5@stbi__bmp_:
000c3 c7 85 f4 00 00
00 01 00 00 00 mov DWORD PTR tv83[rbp], 1
$LN6@stbi__bmp_:
000cd 8b 85 f4 00 00
00 mov eax, DWORD PTR tv83[rbp]
000d3 89 45 04 mov DWORD PTR r$[rbp], eax
; 6055 : return r;
000d6 8b 45 04 mov eax, DWORD PTR r$[rbp]
$LN1@stbi__bmp_:
; 6056 : }
000d9 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000e0 5f pop rdi
000e1 5d pop rbp
000e2 c3 ret 0
stbi__bmp_test_raw ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__png_info_raw
_TEXT SEGMENT
p$ = 224
x$ = 232
y$ = 240
comp$ = 248
stbi__png_info_raw PROC ; COMDAT
; 6003 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 6004 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) {
0002f 45 33 c0 xor r8d, r8d
00032 ba 02 00 00 00 mov edx, 2
00037 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR p$[rbp]
0003e e8 00 00 00 00 call stbi__parse_png_file
00043 85 c0 test eax, eax
00045 75 14 jne SHORT $LN2@stbi__png_
; 6005 : stbi__rewind(p->s);
00047 48 8b 85 e0 00
00 00 mov rax, QWORD PTR p$[rbp]
0004e 48 8b 08 mov rcx, QWORD PTR [rax]
00051 e8 00 00 00 00 call stbi__rewind
00056 90 npad 1
; 6006 : return 0;
00057 33 c0 xor eax, eax
00059 eb 64 jmp SHORT $LN1@stbi__png_
$LN2@stbi__png_:
; 6007 : }
; 6008 : if (x)
0005b 48 83 bd e8 00
00 00 00 cmp QWORD PTR x$[rbp], 0
00063 74 15 je SHORT $LN3@stbi__png_
; 6009 : *x = p->s->img_x;
00065 48 8b 85 e0 00
00 00 mov rax, QWORD PTR p$[rbp]
0006c 48 8b 00 mov rax, QWORD PTR [rax]
0006f 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR x$[rbp]
00076 8b 00 mov eax, DWORD PTR [rax]
00078 89 01 mov DWORD PTR [rcx], eax
$LN3@stbi__png_:
; 6010 : if (y)
0007a 48 83 bd f0 00
00 00 00 cmp QWORD PTR y$[rbp], 0
00082 74 16 je SHORT $LN4@stbi__png_
; 6011 : *y = p->s->img_y;
00084 48 8b 85 e0 00
00 00 mov rax, QWORD PTR p$[rbp]
0008b 48 8b 00 mov rax, QWORD PTR [rax]
0008e 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR y$[rbp]
00095 8b 40 04 mov eax, DWORD PTR [rax+4]
00098 89 01 mov DWORD PTR [rcx], eax
$LN4@stbi__png_:
; 6012 : if (comp)
0009a 48 83 bd f8 00
00 00 00 cmp QWORD PTR comp$[rbp], 0
000a2 74 16 je SHORT $LN5@stbi__png_
; 6013 : *comp = p->s->img_n;
000a4 48 8b 85 e0 00
00 00 mov rax, QWORD PTR p$[rbp]
000ab 48 8b 00 mov rax, QWORD PTR [rax]
000ae 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR comp$[rbp]
000b5 8b 40 08 mov eax, DWORD PTR [rax+8]
000b8 89 01 mov DWORD PTR [rcx], eax
$LN5@stbi__png_:
; 6014 : return 1;
000ba b8 01 00 00 00 mov eax, 1
$LN1@stbi__png_:
; 6015 : }
000bf 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
000c6 5f pop rdi
000c7 5d pop rbp
000c8 c3 ret 0
stbi__png_info_raw ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__do_png
_TEXT SEGMENT
result$ = 8
tv69 = 216
tv84 = 216
p$ = 256
x$ = 264
y$ = 272
n$ = 280
req_comp$ = 288
ri$ = 296
stbi__do_png PROC ; COMDAT
; 5944 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 18 01
00 00 sub rsp, 280 ; 00000118H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 5945 : void *result = NULL;
0002f 48 c7 45 08 00
00 00 00 mov QWORD PTR result$[rbp], 0
; 5946 : if (req_comp < 0 || req_comp > 4)
00037 83 bd 20 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
0003e 7c 09 jl SHORT $LN3@stbi__do_p
00040 83 bd 20 01 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
00047 7e 34 jle SHORT $LN2@stbi__do_p
$LN3@stbi__do_p:
; 5947 : return stbi__errpuc("bad req_comp", "Internal error");
00049 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@
00050 e8 00 00 00 00 call stbi__err
00055 85 c0 test eax, eax
00057 74 0d je SHORT $LN15@stbi__do_p
00059 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv69[rbp], 0
00064 eb 0b jmp SHORT $LN16@stbi__do_p
$LN15@stbi__do_p:
00066 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv69[rbp], 0
$LN16@stbi__do_p:
00071 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv69[rbp]
00078 e9 2e 02 00 00 jmp $LN1@stbi__do_p
$LN2@stbi__do_p:
; 5948 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) {
0007d 44 8b 85 20 01
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00084 33 d2 xor edx, edx
00086 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR p$[rbp]
0008d e8 00 00 00 00 call stbi__parse_png_file
00092 85 c0 test eax, eax
00094 0f 84 aa 01 00
00 je $LN4@stbi__do_p
; 5949 : if (p->depth <= 8)
0009a 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
000a1 83 78 20 08 cmp DWORD PTR [rax+32], 8
000a5 7f 0f jg SHORT $LN5@stbi__do_p
; 5950 : ri->bits_per_channel = 8;
000a7 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
000ae c7 00 08 00 00
00 mov DWORD PTR [rax], 8
000b4 eb 50 jmp SHORT $LN6@stbi__do_p
$LN5@stbi__do_p:
; 5951 : else if (p->depth == 16)
000b6 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
000bd 83 78 20 10 cmp DWORD PTR [rax+32], 16
000c1 75 0f jne SHORT $LN7@stbi__do_p
; 5952 : ri->bits_per_channel = 16;
000c3 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
000ca c7 00 10 00 00
00 mov DWORD PTR [rax], 16
000d0 eb 34 jmp SHORT $LN8@stbi__do_p
$LN7@stbi__do_p:
; 5953 : else
; 5954 : return stbi__errpuc("bad bits_per_channel",
000d2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@
000d9 e8 00 00 00 00 call stbi__err
000de 85 c0 test eax, eax
000e0 74 0d je SHORT $LN17@stbi__do_p
000e2 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv84[rbp], 0
000ed eb 0b jmp SHORT $LN18@stbi__do_p
$LN17@stbi__do_p:
000ef 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv84[rbp], 0
$LN18@stbi__do_p:
000fa 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv84[rbp]
00101 e9 a5 01 00 00 jmp $LN1@stbi__do_p
$LN8@stbi__do_p:
$LN6@stbi__do_p:
; 5955 : "PNG not supported: unsupported color depth");
; 5956 : result = p->out;
00106 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0010d 48 8b 40 18 mov rax, QWORD PTR [rax+24]
00111 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 5957 : p->out = NULL;
00115 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0011c 48 c7 40 18 00
00 00 00 mov QWORD PTR [rax+24], 0
; 5958 : if (req_comp && req_comp != p->s->img_out_n) {
00124 83 bd 20 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
0012b 0f 84 c8 00 00
00 je $LN9@stbi__do_p
00131 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
00138 48 8b 00 mov rax, QWORD PTR [rax]
0013b 8b 40 0c mov eax, DWORD PTR [rax+12]
0013e 39 85 20 01 00
00 cmp DWORD PTR req_comp$[rbp], eax
00144 0f 84 af 00 00
00 je $LN9@stbi__do_p
; 5959 : if (ri->bits_per_channel == 8)
0014a 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
00151 83 38 08 cmp DWORD PTR [rax], 8
00154 75 41 jne SHORT $LN10@stbi__do_p
; 5960 : result = stbi__convert_format((unsigned char *)result,
00156 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0015d 48 8b 00 mov rax, QWORD PTR [rax]
00160 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR p$[rbp]
00167 48 8b 09 mov rcx, QWORD PTR [rcx]
0016a 48 8b 95 00 01
00 00 mov rdx, QWORD PTR p$[rbp]
00171 48 8b 12 mov rdx, QWORD PTR [rdx]
00174 8b 40 04 mov eax, DWORD PTR [rax+4]
00177 89 44 24 20 mov DWORD PTR [rsp+32], eax
0017b 44 8b 09 mov r9d, DWORD PTR [rcx]
0017e 44 8b 85 20 01
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00185 8b 52 0c mov edx, DWORD PTR [rdx+12]
00188 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
0018c e8 00 00 00 00 call stbi__convert_format
00191 48 89 45 08 mov QWORD PTR result$[rbp], rax
00195 eb 3f jmp SHORT $LN11@stbi__do_p
$LN10@stbi__do_p:
; 5961 : p->s->img_out_n, req_comp,
; 5962 : p->s->img_x, p->s->img_y);
; 5963 : else
; 5964 : result = stbi__convert_format16((stbi__uint16 *)result,
00197 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0019e 48 8b 00 mov rax, QWORD PTR [rax]
001a1 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR p$[rbp]
001a8 48 8b 09 mov rcx, QWORD PTR [rcx]
001ab 48 8b 95 00 01
00 00 mov rdx, QWORD PTR p$[rbp]
001b2 48 8b 12 mov rdx, QWORD PTR [rdx]
001b5 8b 40 04 mov eax, DWORD PTR [rax+4]
001b8 89 44 24 20 mov DWORD PTR [rsp+32], eax
001bc 44 8b 09 mov r9d, DWORD PTR [rcx]
001bf 44 8b 85 20 01
00 00 mov r8d, DWORD PTR req_comp$[rbp]
001c6 8b 52 0c mov edx, DWORD PTR [rdx+12]
001c9 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
001cd e8 00 00 00 00 call stbi__convert_format16
001d2 48 89 45 08 mov QWORD PTR result$[rbp], rax
$LN11@stbi__do_p:
; 5965 : p->s->img_out_n, req_comp,
; 5966 : p->s->img_x, p->s->img_y);
; 5967 : p->s->img_out_n = req_comp;
001d6 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
001dd 48 8b 00 mov rax, QWORD PTR [rax]
001e0 8b 8d 20 01 00
00 mov ecx, DWORD PTR req_comp$[rbp]
001e6 89 48 0c mov DWORD PTR [rax+12], ecx
; 5968 : if (result == NULL)
001e9 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
001ee 75 09 jne SHORT $LN12@stbi__do_p
; 5969 : return result;
001f0 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
001f4 e9 b2 00 00 00 jmp $LN1@stbi__do_p
$LN12@stbi__do_p:
$LN9@stbi__do_p:
; 5970 : }
; 5971 : *x = p->s->img_x;
001f9 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
00200 48 8b 00 mov rax, QWORD PTR [rax]
00203 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR x$[rbp]
0020a 8b 00 mov eax, DWORD PTR [rax]
0020c 89 01 mov DWORD PTR [rcx], eax
; 5972 : *y = p->s->img_y;
0020e 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
00215 48 8b 00 mov rax, QWORD PTR [rax]
00218 48 8b 8d 10 01
00 00 mov rcx, QWORD PTR y$[rbp]
0021f 8b 40 04 mov eax, DWORD PTR [rax+4]
00222 89 01 mov DWORD PTR [rcx], eax
; 5973 : if (n)
00224 48 83 bd 18 01
00 00 00 cmp QWORD PTR n$[rbp], 0
0022c 74 16 je SHORT $LN13@stbi__do_p
; 5974 : *n = p->s->img_n;
0022e 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
00235 48 8b 00 mov rax, QWORD PTR [rax]
00238 48 8b 8d 18 01
00 00 mov rcx, QWORD PTR n$[rbp]
0023f 8b 40 08 mov eax, DWORD PTR [rax+8]
00242 89 01 mov DWORD PTR [rcx], eax
$LN13@stbi__do_p:
$LN4@stbi__do_p:
; 5975 : }
; 5976 : STBI_FREE(p->out);
00244 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0024b 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
0024f ff 15 00 00 00
00 call QWORD PTR __imp_free
00255 90 npad 1
; 5977 : p->out = NULL;
00256 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0025d 48 c7 40 18 00
00 00 00 mov QWORD PTR [rax+24], 0
; 5978 : STBI_FREE(p->expanded);
00265 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0026c 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
00270 ff 15 00 00 00
00 call QWORD PTR __imp_free
00276 90 npad 1
; 5979 : p->expanded = NULL;
00277 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0027e 48 c7 40 10 00
00 00 00 mov QWORD PTR [rax+16], 0
; 5980 : STBI_FREE(p->idata);
00286 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0028d 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
00291 ff 15 00 00 00
00 call QWORD PTR __imp_free
00297 90 npad 1
; 5981 : p->idata = NULL;
00298 48 8b 85 00 01
00 00 mov rax, QWORD PTR p$[rbp]
0029f 48 c7 40 08 00
00 00 00 mov QWORD PTR [rax+8], 0
; 5982 :
; 5983 : return result;
002a7 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
$LN1@stbi__do_p:
; 5984 : }
002ab 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
002b2 5f pop rdi
002b3 5d pop rbp
002b4 c3 ret 0
stbi__do_png ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__parse_png_file
_TEXT SEGMENT
palette$ = 16
pal_img_n$ = 1060
has_trans$ = 1092
tc$ = 1124
tc16$ = 1156
ioff$ = 1188
idata_limit$ = 1220
i$ = 1252
pal_len$ = 1284
first$ = 1316
k$ = 1348
interlace$ = 1380
color$ = 1412
is_iphone$ = 1444
s$ = 1480
c$8 = 1512
comp$9 = 1540
filter$10 = 1572
idata_limit_old$11 = 1604
p$12 = 1640
raw_len$13 = 1668
bpl$14 = 1700
tv78 = 2484
tv194 = 2484
tv347 = 2484
tv396 = 2484
tv463 = 2484
tv197 = 2488
__$ArrayPad$ = 2496
z$ = 2544
scan$ = 2552
req_comp$ = 2560
stbi__parse_png_file PROC ; COMDAT
; 5690 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 48 81 ec 18 0a
00 00 sub rsp, 2584 ; 00000a18H
00017 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
0001c 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
00021 b9 b6 01 00 00 mov ecx, 438 ; 000001b6H
00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
0002b f3 ab rep stosd
0002d 48 8b 8c 24 38
0a 00 00 mov rcx, QWORD PTR [rsp+2616]
00035 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
0003c 48 33 c5 xor rax, rbp
0003f 48 89 85 c0 09
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00046 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0004d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00052 90 npad 1
; 5691 : stbi_uc palette[1024], pal_img_n = 0;
00053 c6 85 24 04 00
00 00 mov BYTE PTR pal_img_n$[rbp], 0
; 5692 : stbi_uc has_trans = 0, tc[3] = { 0 };
0005a c6 85 44 04 00
00 00 mov BYTE PTR has_trans$[rbp], 0
00061 48 8d 85 64 04
00 00 lea rax, QWORD PTR tc$[rbp]
00068 48 8b f8 mov rdi, rax
0006b 33 c0 xor eax, eax
0006d b9 03 00 00 00 mov ecx, 3
00072 f3 aa rep stosb
; 5693 : stbi__uint16 tc16[3];
; 5694 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0;
00074 c7 85 a4 04 00
00 00 00 00 00 mov DWORD PTR ioff$[rbp], 0
0007e c7 85 c4 04 00
00 00 00 00 00 mov DWORD PTR idata_limit$[rbp], 0
00088 c7 85 04 05 00
00 00 00 00 00 mov DWORD PTR pal_len$[rbp], 0
; 5695 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0;
00092 c7 85 24 05 00
00 01 00 00 00 mov DWORD PTR first$[rbp], 1
0009c c7 85 64 05 00
00 00 00 00 00 mov DWORD PTR interlace$[rbp], 0
000a6 c7 85 84 05 00
00 00 00 00 00 mov DWORD PTR color$[rbp], 0
000b0 c7 85 a4 05 00
00 00 00 00 00 mov DWORD PTR is_iphone$[rbp], 0
; 5696 : stbi__context *s = z->s;
000ba 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
000c1 48 8b 00 mov rax, QWORD PTR [rax]
000c4 48 89 85 c8 05
00 00 mov QWORD PTR s$[rbp], rax
; 5697 :
; 5698 : z->expanded = NULL;
000cb 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
000d2 48 c7 40 10 00
00 00 00 mov QWORD PTR [rax+16], 0
; 5699 : z->idata = NULL;
000da 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
000e1 48 c7 40 08 00
00 00 00 mov QWORD PTR [rax+8], 0
; 5700 : z->out = NULL;
000e9 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
000f0 48 c7 40 18 00
00 00 00 mov QWORD PTR [rax+24], 0
; 5701 :
; 5702 : if (!stbi__check_png_header(s))
000f8 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
000ff e8 00 00 00 00 call stbi__check_png_header
00104 85 c0 test eax, eax
00106 75 07 jne SHORT $LN21@stbi__pars
; 5703 : return 0;
00108 33 c0 xor eax, eax
0010a e9 aa 0d 00 00 jmp $LN1@stbi__pars
$LN21@stbi__pars:
; 5704 :
; 5705 : if (scan == STBI__SCAN_type)
0010f 83 bd f8 09 00
00 01 cmp DWORD PTR scan$[rbp], 1
00116 75 0a jne SHORT $LN22@stbi__pars
; 5706 : return 1;
00118 b8 01 00 00 00 mov eax, 1
0011d e9 97 0d 00 00 jmp $LN1@stbi__pars
$LN22@stbi__pars:
$LN2@stbi__pars:
; 5707 :
; 5708 : for (;;) {
; 5709 : stbi__pngchunk c = stbi__get_chunk_header(s);
00122 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00129 e8 00 00 00 00 call stbi__get_chunk_header
0012e 48 89 85 e8 05
00 00 mov QWORD PTR c$8[rbp], rax
; 5710 : switch (c.type) {
00135 8b 85 ec 05 00
00 mov eax, DWORD PTR c$8[rbp+4]
0013b 89 85 b4 09 00
00 mov DWORD PTR tv78[rbp], eax
00141 81 bd b4 09 00
00 52 44 48 49 cmp DWORD PTR tv78[rbp], 1229472850 ; 49484452H
0014b 77 3d ja SHORT $LN107@stbi__pars
0014d 81 bd b4 09 00
00 52 44 48 49 cmp DWORD PTR tv78[rbp], 1229472850 ; 49484452H
00157 74 78 je SHORT $LN24@stbi__pars
00159 81 bd b4 09 00
00 49 42 67 43 cmp DWORD PTR tv78[rbp], 1130840649 ; 43674249H
00163 74 4a je SHORT $LN23@stbi__pars
00165 81 bd b4 09 00
00 54 41 44 49 cmp DWORD PTR tv78[rbp], 1229209940 ; 49444154H
0016f 0f 84 f2 06 00
00 je $LN61@stbi__pars
00175 81 bd b4 09 00
00 44 4e 45 49 cmp DWORD PTR tv78[rbp], 1229278788 ; 49454e44H
0017f 0f 84 b9 08 00
00 je $LN72@stbi__pars
00185 e9 4e 0c 00 00 jmp $LN93@stbi__pars
$LN107@stbi__pars:
0018a 81 bd b4 09 00
00 45 54 4c 50 cmp DWORD PTR tv78[rbp], 1347179589 ; 504c5445H
00194 0f 84 7c 03 00
00 je $LN44@stbi__pars
0019a 81 bd b4 09 00
00 53 4e 52 74 cmp DWORD PTR tv78[rbp], 1951551059 ; 74524e53H
001a4 0f 84 77 04 00
00 je $LN48@stbi__pars
001aa e9 29 0c 00 00 jmp $LN93@stbi__pars
$LN23@stbi__pars:
; 5711 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'):
; 5712 : is_iphone = 1;
001af c7 85 a4 05 00
00 01 00 00 00 mov DWORD PTR is_iphone$[rbp], 1
; 5713 : stbi__skip(s, c.length);
001b9 8b 95 e8 05 00
00 mov edx, DWORD PTR c$8[rbp]
001bf 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
001c6 e8 00 00 00 00 call stbi__skip
001cb 90 npad 1
; 5714 : break;
001cc e9 d6 0c 00 00 jmp $LN5@stbi__pars
$LN24@stbi__pars:
; 5715 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): {
; 5716 : int comp, filter;
; 5717 : if (!first)
001d1 83 bd 24 05 00
00 00 cmp DWORD PTR first$[rbp], 0
001d8 75 11 jne SHORT $LN25@stbi__pars
; 5718 : return stbi__err("multiple IHDR", "Corrupt PNG");
001da 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@KBHBNJOK@multiple?5IHDR@
001e1 e8 00 00 00 00 call stbi__err
001e6 e9 ce 0c 00 00 jmp $LN1@stbi__pars
$LN25@stbi__pars:
; 5719 : first = 0;
001eb c7 85 24 05 00
00 00 00 00 00 mov DWORD PTR first$[rbp], 0
; 5720 : if (c.length != 13)
001f5 83 bd e8 05 00
00 0d cmp DWORD PTR c$8[rbp], 13
001fc 74 11 je SHORT $LN26@stbi__pars
; 5721 : return stbi__err("bad IHDR len", "Corrupt PNG");
001fe 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@POJLKMKK@bad?5IHDR?5len@
00205 e8 00 00 00 00 call stbi__err
0020a e9 aa 0c 00 00 jmp $LN1@stbi__pars
$LN26@stbi__pars:
; 5722 : s->img_x = stbi__get32be(s);
0020f 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00216 e8 00 00 00 00 call stbi__get32be
0021b 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00222 89 01 mov DWORD PTR [rcx], eax
; 5723 : s->img_y = stbi__get32be(s);
00224 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
0022b e8 00 00 00 00 call stbi__get32be
00230 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00237 89 41 04 mov DWORD PTR [rcx+4], eax
; 5724 : if (s->img_y > STBI_MAX_DIMENSIONS)
0023a 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00241 81 78 04 00 00
00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
00248 76 11 jbe SHORT $LN27@stbi__pars
; 5725 : return stbi__err("too large", "Very large image (corrupt?)");
0024a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00251 e8 00 00 00 00 call stbi__err
00256 e9 5e 0c 00 00 jmp $LN1@stbi__pars
$LN27@stbi__pars:
; 5726 : if (s->img_x > STBI_MAX_DIMENSIONS)
0025b 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00262 81 38 00 00 00
01 cmp DWORD PTR [rax], 16777216 ; 01000000H
00268 76 11 jbe SHORT $LN28@stbi__pars
; 5727 : return stbi__err("too large", "Very large image (corrupt?)");
0026a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00271 e8 00 00 00 00 call stbi__err
00276 e9 3e 0c 00 00 jmp $LN1@stbi__pars
$LN28@stbi__pars:
; 5728 : z->depth = stbi__get8(s);
0027b 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00282 e8 00 00 00 00 call stbi__get8
00287 0f b6 c0 movzx eax, al
0028a 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00291 89 41 20 mov DWORD PTR [rcx+32], eax
; 5729 : if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 &&
00294 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
0029b 83 78 20 01 cmp DWORD PTR [rax+32], 1
0029f 74 45 je SHORT $LN29@stbi__pars
002a1 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
002a8 83 78 20 02 cmp DWORD PTR [rax+32], 2
002ac 74 38 je SHORT $LN29@stbi__pars
002ae 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
002b5 83 78 20 04 cmp DWORD PTR [rax+32], 4
002b9 74 2b je SHORT $LN29@stbi__pars
002bb 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
002c2 83 78 20 08 cmp DWORD PTR [rax+32], 8
002c6 74 1e je SHORT $LN29@stbi__pars
002c8 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
002cf 83 78 20 10 cmp DWORD PTR [rax+32], 16
002d3 74 11 je SHORT $LN29@stbi__pars
; 5730 : z->depth != 16)
; 5731 : return stbi__err("1/2/4/8/16-bit only",
002d5 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@
002dc e8 00 00 00 00 call stbi__err
002e1 e9 d3 0b 00 00 jmp $LN1@stbi__pars
$LN29@stbi__pars:
; 5732 : "PNG not supported: 1/2/4/8/16-bit only");
; 5733 : color = stbi__get8(s);
002e6 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
002ed e8 00 00 00 00 call stbi__get8
002f2 0f b6 c0 movzx eax, al
002f5 89 85 84 05 00
00 mov DWORD PTR color$[rbp], eax
; 5734 : if (color > 6)
002fb 83 bd 84 05 00
00 06 cmp DWORD PTR color$[rbp], 6
00302 7e 11 jle SHORT $LN30@stbi__pars
; 5735 : return stbi__err("bad ctype", "Corrupt PNG");
00304 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09MBBNGCKB@bad?5ctype@
0030b e8 00 00 00 00 call stbi__err
00310 e9 a4 0b 00 00 jmp $LN1@stbi__pars
$LN30@stbi__pars:
; 5736 : if (color == 3 && z->depth == 16)
00315 83 bd 84 05 00
00 03 cmp DWORD PTR color$[rbp], 3
0031c 75 1e jne SHORT $LN31@stbi__pars
0031e 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00325 83 78 20 10 cmp DWORD PTR [rax+32], 16
00329 75 11 jne SHORT $LN31@stbi__pars
; 5737 : return stbi__err("bad ctype", "Corrupt PNG");
0032b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09MBBNGCKB@bad?5ctype@
00332 e8 00 00 00 00 call stbi__err
00337 e9 7d 0b 00 00 jmp $LN1@stbi__pars
$LN31@stbi__pars:
; 5738 : if (color == 3)
0033c 83 bd 84 05 00
00 03 cmp DWORD PTR color$[rbp], 3
00343 75 09 jne SHORT $LN32@stbi__pars
; 5739 : pal_img_n = 3;
00345 c6 85 24 04 00
00 03 mov BYTE PTR pal_img_n$[rbp], 3
0034c eb 1e jmp SHORT $LN33@stbi__pars
$LN32@stbi__pars:
; 5740 : else if (color & 1)
0034e 8b 85 84 05 00
00 mov eax, DWORD PTR color$[rbp]
00354 83 e0 01 and eax, 1
00357 85 c0 test eax, eax
00359 74 11 je SHORT $LN34@stbi__pars
; 5741 : return stbi__err("bad ctype", "Corrupt PNG");
0035b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09MBBNGCKB@bad?5ctype@
00362 e8 00 00 00 00 call stbi__err
00367 e9 4d 0b 00 00 jmp $LN1@stbi__pars
$LN34@stbi__pars:
$LN33@stbi__pars:
; 5742 : comp = stbi__get8(s);
0036c 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00373 e8 00 00 00 00 call stbi__get8
00378 0f b6 c0 movzx eax, al
0037b 89 85 04 06 00
00 mov DWORD PTR comp$9[rbp], eax
; 5743 : if (comp)
00381 83 bd 04 06 00
00 00 cmp DWORD PTR comp$9[rbp], 0
00388 74 11 je SHORT $LN35@stbi__pars
; 5744 : return stbi__err("bad comp method", "Corrupt PNG");
0038a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDMBDDFG@bad?5comp?5method@
00391 e8 00 00 00 00 call stbi__err
00396 e9 1e 0b 00 00 jmp $LN1@stbi__pars
$LN35@stbi__pars:
; 5745 : filter = stbi__get8(s);
0039b 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
003a2 e8 00 00 00 00 call stbi__get8
003a7 0f b6 c0 movzx eax, al
003aa 89 85 24 06 00
00 mov DWORD PTR filter$10[rbp], eax
; 5746 : if (filter)
003b0 83 bd 24 06 00
00 00 cmp DWORD PTR filter$10[rbp], 0
003b7 74 11 je SHORT $LN36@stbi__pars
; 5747 : return stbi__err("bad filter method", "Corrupt PNG");
003b9 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BC@GHLIKKMD@bad?5filter?5method@
003c0 e8 00 00 00 00 call stbi__err
003c5 e9 ef 0a 00 00 jmp $LN1@stbi__pars
$LN36@stbi__pars:
; 5748 : interlace = stbi__get8(s);
003ca 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
003d1 e8 00 00 00 00 call stbi__get8
003d6 0f b6 c0 movzx eax, al
003d9 89 85 64 05 00
00 mov DWORD PTR interlace$[rbp], eax
; 5749 : if (interlace > 1)
003df 83 bd 64 05 00
00 01 cmp DWORD PTR interlace$[rbp], 1
003e6 7e 11 jle SHORT $LN37@stbi__pars
; 5750 : return stbi__err("bad interlace method", "Corrupt PNG");
003e8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BF@JCGDPBAA@bad?5interlace?5method@
003ef e8 00 00 00 00 call stbi__err
003f4 e9 c0 0a 00 00 jmp $LN1@stbi__pars
$LN37@stbi__pars:
; 5751 : if (!s->img_x || !s->img_y)
003f9 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00400 83 38 00 cmp DWORD PTR [rax], 0
00403 74 0d je SHORT $LN39@stbi__pars
00405 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
0040c 83 78 04 00 cmp DWORD PTR [rax+4], 0
00410 75 11 jne SHORT $LN38@stbi__pars
$LN39@stbi__pars:
; 5752 : return stbi__err("0-pixel image", "Corrupt PNG");
00412 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@FNFBHCOO@0?9pixel?5image@
00419 e8 00 00 00 00 call stbi__err
0041e e9 96 0a 00 00 jmp $LN1@stbi__pars
$LN38@stbi__pars:
; 5753 : if (!pal_img_n) {
00423 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
0042a 85 c0 test eax, eax
0042c 0f 85 9b 00 00
00 jne $LN40@stbi__pars
; 5754 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0);
00432 8b 85 84 05 00
00 mov eax, DWORD PTR color$[rbp]
00438 83 e0 02 and eax, 2
0043b 85 c0 test eax, eax
0043d 74 0c je SHORT $LN97@stbi__pars
0043f c7 85 b4 09 00
00 03 00 00 00 mov DWORD PTR tv194[rbp], 3
00449 eb 0a jmp SHORT $LN98@stbi__pars
$LN97@stbi__pars:
0044b c7 85 b4 09 00
00 01 00 00 00 mov DWORD PTR tv194[rbp], 1
$LN98@stbi__pars:
00455 8b 85 84 05 00
00 mov eax, DWORD PTR color$[rbp]
0045b 83 e0 04 and eax, 4
0045e 85 c0 test eax, eax
00460 74 0c je SHORT $LN99@stbi__pars
00462 c7 85 b8 09 00
00 01 00 00 00 mov DWORD PTR tv197[rbp], 1
0046c eb 0a jmp SHORT $LN100@stbi__pars
$LN99@stbi__pars:
0046e c7 85 b8 09 00
00 00 00 00 00 mov DWORD PTR tv197[rbp], 0
$LN100@stbi__pars:
00478 8b 85 b8 09 00
00 mov eax, DWORD PTR tv197[rbp]
0047e 8b 8d b4 09 00
00 mov ecx, DWORD PTR tv194[rbp]
00484 03 c8 add ecx, eax
00486 8b c1 mov eax, ecx
00488 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
0048f 89 41 08 mov DWORD PTR [rcx+8], eax
; 5755 : if ((1 << 30) / s->img_x / s->img_n < s->img_y)
00492 33 d2 xor edx, edx
00494 b8 00 00 00 40 mov eax, 1073741824 ; 40000000H
00499 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
004a0 f7 31 div DWORD PTR [rcx]
004a2 33 d2 xor edx, edx
004a4 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
004ab f7 71 08 div DWORD PTR [rcx+8]
004ae 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
004b5 3b 41 04 cmp eax, DWORD PTR [rcx+4]
004b8 73 11 jae SHORT $LN42@stbi__pars
; 5756 : return stbi__err("too large", "Image too large to decode");
004ba 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
004c1 e8 00 00 00 00 call stbi__err
004c6 e9 ee 09 00 00 jmp $LN1@stbi__pars
$LN42@stbi__pars:
; 5757 : } else {
004cb eb 44 jmp SHORT $LN41@stbi__pars
$LN40@stbi__pars:
; 5758 : // if paletted, then pal_n is our final components, and
; 5759 : // img_n is # components to decompress/filter.
; 5760 : s->img_n = 1;
004cd 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
004d4 c7 40 08 01 00
00 00 mov DWORD PTR [rax+8], 1
; 5761 : if ((1 << 30) / s->img_x / 4 < s->img_y)
004db 33 d2 xor edx, edx
004dd b8 00 00 00 40 mov eax, 1073741824 ; 40000000H
004e2 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
004e9 f7 31 div DWORD PTR [rcx]
004eb 33 d2 xor edx, edx
004ed b9 04 00 00 00 mov ecx, 4
004f2 f7 f1 div ecx
004f4 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
004fb 3b 41 04 cmp eax, DWORD PTR [rcx+4]
004fe 73 11 jae SHORT $LN43@stbi__pars
; 5762 : return stbi__err("too large", "Corrupt PNG");
00500 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00507 e8 00 00 00 00 call stbi__err
0050c e9 a8 09 00 00 jmp $LN1@stbi__pars
$LN43@stbi__pars:
$LN41@stbi__pars:
; 5763 : }
; 5764 : // even with SCAN_header, have to scan to see if we have a tRNS
; 5765 : break;
00511 e9 91 09 00 00 jmp $LN5@stbi__pars
$LN44@stbi__pars:
; 5766 : }
; 5767 :
; 5768 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): {
; 5769 : if (first)
00516 83 bd 24 05 00
00 00 cmp DWORD PTR first$[rbp], 0
0051d 74 11 je SHORT $LN45@stbi__pars
; 5770 : return stbi__err("first not IHDR", "Corrupt PNG");
0051f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
00526 e8 00 00 00 00 call stbi__err
0052b e9 89 09 00 00 jmp $LN1@stbi__pars
$LN45@stbi__pars:
; 5771 : if (c.length > 256 * 3)
00530 81 bd e8 05 00
00 00 03 00 00 cmp DWORD PTR c$8[rbp], 768 ; 00000300H
0053a 76 11 jbe SHORT $LN46@stbi__pars
; 5772 : return stbi__err("invalid PLTE", "Corrupt PNG");
0053c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@JCPAJAKB@invalid?5PLTE@
00543 e8 00 00 00 00 call stbi__err
00548 e9 6c 09 00 00 jmp $LN1@stbi__pars
$LN46@stbi__pars:
; 5773 : pal_len = c.length / 3;
0054d 33 d2 xor edx, edx
0054f 8b 85 e8 05 00
00 mov eax, DWORD PTR c$8[rbp]
00555 b9 03 00 00 00 mov ecx, 3
0055a f7 f1 div ecx
0055c 89 85 04 05 00
00 mov DWORD PTR pal_len$[rbp], eax
; 5774 : if (pal_len * 3 != c.length)
00562 6b 85 04 05 00
00 03 imul eax, DWORD PTR pal_len$[rbp], 3
00569 3b 85 e8 05 00
00 cmp eax, DWORD PTR c$8[rbp]
0056f 74 11 je SHORT $LN47@stbi__pars
; 5775 : return stbi__err("invalid PLTE", "Corrupt PNG");
00571 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@JCPAJAKB@invalid?5PLTE@
00578 e8 00 00 00 00 call stbi__err
0057d e9 37 09 00 00 jmp $LN1@stbi__pars
$LN47@stbi__pars:
; 5776 : for (i = 0; i < pal_len; ++i) {
00582 c7 85 e4 04 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
0058c eb 0e jmp SHORT $LN9@stbi__pars
$LN7@stbi__pars:
0058e 8b 85 e4 04 00
00 mov eax, DWORD PTR i$[rbp]
00594 ff c0 inc eax
00596 89 85 e4 04 00
00 mov DWORD PTR i$[rbp], eax
$LN9@stbi__pars:
0059c 8b 85 04 05 00
00 mov eax, DWORD PTR pal_len$[rbp]
005a2 39 85 e4 04 00
00 cmp DWORD PTR i$[rbp], eax
005a8 73 72 jae SHORT $LN8@stbi__pars
; 5777 : palette[i * 4 + 0] = stbi__get8(s);
005aa 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
005b1 e8 00 00 00 00 call stbi__get8
005b6 8b 8d e4 04 00
00 mov ecx, DWORD PTR i$[rbp]
005bc c1 e1 02 shl ecx, 2
005bf 8b c9 mov ecx, ecx
005c1 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
; 5778 : palette[i * 4 + 1] = stbi__get8(s);
005c5 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
005cc e8 00 00 00 00 call stbi__get8
005d1 8b 8d e4 04 00
00 mov ecx, DWORD PTR i$[rbp]
005d7 8d 0c 8d 01 00
00 00 lea ecx, DWORD PTR [rcx*4+1]
005de 8b c9 mov ecx, ecx
005e0 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
; 5779 : palette[i * 4 + 2] = stbi__get8(s);
005e4 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
005eb e8 00 00 00 00 call stbi__get8
005f0 8b 8d e4 04 00
00 mov ecx, DWORD PTR i$[rbp]
005f6 8d 0c 8d 02 00
00 00 lea ecx, DWORD PTR [rcx*4+2]
005fd 8b c9 mov ecx, ecx
005ff 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
; 5780 : palette[i * 4 + 3] = 255;
00603 8b 85 e4 04 00
00 mov eax, DWORD PTR i$[rbp]
00609 8d 04 85 03 00
00 00 lea eax, DWORD PTR [rax*4+3]
00610 8b c0 mov eax, eax
00612 c6 44 05 10 ff mov BYTE PTR palette$[rbp+rax], 255 ; 000000ffH
; 5781 : }
00617 e9 72 ff ff ff jmp $LN7@stbi__pars
$LN8@stbi__pars:
; 5782 : break;
0061c e9 86 08 00 00 jmp $LN5@stbi__pars
$LN48@stbi__pars:
; 5783 : }
; 5784 :
; 5785 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): {
; 5786 : if (first)
00621 83 bd 24 05 00
00 00 cmp DWORD PTR first$[rbp], 0
00628 74 11 je SHORT $LN49@stbi__pars
; 5787 : return stbi__err("first not IHDR", "Corrupt PNG");
0062a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
00631 e8 00 00 00 00 call stbi__err
00636 e9 7e 08 00 00 jmp $LN1@stbi__pars
$LN49@stbi__pars:
; 5788 : if (z->idata)
0063b 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00642 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
00647 74 11 je SHORT $LN50@stbi__pars
; 5789 : return stbi__err("tRNS after IDAT", "Corrupt PNG");
00649 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@
00650 e8 00 00 00 00 call stbi__err
00655 e9 5f 08 00 00 jmp $LN1@stbi__pars
$LN50@stbi__pars:
; 5790 : if (pal_img_n) {
0065a 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
00661 85 c0 test eax, eax
00663 0f 84 af 00 00
00 je $LN51@stbi__pars
; 5791 : if (scan == STBI__SCAN_header) {
00669 83 bd f8 09 00
00 02 cmp DWORD PTR scan$[rbp], 2
00670 75 18 jne SHORT $LN53@stbi__pars
; 5792 : s->img_n = 4;
00672 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00679 c7 40 08 04 00
00 00 mov DWORD PTR [rax+8], 4
; 5793 : return 1;
00680 b8 01 00 00 00 mov eax, 1
00685 e9 2f 08 00 00 jmp $LN1@stbi__pars
$LN53@stbi__pars:
; 5794 : }
; 5795 : if (pal_len == 0)
0068a 83 bd 04 05 00
00 00 cmp DWORD PTR pal_len$[rbp], 0
00691 75 11 jne SHORT $LN54@stbi__pars
; 5796 : return stbi__err("tRNS before PLTE", "Corrupt PNG");
00693 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@
0069a e8 00 00 00 00 call stbi__err
0069f e9 15 08 00 00 jmp $LN1@stbi__pars
$LN54@stbi__pars:
; 5797 : if (c.length > pal_len)
006a4 8b 85 04 05 00
00 mov eax, DWORD PTR pal_len$[rbp]
006aa 39 85 e8 05 00
00 cmp DWORD PTR c$8[rbp], eax
006b0 76 11 jbe SHORT $LN55@stbi__pars
; 5798 : return stbi__err("bad tRNS len", "Corrupt PNG");
006b2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@KDLCCKCH@bad?5tRNS?5len@
006b9 e8 00 00 00 00 call stbi__err
006be e9 f6 07 00 00 jmp $LN1@stbi__pars
$LN55@stbi__pars:
; 5799 : pal_img_n = 4;
006c3 c6 85 24 04 00
00 04 mov BYTE PTR pal_img_n$[rbp], 4
; 5800 : for (i = 0; i < c.length; ++i)
006ca c7 85 e4 04 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
006d4 eb 0e jmp SHORT $LN12@stbi__pars
$LN10@stbi__pars:
006d6 8b 85 e4 04 00
00 mov eax, DWORD PTR i$[rbp]
006dc ff c0 inc eax
006de 89 85 e4 04 00
00 mov DWORD PTR i$[rbp], eax
$LN12@stbi__pars:
006e4 8b 85 e8 05 00
00 mov eax, DWORD PTR c$8[rbp]
006ea 39 85 e4 04 00
00 cmp DWORD PTR i$[rbp], eax
006f0 73 21 jae SHORT $LN11@stbi__pars
; 5801 : palette[i * 4 + 3] = stbi__get8(s);
006f2 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
006f9 e8 00 00 00 00 call stbi__get8
006fe 8b 8d e4 04 00
00 mov ecx, DWORD PTR i$[rbp]
00704 8d 0c 8d 03 00
00 00 lea ecx, DWORD PTR [rcx*4+3]
0070b 8b c9 mov ecx, ecx
0070d 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
00711 eb c3 jmp SHORT $LN10@stbi__pars
$LN11@stbi__pars:
; 5802 : } else {
00713 e9 4a 01 00 00 jmp $LN52@stbi__pars
$LN51@stbi__pars:
; 5803 : if (!(s->img_n & 1))
00718 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
0071f 8b 40 08 mov eax, DWORD PTR [rax+8]
00722 83 e0 01 and eax, 1
00725 85 c0 test eax, eax
00727 75 11 jne SHORT $LN56@stbi__pars
; 5804 : return stbi__err("tRNS with alpha", "Corrupt PNG");
00729 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@
00730 e8 00 00 00 00 call stbi__err
00735 e9 7f 07 00 00 jmp $LN1@stbi__pars
$LN56@stbi__pars:
; 5805 : if (c.length != (stbi__uint32)s->img_n * 2)
0073a 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00741 8b 40 08 mov eax, DWORD PTR [rax+8]
00744 d1 e0 shl eax, 1
00746 39 85 e8 05 00
00 cmp DWORD PTR c$8[rbp], eax
0074c 74 11 je SHORT $LN57@stbi__pars
; 5806 : return stbi__err("bad tRNS len", "Corrupt PNG");
0074e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@KDLCCKCH@bad?5tRNS?5len@
00755 e8 00 00 00 00 call stbi__err
0075a e9 5a 07 00 00 jmp $LN1@stbi__pars
$LN57@stbi__pars:
; 5807 : has_trans = 1;
0075f c6 85 44 04 00
00 01 mov BYTE PTR has_trans$[rbp], 1
; 5808 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now.
; 5809 : if (scan == STBI__SCAN_header) {
00766 83 bd f8 09 00
00 02 cmp DWORD PTR scan$[rbp], 2
0076d 75 20 jne SHORT $LN58@stbi__pars
; 5810 : ++s->img_n;
0076f 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00776 8b 40 08 mov eax, DWORD PTR [rax+8]
00779 ff c0 inc eax
0077b 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00782 89 41 08 mov DWORD PTR [rcx+8], eax
; 5811 : return 1;
00785 b8 01 00 00 00 mov eax, 1
0078a e9 2a 07 00 00 jmp $LN1@stbi__pars
$LN58@stbi__pars:
; 5812 : }
; 5813 : if (z->depth == 16) {
0078f 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00796 83 78 20 10 cmp DWORD PTR [rax+32], 16
0079a 75 54 jne SHORT $LN59@stbi__pars
; 5814 : for (k = 0; k < s->img_n && k < 3;
0079c c7 85 44 05 00
00 00 00 00 00 mov DWORD PTR k$[rbp], 0
007a6 eb 0e jmp SHORT $LN15@stbi__pars
$LN13@stbi__pars:
; 5815 : ++k) // extra loop test to suppress false GCC warning
007a8 8b 85 44 05 00
00 mov eax, DWORD PTR k$[rbp]
007ae ff c0 inc eax
007b0 89 85 44 05 00
00 mov DWORD PTR k$[rbp], eax
$LN15@stbi__pars:
; 5814 : for (k = 0; k < s->img_n && k < 3;
007b6 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
007bd 8b 40 08 mov eax, DWORD PTR [rax+8]
007c0 39 85 44 05 00
00 cmp DWORD PTR k$[rbp], eax
007c6 7d 26 jge SHORT $LN14@stbi__pars
007c8 83 bd 44 05 00
00 03 cmp DWORD PTR k$[rbp], 3
007cf 7d 1d jge SHORT $LN14@stbi__pars
; 5816 : tc16[k] = (stbi__uint16)stbi__get16be(
007d1 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
007d8 e8 00 00 00 00 call stbi__get16be
007dd 48 63 8d 44 05
00 00 movsxd rcx, DWORD PTR k$[rbp]
007e4 66 89 84 4d 84
04 00 00 mov WORD PTR tc16$[rbp+rcx*2], ax
007ec eb ba jmp SHORT $LN13@stbi__pars
$LN14@stbi__pars:
; 5817 : s); // copy the values as-is
; 5818 : } else {
007ee eb 72 jmp SHORT $LN60@stbi__pars
$LN59@stbi__pars:
; 5819 : for (k = 0; k < s->img_n && k < 3; ++k)
007f0 c7 85 44 05 00
00 00 00 00 00 mov DWORD PTR k$[rbp], 0
007fa eb 0e jmp SHORT $LN18@stbi__pars
$LN16@stbi__pars:
007fc 8b 85 44 05 00
00 mov eax, DWORD PTR k$[rbp]
00802 ff c0 inc eax
00804 89 85 44 05 00
00 mov DWORD PTR k$[rbp], eax
$LN18@stbi__pars:
0080a 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00811 8b 40 08 mov eax, DWORD PTR [rax+8]
00814 39 85 44 05 00
00 cmp DWORD PTR k$[rbp], eax
0081a 7d 46 jge SHORT $LN17@stbi__pars
0081c 83 bd 44 05 00
00 03 cmp DWORD PTR k$[rbp], 3
00823 7d 3d jge SHORT $LN17@stbi__pars
; 5820 : tc[k] = (stbi_uc)(stbi__get16be(s) & 255) *
00825 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
0082c e8 00 00 00 00 call stbi__get16be
00831 25 ff 00 00 00 and eax, 255 ; 000000ffH
00836 0f b6 c0 movzx eax, al
00839 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00840 48 63 49 20 movsxd rcx, DWORD PTR [rcx+32]
00844 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__depth_scale_table
0084b 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0084f 0f af c1 imul eax, ecx
00852 48 63 8d 44 05
00 00 movsxd rcx, DWORD PTR k$[rbp]
00859 88 84 0d 64 04
00 00 mov BYTE PTR tc$[rbp+rcx], al
00860 eb 9a jmp SHORT $LN16@stbi__pars
$LN17@stbi__pars:
$LN60@stbi__pars:
$LN52@stbi__pars:
; 5821 : stbi__depth_scale_table
; 5822 : [z->depth]; // non 8-bit images will be larger
; 5823 : }
; 5824 : }
; 5825 : break;
00862 e9 40 06 00 00 jmp $LN5@stbi__pars
$LN61@stbi__pars:
; 5826 : }
; 5827 :
; 5828 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): {
; 5829 : if (first)
00867 83 bd 24 05 00
00 00 cmp DWORD PTR first$[rbp], 0
0086e 74 11 je SHORT $LN62@stbi__pars
; 5830 : return stbi__err("first not IHDR", "Corrupt PNG");
00870 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
00877 e8 00 00 00 00 call stbi__err
0087c e9 38 06 00 00 jmp $LN1@stbi__pars
$LN62@stbi__pars:
; 5831 : if (pal_img_n && !pal_len)
00881 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
00888 85 c0 test eax, eax
0088a 74 1a je SHORT $LN63@stbi__pars
0088c 83 bd 04 05 00
00 00 cmp DWORD PTR pal_len$[rbp], 0
00893 75 11 jne SHORT $LN63@stbi__pars
; 5832 : return stbi__err("no PLTE", "Corrupt PNG");
00895 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07CKIELOEH@no?5PLTE@
0089c e8 00 00 00 00 call stbi__err
008a1 e9 13 06 00 00 jmp $LN1@stbi__pars
$LN63@stbi__pars:
; 5833 : if (scan == STBI__SCAN_header) {
008a6 83 bd f8 09 00
00 02 cmp DWORD PTR scan$[rbp], 2
008ad 75 26 jne SHORT $LN64@stbi__pars
; 5834 : // header scan definitely stops at first IDAT
; 5835 : if (pal_img_n)
008af 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
008b6 85 c0 test eax, eax
008b8 74 11 je SHORT $LN65@stbi__pars
; 5836 : s->img_n = pal_img_n;
008ba 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
008c1 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
008c8 89 41 08 mov DWORD PTR [rcx+8], eax
$LN65@stbi__pars:
; 5837 : return 1;
008cb b8 01 00 00 00 mov eax, 1
008d0 e9 e4 05 00 00 jmp $LN1@stbi__pars
$LN64@stbi__pars:
; 5838 : }
; 5839 : if (c.length > (1u << 30))
008d5 81 bd e8 05 00
00 00 00 00 40 cmp DWORD PTR c$8[rbp], 1073741824 ; 40000000H
008df 76 11 jbe SHORT $LN66@stbi__pars
; 5840 : return stbi__err("IDAT size limit",
008e1 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@PLHGLONG@IDAT?5size?5limit@
008e8 e8 00 00 00 00 call stbi__err
008ed e9 c7 05 00 00 jmp $LN1@stbi__pars
$LN66@stbi__pars:
; 5841 : "IDAT section larger than 2^30 bytes");
; 5842 : if ((int)(ioff + c.length) < (int)ioff)
008f2 8b 85 e8 05 00
00 mov eax, DWORD PTR c$8[rbp]
008f8 8b 8d a4 04 00
00 mov ecx, DWORD PTR ioff$[rbp]
008fe 03 c8 add ecx, eax
00900 8b c1 mov eax, ecx
00902 3b 85 a4 04 00
00 cmp eax, DWORD PTR ioff$[rbp]
00908 7d 07 jge SHORT $LN67@stbi__pars
; 5843 : return 0;
0090a 33 c0 xor eax, eax
0090c e9 a8 05 00 00 jmp $LN1@stbi__pars
$LN67@stbi__pars:
; 5844 : if (ioff + c.length > idata_limit) {
00911 8b 85 e8 05 00
00 mov eax, DWORD PTR c$8[rbp]
00917 8b 8d a4 04 00
00 mov ecx, DWORD PTR ioff$[rbp]
0091d 03 c8 add ecx, eax
0091f 8b c1 mov eax, ecx
00921 3b 85 c4 04 00
00 cmp eax, DWORD PTR idata_limit$[rbp]
00927 0f 86 ba 00 00
00 jbe $LN68@stbi__pars
; 5845 : stbi__uint32 idata_limit_old = idata_limit;
0092d 8b 85 c4 04 00
00 mov eax, DWORD PTR idata_limit$[rbp]
00933 89 85 44 06 00
00 mov DWORD PTR idata_limit_old$11[rbp], eax
; 5846 : stbi_uc *p;
; 5847 : if (idata_limit == 0)
00939 83 bd c4 04 00
00 00 cmp DWORD PTR idata_limit$[rbp], 0
00940 75 30 jne SHORT $LN69@stbi__pars
; 5848 : idata_limit = c.length > 4096 ? c.length : 4096;
00942 81 bd e8 05 00
00 00 10 00 00 cmp DWORD PTR c$8[rbp], 4096 ; 00001000H
0094c 76 0e jbe SHORT $LN101@stbi__pars
0094e 8b 85 e8 05 00
00 mov eax, DWORD PTR c$8[rbp]
00954 89 85 b4 09 00
00 mov DWORD PTR tv347[rbp], eax
0095a eb 0a jmp SHORT $LN102@stbi__pars
$LN101@stbi__pars:
0095c c7 85 b4 09 00
00 00 10 00 00 mov DWORD PTR tv347[rbp], 4096 ; 00001000H
$LN102@stbi__pars:
00966 8b 85 b4 09 00
00 mov eax, DWORD PTR tv347[rbp]
0096c 89 85 c4 04 00
00 mov DWORD PTR idata_limit$[rbp], eax
$LN69@stbi__pars:
$LN19@stbi__pars:
; 5849 : while (ioff + c.length > idata_limit)
00972 8b 85 e8 05 00
00 mov eax, DWORD PTR c$8[rbp]
00978 8b 8d a4 04 00
00 mov ecx, DWORD PTR ioff$[rbp]
0097e 03 c8 add ecx, eax
00980 8b c1 mov eax, ecx
00982 3b 85 c4 04 00
00 cmp eax, DWORD PTR idata_limit$[rbp]
00988 76 10 jbe SHORT $LN20@stbi__pars
; 5850 : idata_limit *= 2;
0098a 8b 85 c4 04 00
00 mov eax, DWORD PTR idata_limit$[rbp]
00990 d1 e0 shl eax, 1
00992 89 85 c4 04 00
00 mov DWORD PTR idata_limit$[rbp], eax
00998 eb d8 jmp SHORT $LN19@stbi__pars
$LN20@stbi__pars:
; 5851 : STBI_NOTUSED(idata_limit_old);
; 5852 : p = (stbi_uc *)STBI_REALLOC_SIZED(z->idata, idata_limit_old,
0099a 8b 85 c4 04 00
00 mov eax, DWORD PTR idata_limit$[rbp]
009a0 8b d0 mov edx, eax
009a2 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
009a9 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
009ad ff 15 00 00 00
00 call QWORD PTR __imp_realloc
009b3 48 89 85 68 06
00 00 mov QWORD PTR p$12[rbp], rax
; 5853 : idata_limit);
; 5854 : if (p == NULL)
009ba 48 83 bd 68 06
00 00 00 cmp QWORD PTR p$12[rbp], 0
009c2 75 11 jne SHORT $LN70@stbi__pars
; 5855 : return stbi__err("outofmem", "Out of memory");
009c4 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
009cb e8 00 00 00 00 call stbi__err
009d0 e9 e4 04 00 00 jmp $LN1@stbi__pars
$LN70@stbi__pars:
; 5856 : z->idata = p;
009d5 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
009dc 48 8b 8d 68 06
00 00 mov rcx, QWORD PTR p$12[rbp]
009e3 48 89 48 08 mov QWORD PTR [rax+8], rcx
$LN68@stbi__pars:
; 5857 : }
; 5858 : if (!stbi__getn(s, z->idata + ioff, c.length))
009e7 8b 85 a4 04 00
00 mov eax, DWORD PTR ioff$[rbp]
009ed 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
009f4 48 03 41 08 add rax, QWORD PTR [rcx+8]
009f8 44 8b 85 e8 05
00 00 mov r8d, DWORD PTR c$8[rbp]
009ff 48 8b d0 mov rdx, rax
00a02 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00a09 e8 00 00 00 00 call stbi__getn
00a0e 85 c0 test eax, eax
00a10 75 11 jne SHORT $LN71@stbi__pars
; 5859 : return stbi__err("outofdata", "Corrupt PNG");
00a12 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09MNNCNKEO@outofdata@
00a19 e8 00 00 00 00 call stbi__err
00a1e e9 96 04 00 00 jmp $LN1@stbi__pars
$LN71@stbi__pars:
; 5860 : ioff += c.length;
00a23 8b 85 e8 05 00
00 mov eax, DWORD PTR c$8[rbp]
00a29 8b 8d a4 04 00
00 mov ecx, DWORD PTR ioff$[rbp]
00a2f 03 c8 add ecx, eax
00a31 8b c1 mov eax, ecx
00a33 89 85 a4 04 00
00 mov DWORD PTR ioff$[rbp], eax
; 5861 : break;
00a39 e9 69 04 00 00 jmp $LN5@stbi__pars
$LN72@stbi__pars:
; 5862 : }
; 5863 :
; 5864 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): {
; 5865 : stbi__uint32 raw_len, bpl;
; 5866 : if (first)
00a3e 83 bd 24 05 00
00 00 cmp DWORD PTR first$[rbp], 0
00a45 74 11 je SHORT $LN73@stbi__pars
; 5867 : return stbi__err("first not IHDR", "Corrupt PNG");
00a47 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
00a4e e8 00 00 00 00 call stbi__err
00a53 e9 61 04 00 00 jmp $LN1@stbi__pars
$LN73@stbi__pars:
; 5868 : if (scan != STBI__SCAN_load)
00a58 83 bd f8 09 00
00 00 cmp DWORD PTR scan$[rbp], 0
00a5f 74 0a je SHORT $LN74@stbi__pars
; 5869 : return 1;
00a61 b8 01 00 00 00 mov eax, 1
00a66 e9 4e 04 00 00 jmp $LN1@stbi__pars
$LN74@stbi__pars:
; 5870 : if (z->idata == NULL)
00a6b 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00a72 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
00a77 75 11 jne SHORT $LN75@stbi__pars
; 5871 : return stbi__err("no IDAT", "Corrupt PNG");
00a79 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07MLPECBNA@no?5IDAT@
00a80 e8 00 00 00 00 call stbi__err
00a85 e9 2f 04 00 00 jmp $LN1@stbi__pars
$LN75@stbi__pars:
; 5872 : // initial guess for decoded data size to avoid unnecessary reallocs
; 5873 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component
00a8a 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00a91 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00a98 8b 00 mov eax, DWORD PTR [rax]
00a9a 0f af 41 20 imul eax, DWORD PTR [rcx+32]
00a9e 83 c0 07 add eax, 7
00aa1 33 d2 xor edx, edx
00aa3 b9 08 00 00 00 mov ecx, 8
00aa8 f7 f1 div ecx
00aaa 89 85 a4 06 00
00 mov DWORD PTR bpl$14[rbp], eax
; 5874 : raw_len = bpl * s->img_y * s->img_n /* pixels */ +
00ab0 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00ab7 8b 8d a4 06 00
00 mov ecx, DWORD PTR bpl$14[rbp]
00abd 0f af 48 04 imul ecx, DWORD PTR [rax+4]
00ac1 8b c1 mov eax, ecx
00ac3 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00aca 0f af 41 08 imul eax, DWORD PTR [rcx+8]
00ace 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00ad5 03 41 04 add eax, DWORD PTR [rcx+4]
00ad8 89 85 84 06 00
00 mov DWORD PTR raw_len$13[rbp], eax
; 5875 : s->img_y /* filter mode per row */;
; 5876 : z->expanded = (stbi_uc *)stbi_zlib_decode_malloc_guesssize_headerflag(
00ade 83 bd a4 05 00
00 00 cmp DWORD PTR is_iphone$[rbp], 0
00ae5 75 0c jne SHORT $LN103@stbi__pars
00ae7 c7 85 b4 09 00
00 01 00 00 00 mov DWORD PTR tv396[rbp], 1
00af1 eb 0a jmp SHORT $LN104@stbi__pars
$LN103@stbi__pars:
00af3 c7 85 b4 09 00
00 00 00 00 00 mov DWORD PTR tv396[rbp], 0
$LN104@stbi__pars:
00afd 8b 85 b4 09 00
00 mov eax, DWORD PTR tv396[rbp]
00b03 89 44 24 20 mov DWORD PTR [rsp+32], eax
00b07 4c 8d 8d 84 06
00 00 lea r9, QWORD PTR raw_len$13[rbp]
00b0e 44 8b 85 84 06
00 00 mov r8d, DWORD PTR raw_len$13[rbp]
00b15 8b 95 a4 04 00
00 mov edx, DWORD PTR ioff$[rbp]
00b1b 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00b22 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
00b26 e8 00 00 00 00 call stbi_zlib_decode_malloc_guesssize_headerflag
00b2b 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00b32 48 89 41 10 mov QWORD PTR [rcx+16], rax
; 5877 : (char *)z->idata, ioff, raw_len, (int *)&raw_len, !is_iphone);
; 5878 : if (z->expanded == NULL)
00b36 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00b3d 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
00b42 75 07 jne SHORT $LN76@stbi__pars
; 5879 : return 0; // zlib should set error
00b44 33 c0 xor eax, eax
00b46 e9 6e 03 00 00 jmp $LN1@stbi__pars
$LN76@stbi__pars:
; 5880 : STBI_FREE(z->idata);
00b4b 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00b52 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
00b56 ff 15 00 00 00
00 call QWORD PTR __imp_free
00b5c 90 npad 1
; 5881 : z->idata = NULL;
00b5d 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00b64 48 c7 40 08 00
00 00 00 mov QWORD PTR [rax+8], 0
; 5882 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans)
00b6c 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00b73 8b 40 08 mov eax, DWORD PTR [rax+8]
00b76 ff c0 inc eax
00b78 39 85 00 0a 00
00 cmp DWORD PTR req_comp$[rbp], eax
00b7e 75 14 jne SHORT $LN80@stbi__pars
00b80 83 bd 00 0a 00
00 03 cmp DWORD PTR req_comp$[rbp], 3
00b87 74 0b je SHORT $LN80@stbi__pars
00b89 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
00b90 85 c0 test eax, eax
00b92 74 0b je SHORT $LN79@stbi__pars
$LN80@stbi__pars:
00b94 0f b6 85 44 04
00 00 movzx eax, BYTE PTR has_trans$[rbp]
00b9b 85 c0 test eax, eax
00b9d 74 18 je SHORT $LN77@stbi__pars
$LN79@stbi__pars:
; 5883 : s->img_out_n = s->img_n + 1;
00b9f 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00ba6 8b 40 08 mov eax, DWORD PTR [rax+8]
00ba9 ff c0 inc eax
00bab 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00bb2 89 41 0c mov DWORD PTR [rcx+12], eax
00bb5 eb 14 jmp SHORT $LN78@stbi__pars
$LN77@stbi__pars:
; 5884 : else
; 5885 : s->img_out_n = s->img_n;
00bb7 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00bbe 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00bc5 8b 49 08 mov ecx, DWORD PTR [rcx+8]
00bc8 89 48 0c mov DWORD PTR [rax+12], ecx
$LN78@stbi__pars:
; 5886 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth,
00bcb 8b 85 64 05 00
00 mov eax, DWORD PTR interlace$[rbp]
00bd1 89 44 24 30 mov DWORD PTR [rsp+48], eax
00bd5 8b 85 84 05 00
00 mov eax, DWORD PTR color$[rbp]
00bdb 89 44 24 28 mov DWORD PTR [rsp+40], eax
00bdf 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00be6 8b 40 20 mov eax, DWORD PTR [rax+32]
00be9 89 44 24 20 mov DWORD PTR [rsp+32], eax
00bed 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00bf4 44 8b 48 0c mov r9d, DWORD PTR [rax+12]
00bf8 44 8b 85 84 06
00 00 mov r8d, DWORD PTR raw_len$13[rbp]
00bff 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00c06 48 8b 50 10 mov rdx, QWORD PTR [rax+16]
00c0a 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00c11 e8 00 00 00 00 call stbi__create_png_image
00c16 85 c0 test eax, eax
00c18 75 07 jne SHORT $LN81@stbi__pars
; 5887 : color, interlace))
; 5888 : return 0;
00c1a 33 c0 xor eax, eax
00c1c e9 98 02 00 00 jmp $LN1@stbi__pars
$LN81@stbi__pars:
; 5889 : if (has_trans) {
00c21 0f b6 85 44 04
00 00 movzx eax, BYTE PTR has_trans$[rbp]
00c28 85 c0 test eax, eax
00c2a 74 61 je SHORT $LN82@stbi__pars
; 5890 : if (z->depth == 16) {
00c2c 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00c33 83 78 20 10 cmp DWORD PTR [rax+32], 16
00c37 75 2b jne SHORT $LN83@stbi__pars
; 5891 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n))
00c39 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00c40 44 8b 40 0c mov r8d, DWORD PTR [rax+12]
00c44 48 8d 95 84 04
00 00 lea rdx, QWORD PTR tc16$[rbp]
00c4b 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00c52 e8 00 00 00 00 call stbi__compute_transparency16
00c57 85 c0 test eax, eax
00c59 75 07 jne SHORT $LN85@stbi__pars
; 5892 : return 0;
00c5b 33 c0 xor eax, eax
00c5d e9 57 02 00 00 jmp $LN1@stbi__pars
$LN85@stbi__pars:
; 5893 : } else {
00c62 eb 29 jmp SHORT $LN84@stbi__pars
$LN83@stbi__pars:
; 5894 : if (!stbi__compute_transparency(z, tc, s->img_out_n))
00c64 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00c6b 44 8b 40 0c mov r8d, DWORD PTR [rax+12]
00c6f 48 8d 95 64 04
00 00 lea rdx, QWORD PTR tc$[rbp]
00c76 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00c7d e8 00 00 00 00 call stbi__compute_transparency
00c82 85 c0 test eax, eax
00c84 75 07 jne SHORT $LN86@stbi__pars
; 5895 : return 0;
00c86 33 c0 xor eax, eax
00c88 e9 2c 02 00 00 jmp $LN1@stbi__pars
$LN86@stbi__pars:
$LN84@stbi__pars:
$LN82@stbi__pars:
; 5896 : }
; 5897 : }
; 5898 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2)
00c8d 83 bd a4 05 00
00 00 cmp DWORD PTR is_iphone$[rbp], 0
00c94 74 74 je SHORT $LN87@stbi__pars
00c96 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_set
00c9b 8b c0 mov eax, eax
00c9d 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00ca3 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00cac 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00cb0 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
00cb4 74 25 je SHORT $LN105@stbi__pars
00cb6 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_local
00cbb 8b c0 mov eax, eax
00cbd 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00cc3 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00ccc 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00cd0 8b 04 08 mov eax, DWORD PTR [rax+rcx]
00cd3 89 85 b4 09 00
00 mov DWORD PTR tv463[rbp], eax
00cd9 eb 0c jmp SHORT $LN106@stbi__pars
$LN105@stbi__pars:
00cdb 8b 05 00 00 00
00 mov eax, DWORD PTR stbi__de_iphone_flag_global
00ce1 89 85 b4 09 00
00 mov DWORD PTR tv463[rbp], eax
$LN106@stbi__pars:
00ce7 83 bd b4 09 00
00 00 cmp DWORD PTR tv463[rbp], 0
00cee 74 1a je SHORT $LN87@stbi__pars
00cf0 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00cf7 83 78 0c 02 cmp DWORD PTR [rax+12], 2
00cfb 7e 0d jle SHORT $LN87@stbi__pars
; 5899 : stbi__de_iphone(z);
00cfd 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00d04 e8 00 00 00 00 call stbi__de_iphone
00d09 90 npad 1
$LN87@stbi__pars:
; 5900 : if (pal_img_n) {
00d0a 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
00d11 85 c0 test eax, eax
00d13 74 6a je SHORT $LN88@stbi__pars
; 5901 : // pal_img_n == 3 or 4
; 5902 : s->img_n = pal_img_n; // record the actual colors we had
00d15 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
00d1c 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00d23 89 41 08 mov DWORD PTR [rcx+8], eax
; 5903 : s->img_out_n = pal_img_n;
00d26 0f b6 85 24 04
00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
00d2d 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00d34 89 41 0c mov DWORD PTR [rcx+12], eax
; 5904 : if (req_comp >= 3)
00d37 83 bd 00 0a 00
00 03 cmp DWORD PTR req_comp$[rbp], 3
00d3e 7c 10 jl SHORT $LN90@stbi__pars
; 5905 : s->img_out_n = req_comp;
00d40 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00d47 8b 8d 00 0a 00
00 mov ecx, DWORD PTR req_comp$[rbp]
00d4d 89 48 0c mov DWORD PTR [rax+12], ecx
$LN90@stbi__pars:
; 5906 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n))
00d50 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00d57 44 8b 48 0c mov r9d, DWORD PTR [rax+12]
00d5b 44 8b 85 04 05
00 00 mov r8d, DWORD PTR pal_len$[rbp]
00d62 48 8d 55 10 lea rdx, QWORD PTR palette$[rbp]
00d66 48 8b 8d f0 09
00 00 mov rcx, QWORD PTR z$[rbp]
00d6d e8 00 00 00 00 call stbi__expand_png_palette
00d72 85 c0 test eax, eax
00d74 75 07 jne SHORT $LN91@stbi__pars
; 5907 : return 0;
00d76 33 c0 xor eax, eax
00d78 e9 3c 01 00 00 jmp $LN1@stbi__pars
$LN91@stbi__pars:
; 5908 : } else if (has_trans) {
00d7d eb 21 jmp SHORT $LN89@stbi__pars
$LN88@stbi__pars:
00d7f 0f b6 85 44 04
00 00 movzx eax, BYTE PTR has_trans$[rbp]
00d86 85 c0 test eax, eax
00d88 74 16 je SHORT $LN92@stbi__pars
; 5909 : // non-paletted image with tRNS -> source image has (constant) alpha
; 5910 : ++s->img_n;
00d8a 48 8b 85 c8 05
00 00 mov rax, QWORD PTR s$[rbp]
00d91 8b 40 08 mov eax, DWORD PTR [rax+8]
00d94 ff c0 inc eax
00d96 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00d9d 89 41 08 mov DWORD PTR [rcx+8], eax
$LN92@stbi__pars:
$LN89@stbi__pars:
; 5911 : }
; 5912 : STBI_FREE(z->expanded);
00da0 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00da7 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
00dab ff 15 00 00 00
00 call QWORD PTR __imp_free
00db1 90 npad 1
; 5913 : z->expanded = NULL;
00db2 48 8b 85 f0 09
00 00 mov rax, QWORD PTR z$[rbp]
00db9 48 c7 40 10 00
00 00 00 mov QWORD PTR [rax+16], 0
; 5914 : // end of PNG chunk, read and skip CRC
; 5915 : stbi__get32be(s);
00dc1 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00dc8 e8 00 00 00 00 call stbi__get32be
00dcd 90 npad 1
; 5916 : return 1;
00dce b8 01 00 00 00 mov eax, 1
00dd3 e9 e1 00 00 00 jmp $LN1@stbi__pars
$LN93@stbi__pars:
; 5917 : }
; 5918 :
; 5919 : default:
; 5920 : // if critical, fail
; 5921 : if (first)
00dd8 83 bd 24 05 00
00 00 cmp DWORD PTR first$[rbp], 0
00ddf 74 11 je SHORT $LN94@stbi__pars
; 5922 : return stbi__err("first not IHDR", "Corrupt PNG");
00de1 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
00de8 e8 00 00 00 00 call stbi__err
00ded e9 c7 00 00 00 jmp $LN1@stbi__pars
$LN94@stbi__pars:
; 5923 : if ((c.type & (1 << 29)) == 0) {
00df2 8b 85 ec 05 00
00 mov eax, DWORD PTR c$8[rbp+4]
00df8 25 00 00 00 20 and eax, 536870912 ; 20000000H
00dfd 85 c0 test eax, eax
00dff 0f 85 8f 00 00
00 jne $LN95@stbi__pars
; 5924 : #ifndef STBI_NO_FAILURE_STRINGS
; 5925 : // not threadsafe
; 5926 : static char invalid_chunk[] = "XXXX PNG chunk not known";
; 5927 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24);
00e05 8b 85 ec 05 00
00 mov eax, DWORD PTR c$8[rbp+4]
00e0b c1 e8 18 shr eax, 24
00e0e 25 ff 00 00 00 and eax, 255 ; 000000ffH
00e13 b9 01 00 00 00 mov ecx, 1
00e18 48 6b c9 00 imul rcx, rcx, 0
00e1c 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
00e23 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5928 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16);
00e26 8b 85 ec 05 00
00 mov eax, DWORD PTR c$8[rbp+4]
00e2c c1 e8 10 shr eax, 16
00e2f 25 ff 00 00 00 and eax, 255 ; 000000ffH
00e34 b9 01 00 00 00 mov ecx, 1
00e39 48 6b c9 01 imul rcx, rcx, 1
00e3d 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
00e44 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5929 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8);
00e47 8b 85 ec 05 00
00 mov eax, DWORD PTR c$8[rbp+4]
00e4d c1 e8 08 shr eax, 8
00e50 25 ff 00 00 00 and eax, 255 ; 000000ffH
00e55 b9 01 00 00 00 mov ecx, 1
00e5a 48 6b c9 02 imul rcx, rcx, 2
00e5e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
00e65 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5930 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0);
00e68 8b 85 ec 05 00
00 mov eax, DWORD PTR c$8[rbp+4]
00e6e 25 ff 00 00 00 and eax, 255 ; 000000ffH
00e73 b9 01 00 00 00 mov ecx, 1
00e78 48 6b c9 03 imul rcx, rcx, 3
00e7c 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
00e83 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5931 : #endif
; 5932 : return stbi__err(invalid_chunk,
00e86 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
00e8d e8 00 00 00 00 call stbi__err
00e92 eb 25 jmp SHORT $LN1@stbi__pars
$LN95@stbi__pars:
; 5933 : "PNG not supported: unknown PNG chunk type");
; 5934 : }
; 5935 : stbi__skip(s, c.length);
00e94 8b 95 e8 05 00
00 mov edx, DWORD PTR c$8[rbp]
00e9a 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00ea1 e8 00 00 00 00 call stbi__skip
00ea6 90 npad 1
$LN5@stbi__pars:
; 5936 : break;
; 5937 : }
; 5938 : // end of PNG chunk, read and skip CRC
; 5939 : stbi__get32be(s);
00ea7 48 8b 8d c8 05
00 00 mov rcx, QWORD PTR s$[rbp]
00eae e8 00 00 00 00 call stbi__get32be
00eb3 90 npad 1
; 5940 : }
00eb4 e9 69 f2 ff ff jmp $LN2@stbi__pars
$LN1@stbi__pars:
; 5941 : }
00eb9 48 8b f8 mov rdi, rax
00ebc 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
00ec0 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__parse_png_file$rtcFrameData
00ec7 e8 00 00 00 00 call _RTC_CheckStackVars
00ecc 48 8b c7 mov rax, rdi
00ecf 48 8b 8d c0 09
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00ed6 48 33 cd xor rcx, rbp
00ed9 e8 00 00 00 00 call __security_check_cookie
00ede 48 8d a5 d8 09
00 00 lea rsp, QWORD PTR [rbp+2520]
00ee5 5f pop rdi
00ee6 5d pop rbp
00ee7 c3 ret 0
stbi__parse_png_file ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__de_iphone
_TEXT SEGMENT
s$ = 8
i$ = 36
pixel_count$ = 68
p$ = 104
t$1 = 132
a$2 = 164
t$3 = 196
half$4 = 228
t$5 = 260
tv133 = 468
z$ = 512
stbi__de_iphone PROC ; COMDAT
; 5644 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 02
00 00 sub rsp, 520 ; 00000208H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 5645 : stbi__context *s = z->s;
00020 48 8b 85 00 02
00 00 mov rax, QWORD PTR z$[rbp]
00027 48 8b 00 mov rax, QWORD PTR [rax]
0002a 48 89 45 08 mov QWORD PTR s$[rbp], rax
; 5646 : stbi__uint32 i, pixel_count = s->img_x * s->img_y;
0002e 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00032 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00036 8b 00 mov eax, DWORD PTR [rax]
00038 0f af 41 04 imul eax, DWORD PTR [rcx+4]
0003c 89 45 44 mov DWORD PTR pixel_count$[rbp], eax
; 5647 : stbi_uc *p = z->out;
0003f 48 8b 85 00 02
00 00 mov rax, QWORD PTR z$[rbp]
00046 48 8b 40 18 mov rax, QWORD PTR [rax+24]
0004a 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5648 :
; 5649 : if (s->img_out_n == 3) { // convert bgr to rgb
0004e 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00052 83 78 0c 03 cmp DWORD PTR [rax+12], 3
00056 75 7c jne SHORT $LN11@stbi__de_i
; 5650 : for (i = 0; i < pixel_count; ++i) {
00058 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
0005f eb 08 jmp SHORT $LN4@stbi__de_i
$LN2@stbi__de_i:
00061 8b 45 24 mov eax, DWORD PTR i$[rbp]
00064 ff c0 inc eax
00066 89 45 24 mov DWORD PTR i$[rbp], eax
$LN4@stbi__de_i:
00069 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
0006c 39 45 24 cmp DWORD PTR i$[rbp], eax
0006f 73 5e jae SHORT $LN3@stbi__de_i
; 5651 : stbi_uc t = p[0];
00071 b8 01 00 00 00 mov eax, 1
00076 48 6b c0 00 imul rax, rax, 0
0007a 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
0007e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00082 88 85 84 00 00
00 mov BYTE PTR t$1[rbp], al
; 5652 : p[0] = p[2];
00088 b8 01 00 00 00 mov eax, 1
0008d 48 6b c0 02 imul rax, rax, 2
00091 b9 01 00 00 00 mov ecx, 1
00096 48 6b c9 00 imul rcx, rcx, 0
0009a 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
0009e 4c 8b 45 68 mov r8, QWORD PTR p$[rbp]
000a2 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
000a7 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5653 : p[2] = t;
000aa b8 01 00 00 00 mov eax, 1
000af 48 6b c0 02 imul rax, rax, 2
000b3 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
000b7 0f b6 95 84 00
00 00 movzx edx, BYTE PTR t$1[rbp]
000be 88 14 01 mov BYTE PTR [rcx+rax], dl
; 5654 : p += 3;
000c1 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
000c5 48 83 c0 03 add rax, 3
000c9 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5655 : }
000cd eb 92 jmp SHORT $LN2@stbi__de_i
$LN3@stbi__de_i:
; 5656 : } else {
000cf e9 59 02 00 00 jmp $LN12@stbi__de_i
$LN11@stbi__de_i:
; 5657 : STBI_ASSERT(s->img_out_n == 4);
000d4 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
000d8 83 78 0c 04 cmp DWORD PTR [rax+12], 4
000dc 74 1c je SHORT $LN18@stbi__de_i
000de 41 b8 19 16 00
00 mov r8d, 5657 ; 00001619H
000e4 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
000eb 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@
000f2 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
000f8 33 c0 xor eax, eax
$LN18@stbi__de_i:
; 5658 : if (stbi__unpremultiply_on_load) {
000fa b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_set
000ff 8b c0 mov eax, eax
00101 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00107 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00110 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00114 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
00118 74 25 je SHORT $LN19@stbi__de_i
0011a b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_local
0011f 8b c0 mov eax, eax
00121 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00127 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00130 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00134 8b 04 08 mov eax, DWORD PTR [rax+rcx]
00137 89 85 d4 01 00
00 mov DWORD PTR tv133[rbp], eax
0013d eb 0c jmp SHORT $LN20@stbi__de_i
$LN19@stbi__de_i:
0013f 8b 05 00 00 00
00 mov eax, DWORD PTR stbi__unpremultiply_on_load_global
00145 89 85 d4 01 00
00 mov DWORD PTR tv133[rbp], eax
$LN20@stbi__de_i:
0014b 83 bd d4 01 00
00 00 cmp DWORD PTR tv133[rbp], 0
00152 0f 84 5e 01 00
00 je $LN13@stbi__de_i
; 5659 : // convert bgr to rgb and unpremultiply
; 5660 : for (i = 0; i < pixel_count; ++i) {
00158 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
0015f eb 08 jmp SHORT $LN7@stbi__de_i
$LN5@stbi__de_i:
00161 8b 45 24 mov eax, DWORD PTR i$[rbp]
00164 ff c0 inc eax
00166 89 45 24 mov DWORD PTR i$[rbp], eax
$LN7@stbi__de_i:
00169 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
0016c 39 45 24 cmp DWORD PTR i$[rbp], eax
0016f 0f 83 3f 01 00
00 jae $LN6@stbi__de_i
; 5661 : stbi_uc a = p[3];
00175 b8 01 00 00 00 mov eax, 1
0017a 48 6b c0 03 imul rax, rax, 3
0017e 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00182 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00186 88 85 a4 00 00
00 mov BYTE PTR a$2[rbp], al
; 5662 : stbi_uc t = p[0];
0018c b8 01 00 00 00 mov eax, 1
00191 48 6b c0 00 imul rax, rax, 0
00195 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00199 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0019d 88 85 c4 00 00
00 mov BYTE PTR t$3[rbp], al
; 5663 : if (a) {
001a3 0f b6 85 a4 00
00 00 movzx eax, BYTE PTR a$2[rbp]
001aa 85 c0 test eax, eax
001ac 0f 84 b8 00 00
00 je $LN15@stbi__de_i
; 5664 : stbi_uc half = a / 2;
001b2 0f b6 85 a4 00
00 00 movzx eax, BYTE PTR a$2[rbp]
001b9 99 cdq
001ba 2b c2 sub eax, edx
001bc d1 f8 sar eax, 1
001be 88 85 e4 00 00
00 mov BYTE PTR half$4[rbp], al
; 5665 : p[0] = (p[2] * 255 + half) / a;
001c4 b8 01 00 00 00 mov eax, 1
001c9 48 6b c0 02 imul rax, rax, 2
001cd 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
001d1 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
001d5 69 c0 ff 00 00
00 imul eax, eax, 255 ; 000000ffH
001db 0f b6 8d e4 00
00 00 movzx ecx, BYTE PTR half$4[rbp]
001e2 03 c1 add eax, ecx
001e4 0f b6 8d a4 00
00 00 movzx ecx, BYTE PTR a$2[rbp]
001eb 99 cdq
001ec f7 f9 idiv ecx
001ee b9 01 00 00 00 mov ecx, 1
001f3 48 6b c9 00 imul rcx, rcx, 0
001f7 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
001fb 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5666 : p[1] = (p[1] * 255 + half) / a;
001fe b8 01 00 00 00 mov eax, 1
00203 48 6b c0 01 imul rax, rax, 1
00207 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
0020b 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0020f 69 c0 ff 00 00
00 imul eax, eax, 255 ; 000000ffH
00215 0f b6 8d e4 00
00 00 movzx ecx, BYTE PTR half$4[rbp]
0021c 03 c1 add eax, ecx
0021e 0f b6 8d a4 00
00 00 movzx ecx, BYTE PTR a$2[rbp]
00225 99 cdq
00226 f7 f9 idiv ecx
00228 b9 01 00 00 00 mov ecx, 1
0022d 48 6b c9 01 imul rcx, rcx, 1
00231 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
00235 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5667 : p[2] = (t * 255 + half) / a;
00238 0f b6 85 c4 00
00 00 movzx eax, BYTE PTR t$3[rbp]
0023f 69 c0 ff 00 00
00 imul eax, eax, 255 ; 000000ffH
00245 0f b6 8d e4 00
00 00 movzx ecx, BYTE PTR half$4[rbp]
0024c 03 c1 add eax, ecx
0024e 0f b6 8d a4 00
00 00 movzx ecx, BYTE PTR a$2[rbp]
00255 99 cdq
00256 f7 f9 idiv ecx
00258 b9 01 00 00 00 mov ecx, 1
0025d 48 6b c9 02 imul rcx, rcx, 2
00261 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
00265 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5668 : } else {
00268 eb 39 jmp SHORT $LN16@stbi__de_i
$LN15@stbi__de_i:
; 5669 : p[0] = p[2];
0026a b8 01 00 00 00 mov eax, 1
0026f 48 6b c0 02 imul rax, rax, 2
00273 b9 01 00 00 00 mov ecx, 1
00278 48 6b c9 00 imul rcx, rcx, 0
0027c 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
00280 4c 8b 45 68 mov r8, QWORD PTR p$[rbp]
00284 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00289 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5670 : p[2] = t;
0028c b8 01 00 00 00 mov eax, 1
00291 48 6b c0 02 imul rax, rax, 2
00295 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00299 0f b6 95 c4 00
00 00 movzx edx, BYTE PTR t$3[rbp]
002a0 88 14 01 mov BYTE PTR [rcx+rax], dl
$LN16@stbi__de_i:
; 5671 : }
; 5672 : p += 4;
002a3 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
002a7 48 83 c0 04 add rax, 4
002ab 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5673 : }
002af e9 ad fe ff ff jmp $LN5@stbi__de_i
$LN6@stbi__de_i:
; 5674 : } else {
002b4 eb 77 jmp SHORT $LN14@stbi__de_i
$LN13@stbi__de_i:
; 5675 : // convert bgr to rgb
; 5676 : for (i = 0; i < pixel_count; ++i) {
002b6 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
002bd eb 08 jmp SHORT $LN10@stbi__de_i
$LN8@stbi__de_i:
002bf 8b 45 24 mov eax, DWORD PTR i$[rbp]
002c2 ff c0 inc eax
002c4 89 45 24 mov DWORD PTR i$[rbp], eax
$LN10@stbi__de_i:
002c7 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
002ca 39 45 24 cmp DWORD PTR i$[rbp], eax
002cd 73 5e jae SHORT $LN9@stbi__de_i
; 5677 : stbi_uc t = p[0];
002cf b8 01 00 00 00 mov eax, 1
002d4 48 6b c0 00 imul rax, rax, 0
002d8 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
002dc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
002e0 88 85 04 01 00
00 mov BYTE PTR t$5[rbp], al
; 5678 : p[0] = p[2];
002e6 b8 01 00 00 00 mov eax, 1
002eb 48 6b c0 02 imul rax, rax, 2
002ef b9 01 00 00 00 mov ecx, 1
002f4 48 6b c9 00 imul rcx, rcx, 0
002f8 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
002fc 4c 8b 45 68 mov r8, QWORD PTR p$[rbp]
00300 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00305 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5679 : p[2] = t;
00308 b8 01 00 00 00 mov eax, 1
0030d 48 6b c0 02 imul rax, rax, 2
00311 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00315 0f b6 95 04 01
00 00 movzx edx, BYTE PTR t$5[rbp]
0031c 88 14 01 mov BYTE PTR [rcx+rax], dl
; 5680 : p += 4;
0031f 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
00323 48 83 c0 04 add rax, 4
00327 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5681 : }
0032b eb 92 jmp SHORT $LN8@stbi__de_i
$LN9@stbi__de_i:
$LN14@stbi__de_i:
$LN12@stbi__de_i:
; 5682 : }
; 5683 : }
; 5684 : }
0032d 48 8d a5 e8 01
00 00 lea rsp, QWORD PTR [rbp+488]
00334 5f pop rdi
00335 5d pop rbp
00336 c3 ret 0
stbi__de_iphone ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__expand_png_palette
_TEXT SEGMENT
i$ = 4
pixel_count$ = 36
p$ = 72
temp_out$ = 104
orig$ = 136
n$1 = 164
n$2 = 196
a$ = 448
palette$ = 456
len$ = 464
pal_img_n$ = 472
stbi__expand_png_palette PROC ; COMDAT
; 5567 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec c8 01
00 00 sub rsp, 456 ; 000001c8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 5568 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y;
0002f 48 8b 85 c0 01
00 00 mov rax, QWORD PTR a$[rbp]
00036 48 8b 00 mov rax, QWORD PTR [rax]
00039 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR a$[rbp]
00040 48 8b 09 mov rcx, QWORD PTR [rcx]
00043 8b 00 mov eax, DWORD PTR [rax]
00045 0f af 41 04 imul eax, DWORD PTR [rcx+4]
00049 89 45 24 mov DWORD PTR pixel_count$[rbp], eax
; 5569 : stbi_uc *p, *temp_out, *orig = a->out;
0004c 48 8b 85 c0 01
00 00 mov rax, QWORD PTR a$[rbp]
00053 48 8b 40 18 mov rax, QWORD PTR [rax+24]
00057 48 89 85 88 00
00 00 mov QWORD PTR orig$[rbp], rax
; 5570 :
; 5571 : p = (stbi_uc *)stbi__malloc_mad2(pixel_count, pal_img_n, 0);
0005e 45 33 c0 xor r8d, r8d
00061 8b 95 d8 01 00
00 mov edx, DWORD PTR pal_img_n$[rbp]
00067 8b 4d 24 mov ecx, DWORD PTR pixel_count$[rbp]
0006a e8 00 00 00 00 call stbi__malloc_mad2
0006f 48 89 45 48 mov QWORD PTR p$[rbp], rax
; 5572 : if (p == NULL)
00073 48 83 7d 48 00 cmp QWORD PTR p$[rbp], 0
00078 75 11 jne SHORT $LN8@stbi__expa
; 5573 : return stbi__err("outofmem", "Out of memory");
0007a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00081 e8 00 00 00 00 call stbi__err
00086 e9 d1 01 00 00 jmp $LN1@stbi__expa
$LN8@stbi__expa:
; 5574 :
; 5575 : // between here and free(out) below, exitting would leak
; 5576 : temp_out = p;
0008b 48 8b 45 48 mov rax, QWORD PTR p$[rbp]
0008f 48 89 45 68 mov QWORD PTR temp_out$[rbp], rax
; 5577 :
; 5578 : if (pal_img_n == 3) {
00093 83 bd d8 01 00
00 03 cmp DWORD PTR pal_img_n$[rbp], 3
0009a 0f 85 ba 00 00
00 jne $LN9@stbi__expa
; 5579 : for (i = 0; i < pixel_count; ++i) {
000a0 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
000a7 eb 08 jmp SHORT $LN4@stbi__expa
$LN2@stbi__expa:
000a9 8b 45 04 mov eax, DWORD PTR i$[rbp]
000ac ff c0 inc eax
000ae 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__expa:
000b1 8b 45 24 mov eax, DWORD PTR pixel_count$[rbp]
000b4 39 45 04 cmp DWORD PTR i$[rbp], eax
000b7 0f 83 98 00 00
00 jae $LN3@stbi__expa
; 5580 : int n = orig[i] * 4;
000bd 8b 45 04 mov eax, DWORD PTR i$[rbp]
000c0 48 8b 8d 88 00
00 00 mov rcx, QWORD PTR orig$[rbp]
000c7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000cb c1 e0 02 shl eax, 2
000ce 89 85 a4 00 00
00 mov DWORD PTR n$1[rbp], eax
; 5581 : p[0] = palette[n];
000d4 48 63 85 a4 00
00 00 movsxd rax, DWORD PTR n$1[rbp]
000db b9 01 00 00 00 mov ecx, 1
000e0 48 6b c9 00 imul rcx, rcx, 0
000e4 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
000e8 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR palette$[rbp]
000ef 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
000f4 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5582 : p[1] = palette[n + 1];
000f7 8b 85 a4 00 00
00 mov eax, DWORD PTR n$1[rbp]
000fd ff c0 inc eax
000ff 48 98 cdqe
00101 b9 01 00 00 00 mov ecx, 1
00106 48 6b c9 01 imul rcx, rcx, 1
0010a 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
0010e 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR palette$[rbp]
00115 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0011a 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5583 : p[2] = palette[n + 2];
0011d 8b 85 a4 00 00
00 mov eax, DWORD PTR n$1[rbp]
00123 83 c0 02 add eax, 2
00126 48 98 cdqe
00128 b9 01 00 00 00 mov ecx, 1
0012d 48 6b c9 02 imul rcx, rcx, 2
00131 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
00135 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR palette$[rbp]
0013c 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00141 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5584 : p += 3;
00144 48 8b 45 48 mov rax, QWORD PTR p$[rbp]
00148 48 83 c0 03 add rax, 3
0014c 48 89 45 48 mov QWORD PTR p$[rbp], rax
; 5585 : }
00150 e9 54 ff ff ff jmp $LN2@stbi__expa
$LN3@stbi__expa:
; 5586 : } else {
00155 e9 dc 00 00 00 jmp $LN10@stbi__expa
$LN9@stbi__expa:
; 5587 : for (i = 0; i < pixel_count; ++i) {
0015a c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00161 eb 08 jmp SHORT $LN7@stbi__expa
$LN5@stbi__expa:
00163 8b 45 04 mov eax, DWORD PTR i$[rbp]
00166 ff c0 inc eax
00168 89 45 04 mov DWORD PTR i$[rbp], eax
$LN7@stbi__expa:
0016b 8b 45 24 mov eax, DWORD PTR pixel_count$[rbp]
0016e 39 45 04 cmp DWORD PTR i$[rbp], eax
00171 0f 83 bf 00 00
00 jae $LN6@stbi__expa
; 5588 : int n = orig[i] * 4;
00177 8b 45 04 mov eax, DWORD PTR i$[rbp]
0017a 48 8b 8d 88 00
00 00 mov rcx, QWORD PTR orig$[rbp]
00181 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00185 c1 e0 02 shl eax, 2
00188 89 85 c4 00 00
00 mov DWORD PTR n$2[rbp], eax
; 5589 : p[0] = palette[n];
0018e 48 63 85 c4 00
00 00 movsxd rax, DWORD PTR n$2[rbp]
00195 b9 01 00 00 00 mov ecx, 1
0019a 48 6b c9 00 imul rcx, rcx, 0
0019e 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
001a2 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR palette$[rbp]
001a9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
001ae 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5590 : p[1] = palette[n + 1];
001b1 8b 85 c4 00 00
00 mov eax, DWORD PTR n$2[rbp]
001b7 ff c0 inc eax
001b9 48 98 cdqe
001bb b9 01 00 00 00 mov ecx, 1
001c0 48 6b c9 01 imul rcx, rcx, 1
001c4 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
001c8 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR palette$[rbp]
001cf 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
001d4 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5591 : p[2] = palette[n + 2];
001d7 8b 85 c4 00 00
00 mov eax, DWORD PTR n$2[rbp]
001dd 83 c0 02 add eax, 2
001e0 48 98 cdqe
001e2 b9 01 00 00 00 mov ecx, 1
001e7 48 6b c9 02 imul rcx, rcx, 2
001eb 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
001ef 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR palette$[rbp]
001f6 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
001fb 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5592 : p[3] = palette[n + 3];
001fe 8b 85 c4 00 00
00 mov eax, DWORD PTR n$2[rbp]
00204 83 c0 03 add eax, 3
00207 48 98 cdqe
00209 b9 01 00 00 00 mov ecx, 1
0020e 48 6b c9 03 imul rcx, rcx, 3
00212 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
00216 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR palette$[rbp]
0021d 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00222 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5593 : p += 4;
00225 48 8b 45 48 mov rax, QWORD PTR p$[rbp]
00229 48 83 c0 04 add rax, 4
0022d 48 89 45 48 mov QWORD PTR p$[rbp], rax
; 5594 : }
00231 e9 2d ff ff ff jmp $LN5@stbi__expa
$LN6@stbi__expa:
$LN10@stbi__expa:
; 5595 : }
; 5596 : STBI_FREE(a->out);
00236 48 8b 85 c0 01
00 00 mov rax, QWORD PTR a$[rbp]
0023d 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
00241 ff 15 00 00 00
00 call QWORD PTR __imp_free
00247 90 npad 1
; 5597 : a->out = temp_out;
00248 48 8b 85 c0 01
00 00 mov rax, QWORD PTR a$[rbp]
0024f 48 8b 4d 68 mov rcx, QWORD PTR temp_out$[rbp]
00253 48 89 48 18 mov QWORD PTR [rax+24], rcx
; 5598 :
; 5599 : STBI_NOTUSED(len);
; 5600 :
; 5601 : return 1;
00257 b8 01 00 00 00 mov eax, 1
$LN1@stbi__expa:
; 5602 : }
0025c 48 8d a5 a8 01
00 00 lea rsp, QWORD PTR [rbp+424]
00263 5f pop rdi
00264 5d pop rbp
00265 c3 ret 0
stbi__expand_png_palette ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__compute_transparency16
_TEXT SEGMENT
s$ = 8
i$ = 36
pixel_count$ = 68
p$ = 104
tv87 = 308
z$ = 352
tc$ = 360
out_n$ = 368
stbi__compute_transparency16 PROC ; COMDAT
; 5542 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 68 01
00 00 sub rsp, 360 ; 00000168H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 5543 : stbi__context *s = z->s;
0002a 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00031 48 8b 00 mov rax, QWORD PTR [rax]
00034 48 89 45 08 mov QWORD PTR s$[rbp], rax
; 5544 : stbi__uint32 i, pixel_count = s->img_x * s->img_y;
00038 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
0003c 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00040 8b 00 mov eax, DWORD PTR [rax]
00042 0f af 41 04 imul eax, DWORD PTR [rcx+4]
00046 89 45 44 mov DWORD PTR pixel_count$[rbp], eax
; 5545 : stbi__uint16 *p = (stbi__uint16 *)z->out;
00049 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00050 48 8b 40 18 mov rax, QWORD PTR [rax+24]
00054 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5546 :
; 5547 : // compute color-based transparency, assuming we've
; 5548 : // already got 65535 as the alpha value in the output
; 5549 : STBI_ASSERT(out_n == 2 || out_n == 4);
00058 83 bd 70 01 00
00 02 cmp DWORD PTR out_n$[rbp], 2
0005f 74 25 je SHORT $LN12@stbi__comp
00061 83 bd 70 01 00
00 04 cmp DWORD PTR out_n$[rbp], 4
00068 74 1c je SHORT $LN12@stbi__comp
0006a 41 b8 ad 15 00
00 mov r8d, 5549 ; 000015adH
00070 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00077 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@
0007e ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00084 33 c0 xor eax, eax
$LN12@stbi__comp:
; 5550 :
; 5551 : if (out_n == 2) {
00086 83 bd 70 01 00
00 02 cmp DWORD PTR out_n$[rbp], 2
0008d 0f 85 83 00 00
00 jne $LN8@stbi__comp
; 5552 : for (i = 0; i < pixel_count; ++i) {
00093 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
0009a eb 08 jmp SHORT $LN4@stbi__comp
$LN2@stbi__comp:
0009c 8b 45 24 mov eax, DWORD PTR i$[rbp]
0009f ff c0 inc eax
000a1 89 45 24 mov DWORD PTR i$[rbp], eax
$LN4@stbi__comp:
000a4 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
000a7 39 45 24 cmp DWORD PTR i$[rbp], eax
000aa 73 65 jae SHORT $LN3@stbi__comp
; 5553 : p[1] = (p[0] == tc[0] ? 0 : 65535);
000ac b8 02 00 00 00 mov eax, 2
000b1 48 6b c0 00 imul rax, rax, 0
000b5 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
000b9 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
000bd b9 02 00 00 00 mov ecx, 2
000c2 48 6b c9 00 imul rcx, rcx, 0
000c6 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
000cd 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
000d1 3b c1 cmp eax, ecx
000d3 75 0c jne SHORT $LN13@stbi__comp
000d5 c7 85 34 01 00
00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
000df eb 0a jmp SHORT $LN14@stbi__comp
$LN13@stbi__comp:
000e1 c7 85 34 01 00
00 ff ff 00 00 mov DWORD PTR tv87[rbp], 65535 ; 0000ffffH
$LN14@stbi__comp:
000eb b8 02 00 00 00 mov eax, 2
000f0 48 6b c0 01 imul rax, rax, 1
000f4 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
000f8 0f b7 95 34 01
00 00 movzx edx, WORD PTR tv87[rbp]
000ff 66 89 14 01 mov WORD PTR [rcx+rax], dx
; 5554 : p += 2;
00103 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
00107 48 83 c0 04 add rax, 4
0010b 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5555 : }
0010f eb 8b jmp SHORT $LN2@stbi__comp
$LN3@stbi__comp:
; 5556 : } else {
00111 e9 bc 00 00 00 jmp $LN9@stbi__comp
$LN8@stbi__comp:
; 5557 : for (i = 0; i < pixel_count; ++i) {
00116 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
0011d eb 08 jmp SHORT $LN7@stbi__comp
$LN5@stbi__comp:
0011f 8b 45 24 mov eax, DWORD PTR i$[rbp]
00122 ff c0 inc eax
00124 89 45 24 mov DWORD PTR i$[rbp], eax
$LN7@stbi__comp:
00127 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
0012a 39 45 24 cmp DWORD PTR i$[rbp], eax
0012d 0f 83 9f 00 00
00 jae $LN6@stbi__comp
; 5558 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])
00133 b8 02 00 00 00 mov eax, 2
00138 48 6b c0 00 imul rax, rax, 0
0013c 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00140 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00144 b9 02 00 00 00 mov ecx, 2
00149 48 6b c9 00 imul rcx, rcx, 0
0014d 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
00154 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
00158 3b c1 cmp eax, ecx
0015a 75 65 jne SHORT $LN10@stbi__comp
0015c b8 02 00 00 00 mov eax, 2
00161 48 6b c0 01 imul rax, rax, 1
00165 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00169 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
0016d b9 02 00 00 00 mov ecx, 2
00172 48 6b c9 01 imul rcx, rcx, 1
00176 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
0017d 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
00181 3b c1 cmp eax, ecx
00183 75 3c jne SHORT $LN10@stbi__comp
00185 b8 02 00 00 00 mov eax, 2
0018a 48 6b c0 02 imul rax, rax, 2
0018e 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00192 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00196 b9 02 00 00 00 mov ecx, 2
0019b 48 6b c9 02 imul rcx, rcx, 2
0019f 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
001a6 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
001aa 3b c1 cmp eax, ecx
001ac 75 13 jne SHORT $LN10@stbi__comp
; 5559 : p[3] = 0;
001ae b8 02 00 00 00 mov eax, 2
001b3 48 6b c0 03 imul rax, rax, 3
001b7 33 c9 xor ecx, ecx
001b9 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
001bd 66 89 0c 02 mov WORD PTR [rdx+rax], cx
$LN10@stbi__comp:
; 5560 : p += 4;
001c1 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
001c5 48 83 c0 08 add rax, 8
001c9 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5561 : }
001cd e9 4d ff ff ff jmp $LN5@stbi__comp
$LN6@stbi__comp:
$LN9@stbi__comp:
; 5562 : }
; 5563 : return 1;
001d2 b8 01 00 00 00 mov eax, 1
; 5564 : }
001d7 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
001de 5f pop rdi
001df 5d pop rbp
001e0 c3 ret 0
stbi__compute_transparency16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__compute_transparency
_TEXT SEGMENT
s$ = 8
i$ = 36
pixel_count$ = 68
p$ = 104
tv87 = 308
z$ = 352
tc$ = 360
out_n$ = 368
stbi__compute_transparency PROC ; COMDAT
; 5517 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 68 01
00 00 sub rsp, 360 ; 00000168H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 5518 : stbi__context *s = z->s;
0002a 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00031 48 8b 00 mov rax, QWORD PTR [rax]
00034 48 89 45 08 mov QWORD PTR s$[rbp], rax
; 5519 : stbi__uint32 i, pixel_count = s->img_x * s->img_y;
00038 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
0003c 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00040 8b 00 mov eax, DWORD PTR [rax]
00042 0f af 41 04 imul eax, DWORD PTR [rcx+4]
00046 89 45 44 mov DWORD PTR pixel_count$[rbp], eax
; 5520 : stbi_uc *p = z->out;
00049 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00050 48 8b 40 18 mov rax, QWORD PTR [rax+24]
00054 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5521 :
; 5522 : // compute color-based transparency, assuming we've
; 5523 : // already got 255 as the alpha value in the output
; 5524 : STBI_ASSERT(out_n == 2 || out_n == 4);
00058 83 bd 70 01 00
00 02 cmp DWORD PTR out_n$[rbp], 2
0005f 74 25 je SHORT $LN12@stbi__comp
00061 83 bd 70 01 00
00 04 cmp DWORD PTR out_n$[rbp], 4
00068 74 1c je SHORT $LN12@stbi__comp
0006a 41 b8 94 15 00
00 mov r8d, 5524 ; 00001594H
00070 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00077 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@
0007e ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00084 33 c0 xor eax, eax
$LN12@stbi__comp:
; 5525 :
; 5526 : if (out_n == 2) {
00086 83 bd 70 01 00
00 02 cmp DWORD PTR out_n$[rbp], 2
0008d 0f 85 82 00 00
00 jne $LN8@stbi__comp
; 5527 : for (i = 0; i < pixel_count; ++i) {
00093 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
0009a eb 08 jmp SHORT $LN4@stbi__comp
$LN2@stbi__comp:
0009c 8b 45 24 mov eax, DWORD PTR i$[rbp]
0009f ff c0 inc eax
000a1 89 45 24 mov DWORD PTR i$[rbp], eax
$LN4@stbi__comp:
000a4 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
000a7 39 45 24 cmp DWORD PTR i$[rbp], eax
000aa 73 64 jae SHORT $LN3@stbi__comp
; 5528 : p[1] = (p[0] == tc[0] ? 0 : 255);
000ac b8 01 00 00 00 mov eax, 1
000b1 48 6b c0 00 imul rax, rax, 0
000b5 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
000b9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000bd b9 01 00 00 00 mov ecx, 1
000c2 48 6b c9 00 imul rcx, rcx, 0
000c6 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
000cd 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000d1 3b c1 cmp eax, ecx
000d3 75 0c jne SHORT $LN13@stbi__comp
000d5 c7 85 34 01 00
00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
000df eb 0a jmp SHORT $LN14@stbi__comp
$LN13@stbi__comp:
000e1 c7 85 34 01 00
00 ff 00 00 00 mov DWORD PTR tv87[rbp], 255 ; 000000ffH
$LN14@stbi__comp:
000eb b8 01 00 00 00 mov eax, 1
000f0 48 6b c0 01 imul rax, rax, 1
000f4 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
000f8 0f b6 95 34 01
00 00 movzx edx, BYTE PTR tv87[rbp]
000ff 88 14 01 mov BYTE PTR [rcx+rax], dl
; 5529 : p += 2;
00102 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
00106 48 83 c0 02 add rax, 2
0010a 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5530 : }
0010e eb 8c jmp SHORT $LN2@stbi__comp
$LN3@stbi__comp:
; 5531 : } else {
00110 e9 ba 00 00 00 jmp $LN9@stbi__comp
$LN8@stbi__comp:
; 5532 : for (i = 0; i < pixel_count; ++i) {
00115 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
0011c eb 08 jmp SHORT $LN7@stbi__comp
$LN5@stbi__comp:
0011e 8b 45 24 mov eax, DWORD PTR i$[rbp]
00121 ff c0 inc eax
00123 89 45 24 mov DWORD PTR i$[rbp], eax
$LN7@stbi__comp:
00126 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
00129 39 45 24 cmp DWORD PTR i$[rbp], eax
0012c 0f 83 9d 00 00
00 jae $LN6@stbi__comp
; 5533 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])
00132 b8 01 00 00 00 mov eax, 1
00137 48 6b c0 00 imul rax, rax, 0
0013b 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
0013f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00143 b9 01 00 00 00 mov ecx, 1
00148 48 6b c9 00 imul rcx, rcx, 0
0014c 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
00153 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00157 3b c1 cmp eax, ecx
00159 75 63 jne SHORT $LN10@stbi__comp
0015b b8 01 00 00 00 mov eax, 1
00160 48 6b c0 01 imul rax, rax, 1
00164 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00168 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0016c b9 01 00 00 00 mov ecx, 1
00171 48 6b c9 01 imul rcx, rcx, 1
00175 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
0017c 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00180 3b c1 cmp eax, ecx
00182 75 3a jne SHORT $LN10@stbi__comp
00184 b8 01 00 00 00 mov eax, 1
00189 48 6b c0 02 imul rax, rax, 2
0018d 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
00191 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00195 b9 01 00 00 00 mov ecx, 1
0019a 48 6b c9 02 imul rcx, rcx, 2
0019e 48 8b 95 68 01
00 00 mov rdx, QWORD PTR tc$[rbp]
001a5 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
001a9 3b c1 cmp eax, ecx
001ab 75 11 jne SHORT $LN10@stbi__comp
; 5534 : p[3] = 0;
001ad b8 01 00 00 00 mov eax, 1
001b2 48 6b c0 03 imul rax, rax, 3
001b6 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
001ba c6 04 01 00 mov BYTE PTR [rcx+rax], 0
$LN10@stbi__comp:
; 5535 : p += 4;
001be 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
001c2 48 83 c0 04 add rax, 4
001c6 48 89 45 68 mov QWORD PTR p$[rbp], rax
; 5536 : }
001ca e9 4f ff ff ff jmp $LN5@stbi__comp
$LN6@stbi__comp:
$LN9@stbi__comp:
; 5537 : }
; 5538 : return 1;
001cf b8 01 00 00 00 mov eax, 1
; 5539 : }
001d4 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
001db 5f pop rdi
001dc 5d pop rbp
001dd c3 ret 0
stbi__compute_transparency ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__create_png_image
_TEXT SEGMENT
bytes$ = 4
out_bytes$ = 36
final$ = 72
p$ = 100
xorig$7 = 136
yorig$8 = 200
xspc$9 = 264
yspc$10 = 328
i$11 = 388
j$12 = 420
x$13 = 452
y$14 = 484
img_len$15 = 516
out_y$16 = 548
out_x$17 = 580
tv65 = 980
tv280 = 984
a$ = 1024
image_data$ = 1032
image_data_len$ = 1040
out_n$ = 1048
depth$ = 1056
color$ = 1064
interlaced$ = 1072
stbi__create_png_image PROC ; COMDAT
; 5468 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 28 04
00 00 sub rsp, 1064 ; 00000428H
0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
00022 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
00027 b9 9a 00 00 00 mov ecx, 154 ; 0000009aH
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 48
04 00 00 mov rcx, QWORD PTR [rsp+1096]
0003b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00047 90 npad 1
; 5469 : int bytes = (depth == 16 ? 2 : 1);
00048 83 bd 20 04 00
00 10 cmp DWORD PTR depth$[rbp], 16
0004f 75 0c jne SHORT $LN16@stbi__crea
00051 c7 85 d4 03 00
00 02 00 00 00 mov DWORD PTR tv65[rbp], 2
0005b eb 0a jmp SHORT $LN17@stbi__crea
$LN16@stbi__crea:
0005d c7 85 d4 03 00
00 01 00 00 00 mov DWORD PTR tv65[rbp], 1
$LN17@stbi__crea:
00067 8b 85 d4 03 00
00 mov eax, DWORD PTR tv65[rbp]
0006d 89 45 04 mov DWORD PTR bytes$[rbp], eax
; 5470 : int out_bytes = out_n * bytes;
00070 8b 85 18 04 00
00 mov eax, DWORD PTR out_n$[rbp]
00076 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
0007a 89 45 24 mov DWORD PTR out_bytes$[rbp], eax
; 5471 : stbi_uc *final;
; 5472 : int p;
; 5473 : if (!interlaced)
0007d 83 bd 30 04 00
00 00 cmp DWORD PTR interlaced$[rbp], 0
00084 75 5b jne SHORT $LN11@stbi__crea
; 5474 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x,
00086 48 8b 85 00 04
00 00 mov rax, QWORD PTR a$[rbp]
0008d 48 8b 00 mov rax, QWORD PTR [rax]
00090 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR a$[rbp]
00097 48 8b 09 mov rcx, QWORD PTR [rcx]
0009a 8b 95 28 04 00
00 mov edx, DWORD PTR color$[rbp]
000a0 89 54 24 38 mov DWORD PTR [rsp+56], edx
000a4 8b 95 20 04 00
00 mov edx, DWORD PTR depth$[rbp]
000aa 89 54 24 30 mov DWORD PTR [rsp+48], edx
000ae 8b 40 04 mov eax, DWORD PTR [rax+4]
000b1 89 44 24 28 mov DWORD PTR [rsp+40], eax
000b5 8b 01 mov eax, DWORD PTR [rcx]
000b7 89 44 24 20 mov DWORD PTR [rsp+32], eax
000bb 44 8b 8d 18 04
00 00 mov r9d, DWORD PTR out_n$[rbp]
000c2 44 8b 85 10 04
00 00 mov r8d, DWORD PTR image_data_len$[rbp]
000c9 48 8b 95 08 04
00 00 mov rdx, QWORD PTR image_data$[rbp]
000d0 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR a$[rbp]
000d7 e8 00 00 00 00 call stbi__create_png_image_raw
000dc e9 1b 04 00 00 jmp $LN1@stbi__crea
$LN11@stbi__crea:
; 5475 : a->s->img_y, depth, color);
; 5476 :
; 5477 : // de-interlacing
; 5478 : final = (stbi_uc *)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0);
000e1 48 8b 85 00 04
00 00 mov rax, QWORD PTR a$[rbp]
000e8 48 8b 00 mov rax, QWORD PTR [rax]
000eb 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR a$[rbp]
000f2 48 8b 09 mov rcx, QWORD PTR [rcx]
000f5 45 33 c9 xor r9d, r9d
000f8 44 8b 45 24 mov r8d, DWORD PTR out_bytes$[rbp]
000fc 8b 50 04 mov edx, DWORD PTR [rax+4]
000ff 8b 09 mov ecx, DWORD PTR [rcx]
00101 e8 00 00 00 00 call stbi__malloc_mad3
00106 48 89 45 48 mov QWORD PTR final$[rbp], rax
; 5479 : if (!final)
0010a 48 83 7d 48 00 cmp QWORD PTR final$[rbp], 0
0010f 75 11 jne SHORT $LN12@stbi__crea
; 5480 : return stbi__err("outofmem", "Out of memory");
00111 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00118 e8 00 00 00 00 call stbi__err
0011d e9 da 03 00 00 jmp $LN1@stbi__crea
$LN12@stbi__crea:
; 5481 : for (p = 0; p < 7; ++p) {
00122 c7 45 64 00 00
00 00 mov DWORD PTR p$[rbp], 0
00129 eb 08 jmp SHORT $LN4@stbi__crea
$LN2@stbi__crea:
0012b 8b 45 64 mov eax, DWORD PTR p$[rbp]
0012e ff c0 inc eax
00130 89 45 64 mov DWORD PTR p$[rbp], eax
$LN4@stbi__crea:
00133 83 7d 64 07 cmp DWORD PTR p$[rbp], 7
00137 0f 8d ab 03 00
00 jge $LN3@stbi__crea
; 5482 : int xorig[] = { 0, 4, 0, 2, 0, 1, 0 };
0013d c7 85 88 00 00
00 00 00 00 00 mov DWORD PTR xorig$7[rbp], 0
00147 c7 85 8c 00 00
00 04 00 00 00 mov DWORD PTR xorig$7[rbp+4], 4
00151 c7 85 90 00 00
00 00 00 00 00 mov DWORD PTR xorig$7[rbp+8], 0
0015b c7 85 94 00 00
00 02 00 00 00 mov DWORD PTR xorig$7[rbp+12], 2
00165 c7 85 98 00 00
00 00 00 00 00 mov DWORD PTR xorig$7[rbp+16], 0
0016f c7 85 9c 00 00
00 01 00 00 00 mov DWORD PTR xorig$7[rbp+20], 1
00179 c7 85 a0 00 00
00 00 00 00 00 mov DWORD PTR xorig$7[rbp+24], 0
; 5483 : int yorig[] = { 0, 0, 4, 0, 2, 0, 1 };
00183 c7 85 c8 00 00
00 00 00 00 00 mov DWORD PTR yorig$8[rbp], 0
0018d c7 85 cc 00 00
00 00 00 00 00 mov DWORD PTR yorig$8[rbp+4], 0
00197 c7 85 d0 00 00
00 04 00 00 00 mov DWORD PTR yorig$8[rbp+8], 4
001a1 c7 85 d4 00 00
00 00 00 00 00 mov DWORD PTR yorig$8[rbp+12], 0
001ab c7 85 d8 00 00
00 02 00 00 00 mov DWORD PTR yorig$8[rbp+16], 2
001b5 c7 85 dc 00 00
00 00 00 00 00 mov DWORD PTR yorig$8[rbp+20], 0
001bf c7 85 e0 00 00
00 01 00 00 00 mov DWORD PTR yorig$8[rbp+24], 1
; 5484 : int xspc[] = { 8, 8, 4, 4, 2, 2, 1 };
001c9 c7 85 08 01 00
00 08 00 00 00 mov DWORD PTR xspc$9[rbp], 8
001d3 c7 85 0c 01 00
00 08 00 00 00 mov DWORD PTR xspc$9[rbp+4], 8
001dd c7 85 10 01 00
00 04 00 00 00 mov DWORD PTR xspc$9[rbp+8], 4
001e7 c7 85 14 01 00
00 04 00 00 00 mov DWORD PTR xspc$9[rbp+12], 4
001f1 c7 85 18 01 00
00 02 00 00 00 mov DWORD PTR xspc$9[rbp+16], 2
001fb c7 85 1c 01 00
00 02 00 00 00 mov DWORD PTR xspc$9[rbp+20], 2
00205 c7 85 20 01 00
00 01 00 00 00 mov DWORD PTR xspc$9[rbp+24], 1
; 5485 : int yspc[] = { 8, 8, 8, 4, 4, 2, 2 };
0020f c7 85 48 01 00
00 08 00 00 00 mov DWORD PTR yspc$10[rbp], 8
00219 c7 85 4c 01 00
00 08 00 00 00 mov DWORD PTR yspc$10[rbp+4], 8
00223 c7 85 50 01 00
00 08 00 00 00 mov DWORD PTR yspc$10[rbp+8], 8
0022d c7 85 54 01 00
00 04 00 00 00 mov DWORD PTR yspc$10[rbp+12], 4
00237 c7 85 58 01 00
00 04 00 00 00 mov DWORD PTR yspc$10[rbp+16], 4
00241 c7 85 5c 01 00
00 02 00 00 00 mov DWORD PTR yspc$10[rbp+20], 2
0024b c7 85 60 01 00
00 02 00 00 00 mov DWORD PTR yspc$10[rbp+24], 2
; 5486 : int i, j, x, y;
; 5487 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1
; 5488 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p];
00255 48 8b 85 00 04
00 00 mov rax, QWORD PTR a$[rbp]
0025c 48 8b 00 mov rax, QWORD PTR [rax]
0025f 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
00263 8b 8c 8d 88 00
00 00 mov ecx, DWORD PTR xorig$7[rbp+rcx*4]
0026a 8b 00 mov eax, DWORD PTR [rax]
0026c 2b c1 sub eax, ecx
0026e 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
00272 8b 8c 8d 08 01
00 00 mov ecx, DWORD PTR xspc$9[rbp+rcx*4]
00279 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
0027d 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
00281 33 d2 xor edx, edx
00283 f7 b4 8d 08 01
00 00 div DWORD PTR xspc$9[rbp+rcx*4]
0028a 89 85 c4 01 00
00 mov DWORD PTR x$13[rbp], eax
; 5489 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p];
00290 48 8b 85 00 04
00 00 mov rax, QWORD PTR a$[rbp]
00297 48 8b 00 mov rax, QWORD PTR [rax]
0029a 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
0029e 8b 8c 8d c8 00
00 00 mov ecx, DWORD PTR yorig$8[rbp+rcx*4]
002a5 8b 40 04 mov eax, DWORD PTR [rax+4]
002a8 2b c1 sub eax, ecx
002aa 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
002ae 8b 8c 8d 48 01
00 00 mov ecx, DWORD PTR yspc$10[rbp+rcx*4]
002b5 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
002b9 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
002bd 33 d2 xor edx, edx
002bf f7 b4 8d 48 01
00 00 div DWORD PTR yspc$10[rbp+rcx*4]
002c6 89 85 e4 01 00
00 mov DWORD PTR y$14[rbp], eax
; 5490 : if (x && y) {
002cc 83 bd c4 01 00
00 00 cmp DWORD PTR x$13[rbp], 0
002d3 0f 84 0a 02 00
00 je $LN13@stbi__crea
002d9 83 bd e4 01 00
00 00 cmp DWORD PTR y$14[rbp], 0
002e0 0f 84 fd 01 00
00 je $LN13@stbi__crea
; 5491 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y;
002e6 48 8b 85 00 04
00 00 mov rax, QWORD PTR a$[rbp]
002ed 48 8b 00 mov rax, QWORD PTR [rax]
002f0 8b 40 08 mov eax, DWORD PTR [rax+8]
002f3 0f af 85 c4 01
00 00 imul eax, DWORD PTR x$13[rbp]
002fa 0f af 85 20 04
00 00 imul eax, DWORD PTR depth$[rbp]
00301 83 c0 07 add eax, 7
00304 c1 f8 03 sar eax, 3
00307 ff c0 inc eax
00309 0f af 85 e4 01
00 00 imul eax, DWORD PTR y$14[rbp]
00310 89 85 04 02 00
00 mov DWORD PTR img_len$15[rbp], eax
; 5492 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y,
00316 8b 85 28 04 00
00 mov eax, DWORD PTR color$[rbp]
0031c 89 44 24 38 mov DWORD PTR [rsp+56], eax
00320 8b 85 20 04 00
00 mov eax, DWORD PTR depth$[rbp]
00326 89 44 24 30 mov DWORD PTR [rsp+48], eax
0032a 8b 85 e4 01 00
00 mov eax, DWORD PTR y$14[rbp]
00330 89 44 24 28 mov DWORD PTR [rsp+40], eax
00334 8b 85 c4 01 00
00 mov eax, DWORD PTR x$13[rbp]
0033a 89 44 24 20 mov DWORD PTR [rsp+32], eax
0033e 44 8b 8d 18 04
00 00 mov r9d, DWORD PTR out_n$[rbp]
00345 44 8b 85 10 04
00 00 mov r8d, DWORD PTR image_data_len$[rbp]
0034c 48 8b 95 08 04
00 00 mov rdx, QWORD PTR image_data$[rbp]
00353 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR a$[rbp]
0035a e8 00 00 00 00 call stbi__create_png_image_raw
0035f 85 c0 test eax, eax
00361 75 12 jne SHORT $LN14@stbi__crea
; 5493 : depth, color)) {
; 5494 : STBI_FREE(final);
00363 48 8b 4d 48 mov rcx, QWORD PTR final$[rbp]
00367 ff 15 00 00 00
00 call QWORD PTR __imp_free
0036d 90 npad 1
; 5495 : return 0;
0036e 33 c0 xor eax, eax
00370 e9 87 01 00 00 jmp $LN1@stbi__crea
$LN14@stbi__crea:
; 5496 : }
; 5497 : for (j = 0; j < y; ++j) {
00375 c7 85 a4 01 00
00 00 00 00 00 mov DWORD PTR j$12[rbp], 0
0037f eb 0e jmp SHORT $LN7@stbi__crea
$LN5@stbi__crea:
00381 8b 85 a4 01 00
00 mov eax, DWORD PTR j$12[rbp]
00387 ff c0 inc eax
00389 89 85 a4 01 00
00 mov DWORD PTR j$12[rbp], eax
$LN7@stbi__crea:
0038f 8b 85 e4 01 00
00 mov eax, DWORD PTR y$14[rbp]
00395 39 85 a4 01 00
00 cmp DWORD PTR j$12[rbp], eax
0039b 0f 8d 00 01 00
00 jge $LN6@stbi__crea
; 5498 : for (i = 0; i < x; ++i) {
003a1 c7 85 84 01 00
00 00 00 00 00 mov DWORD PTR i$11[rbp], 0
003ab eb 0e jmp SHORT $LN10@stbi__crea
$LN8@stbi__crea:
003ad 8b 85 84 01 00
00 mov eax, DWORD PTR i$11[rbp]
003b3 ff c0 inc eax
003b5 89 85 84 01 00
00 mov DWORD PTR i$11[rbp], eax
$LN10@stbi__crea:
003bb 8b 85 c4 01 00
00 mov eax, DWORD PTR x$13[rbp]
003c1 39 85 84 01 00
00 cmp DWORD PTR i$11[rbp], eax
003c7 0f 8d cf 00 00
00 jge $LN9@stbi__crea
; 5499 : int out_y = j * yspc[p] + yorig[p];
003cd 48 63 45 64 movsxd rax, DWORD PTR p$[rbp]
003d1 8b 8d a4 01 00
00 mov ecx, DWORD PTR j$12[rbp]
003d7 0f af 8c 85 48
01 00 00 imul ecx, DWORD PTR yspc$10[rbp+rax*4]
003df 8b c1 mov eax, ecx
003e1 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
003e5 03 84 8d c8 00
00 00 add eax, DWORD PTR yorig$8[rbp+rcx*4]
003ec 89 85 24 02 00
00 mov DWORD PTR out_y$16[rbp], eax
; 5500 : int out_x = i * xspc[p] + xorig[p];
003f2 48 63 45 64 movsxd rax, DWORD PTR p$[rbp]
003f6 8b 8d 84 01 00
00 mov ecx, DWORD PTR i$11[rbp]
003fc 0f af 8c 85 08
01 00 00 imul ecx, DWORD PTR xspc$9[rbp+rax*4]
00404 8b c1 mov eax, ecx
00406 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
0040a 03 84 8d 88 00
00 00 add eax, DWORD PTR xorig$7[rbp+rcx*4]
00411 89 85 44 02 00
00 mov DWORD PTR out_x$17[rbp], eax
; 5501 : memcpy(final + out_y * a->s->img_x * out_bytes +
00417 48 63 45 24 movsxd rax, DWORD PTR out_bytes$[rbp]
0041b 8b 8d a4 01 00
00 mov ecx, DWORD PTR j$12[rbp]
00421 0f af 8d c4 01
00 00 imul ecx, DWORD PTR x$13[rbp]
00428 03 8d 84 01 00
00 add ecx, DWORD PTR i$11[rbp]
0042e 0f af 4d 24 imul ecx, DWORD PTR out_bytes$[rbp]
00432 48 63 c9 movsxd rcx, ecx
00435 48 8b 95 00 04
00 00 mov rdx, QWORD PTR a$[rbp]
0043c 48 03 4a 18 add rcx, QWORD PTR [rdx+24]
00440 48 8b 95 00 04
00 00 mov rdx, QWORD PTR a$[rbp]
00447 48 8b 12 mov rdx, QWORD PTR [rdx]
0044a 44 8b 85 24 02
00 00 mov r8d, DWORD PTR out_y$16[rbp]
00451 44 0f af 02 imul r8d, DWORD PTR [rdx]
00455 41 8b d0 mov edx, r8d
00458 0f af 55 24 imul edx, DWORD PTR out_bytes$[rbp]
0045c 8b d2 mov edx, edx
0045e 4c 8b 45 48 mov r8, QWORD PTR final$[rbp]
00462 4c 03 c2 add r8, rdx
00465 49 8b d0 mov rdx, r8
00468 44 8b 85 44 02
00 00 mov r8d, DWORD PTR out_x$17[rbp]
0046f 44 0f af 45 24 imul r8d, DWORD PTR out_bytes$[rbp]
00474 4d 63 c0 movsxd r8, r8d
00477 49 03 d0 add rdx, r8
0047a 48 89 95 d8 03
00 00 mov QWORD PTR tv280[rbp], rdx
00481 4c 8b c0 mov r8, rax
00484 48 8b d1 mov rdx, rcx
00487 48 8b 85 d8 03
00 00 mov rax, QWORD PTR tv280[rbp]
0048e 48 8b c8 mov rcx, rax
00491 e8 00 00 00 00 call memcpy
00496 90 npad 1
; 5502 : out_x * out_bytes,
; 5503 : a->out + (j * x + i) * out_bytes, out_bytes);
; 5504 : }
00497 e9 11 ff ff ff jmp $LN8@stbi__crea
$LN9@stbi__crea:
; 5505 : }
0049c e9 e0 fe ff ff jmp $LN5@stbi__crea
$LN6@stbi__crea:
; 5506 : STBI_FREE(a->out);
004a1 48 8b 85 00 04
00 00 mov rax, QWORD PTR a$[rbp]
004a8 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
004ac ff 15 00 00 00
00 call QWORD PTR __imp_free
004b2 90 npad 1
; 5507 : image_data += img_len;
004b3 8b 85 04 02 00
00 mov eax, DWORD PTR img_len$15[rbp]
004b9 48 8b 8d 08 04
00 00 mov rcx, QWORD PTR image_data$[rbp]
004c0 48 03 c8 add rcx, rax
004c3 48 8b c1 mov rax, rcx
004c6 48 89 85 08 04
00 00 mov QWORD PTR image_data$[rbp], rax
; 5508 : image_data_len -= img_len;
004cd 8b 85 04 02 00
00 mov eax, DWORD PTR img_len$15[rbp]
004d3 8b 8d 10 04 00
00 mov ecx, DWORD PTR image_data_len$[rbp]
004d9 2b c8 sub ecx, eax
004db 8b c1 mov eax, ecx
004dd 89 85 10 04 00
00 mov DWORD PTR image_data_len$[rbp], eax
$LN13@stbi__crea:
; 5509 : }
; 5510 : }
004e3 e9 43 fc ff ff jmp $LN2@stbi__crea
$LN3@stbi__crea:
; 5511 : a->out = final;
004e8 48 8b 85 00 04
00 00 mov rax, QWORD PTR a$[rbp]
004ef 48 8b 4d 48 mov rcx, QWORD PTR final$[rbp]
004f3 48 89 48 18 mov QWORD PTR [rax+24], rcx
; 5512 :
; 5513 : return 1;
004f7 b8 01 00 00 00 mov eax, 1
$LN1@stbi__crea:
; 5514 : }
004fc 48 8b f8 mov rdi, rax
004ff 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
00503 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__create_png_image$rtcFrameData
0050a e8 00 00 00 00 call _RTC_CheckStackVars
0050f 48 8b c7 mov rax, rdi
00512 48 8d a5 e8 03
00 00 lea rsp, QWORD PTR [rbp+1000]
00519 5f pop rdi
0051a 5d pop rbp
0051b c3 ret 0
stbi__create_png_image ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__create_png_image_raw
_TEXT SEGMENT
bytes$ = 4
s$ = 40
i$ = 68
j$ = 100
stride$ = 132
img_len$ = 164
img_width_bytes$ = 196
filter_buf$ = 232
all_ok$ = 260
k$ = 292
img_n$ = 324
output_bytes$ = 356
filter_bytes$ = 388
width$ = 420
cur$1 = 456
prior$2 = 488
dest$3 = 520
nk$4 = 548
filter$5 = 580
scale$6 = 612
in$7 = 648
out$8 = 680
inb$9 = 708
nsmp$10 = 740
dest16$11 = 776
nsmp$12 = 804
tv65 = 1204
tv181 = 1204
tv287 = 1204
tv340 = 1204
tv304 = 1208
a$ = 1248
raw$ = 1256
raw_len$ = 1264
out_n$ = 1272
x$ = 1280
y$ = 1288
depth$ = 1296
color$ = 1304
stbi__create_png_image_raw PROC ; COMDAT
; 5286 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 04
00 00 sub rsp, 1256 ; 000004e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 5287 : int bytes = (depth == 16 ? 2 : 1);
0002f 83 bd 10 05 00
00 10 cmp DWORD PTR depth$[rbp], 16
00036 75 0c jne SHORT $LN81@stbi__crea
00038 c7 85 b4 04 00
00 02 00 00 00 mov DWORD PTR tv65[rbp], 2
00042 eb 0a jmp SHORT $LN82@stbi__crea
$LN81@stbi__crea:
00044 c7 85 b4 04 00
00 01 00 00 00 mov DWORD PTR tv65[rbp], 1
$LN82@stbi__crea:
0004e 8b 85 b4 04 00
00 mov eax, DWORD PTR tv65[rbp]
00054 89 45 04 mov DWORD PTR bytes$[rbp], eax
; 5288 : stbi__context *s = a->s;
00057 48 8b 85 e0 04
00 00 mov rax, QWORD PTR a$[rbp]
0005e 48 8b 00 mov rax, QWORD PTR [rax]
00061 48 89 45 28 mov QWORD PTR s$[rbp], rax
; 5289 : stbi__uint32 i, j, stride = x * out_n * bytes;
00065 8b 85 00 05 00
00 mov eax, DWORD PTR x$[rbp]
0006b 0f af 85 f8 04
00 00 imul eax, DWORD PTR out_n$[rbp]
00072 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
00076 89 85 84 00 00
00 mov DWORD PTR stride$[rbp], eax
; 5290 : stbi__uint32 img_len, img_width_bytes;
; 5291 : stbi_uc *filter_buf;
; 5292 : int all_ok = 1;
0007c c7 85 04 01 00
00 01 00 00 00 mov DWORD PTR all_ok$[rbp], 1
; 5293 : int k;
; 5294 : int img_n = s->img_n; // copy it into a local for later
00086 48 8b 45 28 mov rax, QWORD PTR s$[rbp]
0008a 8b 40 08 mov eax, DWORD PTR [rax+8]
0008d 89 85 44 01 00
00 mov DWORD PTR img_n$[rbp], eax
; 5295 :
; 5296 : int output_bytes = out_n * bytes;
00093 8b 85 f8 04 00
00 mov eax, DWORD PTR out_n$[rbp]
00099 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
0009d 89 85 64 01 00
00 mov DWORD PTR output_bytes$[rbp], eax
; 5297 : int filter_bytes = img_n * bytes;
000a3 8b 85 44 01 00
00 mov eax, DWORD PTR img_n$[rbp]
000a9 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
000ad 89 85 84 01 00
00 mov DWORD PTR filter_bytes$[rbp], eax
; 5298 : int width = x;
000b3 8b 85 00 05 00
00 mov eax, DWORD PTR x$[rbp]
000b9 89 85 a4 01 00
00 mov DWORD PTR width$[rbp], eax
; 5299 :
; 5300 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1);
000bf 48 8b 45 28 mov rax, QWORD PTR s$[rbp]
000c3 8b 40 08 mov eax, DWORD PTR [rax+8]
000c6 39 85 f8 04 00
00 cmp DWORD PTR out_n$[rbp], eax
000cc 74 2d je SHORT $LN83@stbi__crea
000ce 48 8b 45 28 mov rax, QWORD PTR s$[rbp]
000d2 8b 40 08 mov eax, DWORD PTR [rax+8]
000d5 ff c0 inc eax
000d7 39 85 f8 04 00
00 cmp DWORD PTR out_n$[rbp], eax
000dd 74 1c je SHORT $LN83@stbi__crea
000df 41 b8 b4 14 00
00 mov r8d, 5300 ; 000014b4H
000e5 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
000ec 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@
000f3 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
000f9 33 c0 xor eax, eax
$LN83@stbi__crea:
; 5301 : a->out = (stbi_uc *)stbi__malloc_mad3(x, y, output_bytes,
000fb 45 33 c9 xor r9d, r9d
000fe 44 8b 85 64 01
00 00 mov r8d, DWORD PTR output_bytes$[rbp]
00105 8b 95 08 05 00
00 mov edx, DWORD PTR y$[rbp]
0010b 8b 8d 00 05 00
00 mov ecx, DWORD PTR x$[rbp]
00111 e8 00 00 00 00 call stbi__malloc_mad3
00116 48 8b 8d e0 04
00 00 mov rcx, QWORD PTR a$[rbp]
0011d 48 89 41 18 mov QWORD PTR [rcx+24], rax
; 5302 : 0); // extra bytes to write off the end into
; 5303 : if (!a->out)
00121 48 8b 85 e0 04
00 00 mov rax, QWORD PTR a$[rbp]
00128 48 83 78 18 00 cmp QWORD PTR [rax+24], 0
0012d 75 11 jne SHORT $LN46@stbi__crea
; 5304 : return stbi__err("outofmem", "Out of memory");
0012f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00136 e8 00 00 00 00 call stbi__err
0013b e9 3c 0c 00 00 jmp $LN1@stbi__crea
$LN46@stbi__crea:
; 5305 :
; 5306 : // note: error exits here don't need to clean up a->out individually,
; 5307 : // stbi__do_png always does on error.
; 5308 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7))
00140 41 b9 07 00 00
00 mov r9d, 7
00146 44 8b 85 10 05
00 00 mov r8d, DWORD PTR depth$[rbp]
0014d 8b 95 00 05 00
00 mov edx, DWORD PTR x$[rbp]
00153 8b 8d 44 01 00
00 mov ecx, DWORD PTR img_n$[rbp]
00159 e8 00 00 00 00 call stbi__mad3sizes_valid
0015e 85 c0 test eax, eax
00160 75 11 jne SHORT $LN47@stbi__crea
; 5309 : return stbi__err("too large", "Corrupt PNG");
00162 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00169 e8 00 00 00 00 call stbi__err
0016e e9 09 0c 00 00 jmp $LN1@stbi__crea
$LN47@stbi__crea:
; 5310 : img_width_bytes = (((img_n * x * depth) + 7) >> 3);
00173 8b 85 44 01 00
00 mov eax, DWORD PTR img_n$[rbp]
00179 0f af 85 00 05
00 00 imul eax, DWORD PTR x$[rbp]
00180 0f af 85 10 05
00 00 imul eax, DWORD PTR depth$[rbp]
00187 83 c0 07 add eax, 7
0018a c1 e8 03 shr eax, 3
0018d 89 85 c4 00 00
00 mov DWORD PTR img_width_bytes$[rbp], eax
; 5311 : if (!stbi__mad2sizes_valid(img_width_bytes, y, img_width_bytes))
00193 44 8b 85 c4 00
00 00 mov r8d, DWORD PTR img_width_bytes$[rbp]
0019a 8b 95 08 05 00
00 mov edx, DWORD PTR y$[rbp]
001a0 8b 8d c4 00 00
00 mov ecx, DWORD PTR img_width_bytes$[rbp]
001a6 e8 00 00 00 00 call stbi__mad2sizes_valid
001ab 85 c0 test eax, eax
001ad 75 11 jne SHORT $LN48@stbi__crea
; 5312 : return stbi__err("too large", "Corrupt PNG");
001af 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
001b6 e8 00 00 00 00 call stbi__err
001bb e9 bc 0b 00 00 jmp $LN1@stbi__crea
$LN48@stbi__crea:
; 5313 : img_len = (img_width_bytes + 1) * y;
001c0 8b 85 c4 00 00
00 mov eax, DWORD PTR img_width_bytes$[rbp]
001c6 ff c0 inc eax
001c8 0f af 85 08 05
00 00 imul eax, DWORD PTR y$[rbp]
001cf 89 85 a4 00 00
00 mov DWORD PTR img_len$[rbp], eax
; 5314 :
; 5315 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs,
; 5316 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros),
; 5317 : // so just check for raw_len < img_len always.
; 5318 : if (raw_len < img_len)
001d5 8b 85 a4 00 00
00 mov eax, DWORD PTR img_len$[rbp]
001db 39 85 f0 04 00
00 cmp DWORD PTR raw_len$[rbp], eax
001e1 73 11 jae SHORT $LN49@stbi__crea
; 5319 : return stbi__err("not enough pixels", "Corrupt PNG");
001e3 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BC@BHMPBBMG@not?5enough?5pixels@
001ea e8 00 00 00 00 call stbi__err
001ef e9 88 0b 00 00 jmp $LN1@stbi__crea
$LN49@stbi__crea:
; 5320 :
; 5321 : // Allocate two scan lines worth of filter workspace buffer.
; 5322 : filter_buf = (stbi_uc *)stbi__malloc_mad2(img_width_bytes, 2, 0);
001f4 45 33 c0 xor r8d, r8d
001f7 ba 02 00 00 00 mov edx, 2
001fc 8b 8d c4 00 00
00 mov ecx, DWORD PTR img_width_bytes$[rbp]
00202 e8 00 00 00 00 call stbi__malloc_mad2
00207 48 89 85 e8 00
00 00 mov QWORD PTR filter_buf$[rbp], rax
; 5323 : if (!filter_buf)
0020e 48 83 bd e8 00
00 00 00 cmp QWORD PTR filter_buf$[rbp], 0
00216 75 11 jne SHORT $LN50@stbi__crea
; 5324 : return stbi__err("outofmem", "Out of memory");
00218 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0021f e8 00 00 00 00 call stbi__err
00224 e9 53 0b 00 00 jmp $LN1@stbi__crea
$LN50@stbi__crea:
; 5325 :
; 5326 : // Filtering for low-bit-depth images
; 5327 : if (depth < 8) {
00229 83 bd 10 05 00
00 08 cmp DWORD PTR depth$[rbp], 8
00230 7d 16 jge SHORT $LN51@stbi__crea
; 5328 : filter_bytes = 1;
00232 c7 85 84 01 00
00 01 00 00 00 mov DWORD PTR filter_bytes$[rbp], 1
; 5329 : width = img_width_bytes;
0023c 8b 85 c4 00 00
00 mov eax, DWORD PTR img_width_bytes$[rbp]
00242 89 85 a4 01 00
00 mov DWORD PTR width$[rbp], eax
$LN51@stbi__crea:
; 5330 : }
; 5331 :
; 5332 : for (j = 0; j < y; ++j) {
00248 c7 45 64 00 00
00 00 mov DWORD PTR j$[rbp], 0
0024f eb 08 jmp SHORT $LN4@stbi__crea
$LN2@stbi__crea:
00251 8b 45 64 mov eax, DWORD PTR j$[rbp]
00254 ff c0 inc eax
00256 89 45 64 mov DWORD PTR j$[rbp], eax
$LN4@stbi__crea:
00259 8b 85 08 05 00
00 mov eax, DWORD PTR y$[rbp]
0025f 39 45 64 cmp DWORD PTR j$[rbp], eax
00262 0f 83 f4 0a 00
00 jae $LN3@stbi__crea
; 5333 : // cur/prior filter buffers alternate
; 5334 : stbi_uc *cur = filter_buf + (j & 1) * img_width_bytes;
00268 8b 45 64 mov eax, DWORD PTR j$[rbp]
0026b 83 e0 01 and eax, 1
0026e 0f af 85 c4 00
00 00 imul eax, DWORD PTR img_width_bytes$[rbp]
00275 8b c0 mov eax, eax
00277 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR filter_buf$[rbp]
0027e 48 03 c8 add rcx, rax
00281 48 8b c1 mov rax, rcx
00284 48 89 85 c8 01
00 00 mov QWORD PTR cur$1[rbp], rax
; 5335 : stbi_uc *prior = filter_buf + (~j & 1) * img_width_bytes;
0028b 8b 45 64 mov eax, DWORD PTR j$[rbp]
0028e f7 d0 not eax
00290 83 e0 01 and eax, 1
00293 0f af 85 c4 00
00 00 imul eax, DWORD PTR img_width_bytes$[rbp]
0029a 8b c0 mov eax, eax
0029c 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR filter_buf$[rbp]
002a3 48 03 c8 add rcx, rax
002a6 48 8b c1 mov rax, rcx
002a9 48 89 85 e8 01
00 00 mov QWORD PTR prior$2[rbp], rax
; 5336 : stbi_uc *dest = a->out + stride * j;
002b0 8b 85 84 00 00
00 mov eax, DWORD PTR stride$[rbp]
002b6 0f af 45 64 imul eax, DWORD PTR j$[rbp]
002ba 8b c0 mov eax, eax
002bc 48 8b 8d e0 04
00 00 mov rcx, QWORD PTR a$[rbp]
002c3 48 03 41 18 add rax, QWORD PTR [rcx+24]
002c7 48 89 85 08 02
00 00 mov QWORD PTR dest$3[rbp], rax
; 5337 : int nk = width * filter_bytes;
002ce 8b 85 a4 01 00
00 mov eax, DWORD PTR width$[rbp]
002d4 0f af 85 84 01
00 00 imul eax, DWORD PTR filter_bytes$[rbp]
002db 89 85 24 02 00
00 mov DWORD PTR nk$4[rbp], eax
; 5338 : int filter = *raw++;
002e1 48 8b 85 e8 04
00 00 mov rax, QWORD PTR raw$[rbp]
002e8 0f b6 00 movzx eax, BYTE PTR [rax]
002eb 89 85 44 02 00
00 mov DWORD PTR filter$5[rbp], eax
002f1 48 8b 85 e8 04
00 00 mov rax, QWORD PTR raw$[rbp]
002f8 48 ff c0 inc rax
002fb 48 89 85 e8 04
00 00 mov QWORD PTR raw$[rbp], rax
; 5339 :
; 5340 : // check filter type
; 5341 : if (filter > 4) {
00302 83 bd 44 02 00
00 04 cmp DWORD PTR filter$5[rbp], 4
00309 7e 17 jle SHORT $LN52@stbi__crea
; 5342 : all_ok = stbi__err("invalid filter", "Corrupt PNG");
0030b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@FBBCPGMN@invalid?5filter@
00312 e8 00 00 00 00 call stbi__err
00317 89 85 04 01 00
00 mov DWORD PTR all_ok$[rbp], eax
; 5343 : break;
0031d e9 3a 0a 00 00 jmp $LN3@stbi__crea
$LN52@stbi__crea:
; 5344 : }
; 5345 :
; 5346 : // if first row, use special filter that doesn't sample previous row
; 5347 : if (j == 0)
00322 83 7d 64 00 cmp DWORD PTR j$[rbp], 0
00326 75 18 jne SHORT $LN53@stbi__crea
; 5348 : filter = first_row_filter[filter];
00328 48 63 85 44 02
00 00 movsxd rax, DWORD PTR filter$5[rbp]
0032f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:first_row_filter
00336 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0033a 89 85 44 02 00
00 mov DWORD PTR filter$5[rbp], eax
$LN53@stbi__crea:
; 5349 :
; 5350 : // perform actual filtering
; 5351 : switch (filter) {
00340 8b 85 44 02 00
00 mov eax, DWORD PTR filter$5[rbp]
00346 89 85 b4 04 00
00 mov DWORD PTR tv181[rbp], eax
0034c 83 bd b4 04 00
00 05 cmp DWORD PTR tv181[rbp], 5
00353 0f 87 0d 04 00
00 ja $LN5@stbi__crea
00359 48 63 85 b4 04
00 00 movsxd rax, DWORD PTR tv181[rbp]
00360 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__ImageBase
00367 8b 84 81 00 00
00 00 mov eax, DWORD PTR $LN89@stbi__crea[rcx+rax*4]
0036e 48 03 c1 add rax, rcx
00371 ff e0 jmp rax
$LN54@stbi__crea:
; 5352 : case STBI__F_none:
; 5353 : memcpy(cur, raw, nk);
00373 48 63 85 24 02
00 00 movsxd rax, DWORD PTR nk$4[rbp]
0037a 4c 8b c0 mov r8, rax
0037d 48 8b 95 e8 04
00 00 mov rdx, QWORD PTR raw$[rbp]
00384 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
0038b e8 00 00 00 00 call memcpy
00390 90 npad 1
; 5354 : break;
00391 e9 d0 03 00 00 jmp $LN5@stbi__crea
$LN55@stbi__crea:
; 5355 : case STBI__F_sub:
; 5356 : memcpy(cur, raw, filter_bytes);
00396 48 63 85 84 01
00 00 movsxd rax, DWORD PTR filter_bytes$[rbp]
0039d 4c 8b c0 mov r8, rax
003a0 48 8b 95 e8 04
00 00 mov rdx, QWORD PTR raw$[rbp]
003a7 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
003ae e8 00 00 00 00 call memcpy
003b3 90 npad 1
; 5357 : for (k = filter_bytes; k < nk; ++k)
003b4 8b 85 84 01 00
00 mov eax, DWORD PTR filter_bytes$[rbp]
003ba 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
003c0 eb 0e jmp SHORT $LN9@stbi__crea
$LN7@stbi__crea:
003c2 8b 85 24 01 00
00 mov eax, DWORD PTR k$[rbp]
003c8 ff c0 inc eax
003ca 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
$LN9@stbi__crea:
003d0 8b 85 24 02 00
00 mov eax, DWORD PTR nk$4[rbp]
003d6 39 85 24 01 00
00 cmp DWORD PTR k$[rbp], eax
003dc 7d 4a jge SHORT $LN8@stbi__crea
; 5358 : cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]);
003de 48 63 85 24 01
00 00 movsxd rax, DWORD PTR k$[rbp]
003e5 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
003ec 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
003f0 8b 8d 84 01 00
00 mov ecx, DWORD PTR filter_bytes$[rbp]
003f6 8b 95 24 01 00
00 mov edx, DWORD PTR k$[rbp]
003fc 2b d1 sub edx, ecx
003fe 8b ca mov ecx, edx
00400 48 63 c9 movsxd rcx, ecx
00403 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
0040a 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0040e 03 c1 add eax, ecx
00410 25 ff 00 00 00 and eax, 255 ; 000000ffH
00415 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
0041c 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00423 88 04 0a mov BYTE PTR [rdx+rcx], al
00426 eb 9a jmp SHORT $LN7@stbi__crea
$LN8@stbi__crea:
; 5359 : break;
00428 e9 39 03 00 00 jmp $LN5@stbi__crea
$LN56@stbi__crea:
; 5360 : case STBI__F_up:
; 5361 : for (k = 0; k < nk; ++k)
0042d c7 85 24 01 00
00 00 00 00 00 mov DWORD PTR k$[rbp], 0
00437 eb 0e jmp SHORT $LN12@stbi__crea
$LN10@stbi__crea:
00439 8b 85 24 01 00
00 mov eax, DWORD PTR k$[rbp]
0043f ff c0 inc eax
00441 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
$LN12@stbi__crea:
00447 8b 85 24 02 00
00 mov eax, DWORD PTR nk$4[rbp]
0044d 39 85 24 01 00
00 cmp DWORD PTR k$[rbp], eax
00453 7d 3e jge SHORT $LN11@stbi__crea
; 5362 : cur[k] = STBI__BYTECAST(raw[k] + prior[k]);
00455 48 63 85 24 01
00 00 movsxd rax, DWORD PTR k$[rbp]
0045c 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
00463 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00467 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
0046e 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR prior$2[rbp]
00475 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00479 03 c1 add eax, ecx
0047b 25 ff 00 00 00 and eax, 255 ; 000000ffH
00480 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
00487 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
0048e 88 04 0a mov BYTE PTR [rdx+rcx], al
00491 eb a6 jmp SHORT $LN10@stbi__crea
$LN11@stbi__crea:
; 5363 : break;
00493 e9 ce 02 00 00 jmp $LN5@stbi__crea
$LN57@stbi__crea:
; 5364 : case STBI__F_avg:
; 5365 : for (k = 0; k < filter_bytes; ++k)
00498 c7 85 24 01 00
00 00 00 00 00 mov DWORD PTR k$[rbp], 0
004a2 eb 0e jmp SHORT $LN15@stbi__crea
$LN13@stbi__crea:
004a4 8b 85 24 01 00
00 mov eax, DWORD PTR k$[rbp]
004aa ff c0 inc eax
004ac 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
$LN15@stbi__crea:
004b2 8b 85 84 01 00
00 mov eax, DWORD PTR filter_bytes$[rbp]
004b8 39 85 24 01 00
00 cmp DWORD PTR k$[rbp], eax
004be 7d 40 jge SHORT $LN14@stbi__crea
; 5366 : cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1));
004c0 48 63 85 24 01
00 00 movsxd rax, DWORD PTR k$[rbp]
004c7 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
004ce 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
004d2 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
004d9 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR prior$2[rbp]
004e0 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
004e4 d1 f9 sar ecx, 1
004e6 03 c1 add eax, ecx
004e8 25 ff 00 00 00 and eax, 255 ; 000000ffH
004ed 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
004f4 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
004fb 88 04 0a mov BYTE PTR [rdx+rcx], al
004fe eb a4 jmp SHORT $LN13@stbi__crea
$LN14@stbi__crea:
; 5367 : for (k = filter_bytes; k < nk; ++k)
00500 8b 85 84 01 00
00 mov eax, DWORD PTR filter_bytes$[rbp]
00506 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
0050c eb 0e jmp SHORT $LN18@stbi__crea
$LN16@stbi__crea:
0050e 8b 85 24 01 00
00 mov eax, DWORD PTR k$[rbp]
00514 ff c0 inc eax
00516 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
$LN18@stbi__crea:
0051c 8b 85 24 02 00
00 mov eax, DWORD PTR nk$4[rbp]
00522 39 85 24 01 00
00 cmp DWORD PTR k$[rbp], eax
00528 7d 64 jge SHORT $LN17@stbi__crea
; 5368 : cur[k] = STBI__BYTECAST(raw[k] +
0052a 48 63 85 24 01
00 00 movsxd rax, DWORD PTR k$[rbp]
00531 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
00538 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0053c 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
00543 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR prior$2[rbp]
0054a 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0054e 8b 95 84 01 00
00 mov edx, DWORD PTR filter_bytes$[rbp]
00554 44 8b 85 24 01
00 00 mov r8d, DWORD PTR k$[rbp]
0055b 44 2b c2 sub r8d, edx
0055e 41 8b d0 mov edx, r8d
00561 48 63 d2 movsxd rdx, edx
00564 4c 8b 85 c8 01
00 00 mov r8, QWORD PTR cur$1[rbp]
0056b 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
00570 03 ca add ecx, edx
00572 d1 f9 sar ecx, 1
00574 03 c1 add eax, ecx
00576 25 ff 00 00 00 and eax, 255 ; 000000ffH
0057b 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
00582 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00589 88 04 0a mov BYTE PTR [rdx+rcx], al
0058c eb 80 jmp SHORT $LN16@stbi__crea
$LN17@stbi__crea:
; 5369 : ((prior[k] + cur[k - filter_bytes]) >> 1));
; 5370 : break;
0058e e9 d3 01 00 00 jmp $LN5@stbi__crea
$LN58@stbi__crea:
; 5371 : case STBI__F_paeth:
; 5372 : for (k = 0; k < filter_bytes; ++k)
00593 c7 85 24 01 00
00 00 00 00 00 mov DWORD PTR k$[rbp], 0
0059d eb 0e jmp SHORT $LN21@stbi__crea
$LN19@stbi__crea:
0059f 8b 85 24 01 00
00 mov eax, DWORD PTR k$[rbp]
005a5 ff c0 inc eax
005a7 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
$LN21@stbi__crea:
005ad 8b 85 84 01 00
00 mov eax, DWORD PTR filter_bytes$[rbp]
005b3 39 85 24 01 00
00 cmp DWORD PTR k$[rbp], eax
005b9 7d 3e jge SHORT $LN20@stbi__crea
; 5373 : cur[k] = STBI__BYTECAST(
005bb 48 63 85 24 01
00 00 movsxd rax, DWORD PTR k$[rbp]
005c2 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
005c9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
005cd 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
005d4 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR prior$2[rbp]
005db 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
005df 03 c1 add eax, ecx
005e1 25 ff 00 00 00 and eax, 255 ; 000000ffH
005e6 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
005ed 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
005f4 88 04 0a mov BYTE PTR [rdx+rcx], al
005f7 eb a6 jmp SHORT $LN19@stbi__crea
$LN20@stbi__crea:
; 5374 : raw[k] + prior[k]); // prior[k] == stbi__paeth(0,prior[k],0)
; 5375 : for (k = filter_bytes; k < nk; ++k)
005f9 8b 85 84 01 00
00 mov eax, DWORD PTR filter_bytes$[rbp]
005ff 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
00605 eb 0e jmp SHORT $LN24@stbi__crea
$LN22@stbi__crea:
00607 8b 85 24 01 00
00 mov eax, DWORD PTR k$[rbp]
0060d ff c0 inc eax
0060f 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
$LN24@stbi__crea:
00615 8b 85 24 02 00
00 mov eax, DWORD PTR nk$4[rbp]
0061b 39 85 24 01 00
00 cmp DWORD PTR k$[rbp], eax
00621 0f 8d a6 00 00
00 jge $LN23@stbi__crea
; 5376 : cur[k] = STBI__BYTECAST(raw[k] +
00627 48 63 85 24 01
00 00 movsxd rax, DWORD PTR k$[rbp]
0062e 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
00635 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00639 89 85 b4 04 00
00 mov DWORD PTR tv287[rbp], eax
0063f 8b 8d 84 01 00
00 mov ecx, DWORD PTR filter_bytes$[rbp]
00645 8b 95 24 01 00
00 mov edx, DWORD PTR k$[rbp]
0064b 2b d1 sub edx, ecx
0064d 8b ca mov ecx, edx
0064f 48 63 c9 movsxd rcx, ecx
00652 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR prior$2[rbp]
00659 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0065d 48 63 95 24 01
00 00 movsxd rdx, DWORD PTR k$[rbp]
00664 4c 8b 85 e8 01
00 00 mov r8, QWORD PTR prior$2[rbp]
0066b 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
00670 44 8b 85 84 01
00 00 mov r8d, DWORD PTR filter_bytes$[rbp]
00677 44 8b 8d 24 01
00 00 mov r9d, DWORD PTR k$[rbp]
0067e 45 2b c8 sub r9d, r8d
00681 45 8b c1 mov r8d, r9d
00684 4d 63 c0 movsxd r8, r8d
00687 4c 8b 8d c8 01
00 00 mov r9, QWORD PTR cur$1[rbp]
0068e 47 0f b6 04 01 movzx r8d, BYTE PTR [r9+r8]
00693 44 89 85 b8 04
00 00 mov DWORD PTR tv304[rbp], r8d
0069a 44 8b c1 mov r8d, ecx
0069d 8b 8d b8 04 00
00 mov ecx, DWORD PTR tv304[rbp]
006a3 e8 00 00 00 00 call stbi__paeth
006a8 8b 8d b4 04 00
00 mov ecx, DWORD PTR tv287[rbp]
006ae 03 c8 add ecx, eax
006b0 8b c1 mov eax, ecx
006b2 25 ff 00 00 00 and eax, 255 ; 000000ffH
006b7 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
006be 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
006c5 88 04 0a mov BYTE PTR [rdx+rcx], al
006c8 e9 3a ff ff ff jmp $LN22@stbi__crea
$LN23@stbi__crea:
; 5377 : stbi__paeth(cur[k - filter_bytes], prior[k],
; 5378 : prior[k - filter_bytes]));
; 5379 : break;
006cd e9 94 00 00 00 jmp $LN5@stbi__crea
$LN59@stbi__crea:
; 5380 : case STBI__F_avg_first:
; 5381 : memcpy(cur, raw, filter_bytes);
006d2 48 63 85 84 01
00 00 movsxd rax, DWORD PTR filter_bytes$[rbp]
006d9 4c 8b c0 mov r8, rax
006dc 48 8b 95 e8 04
00 00 mov rdx, QWORD PTR raw$[rbp]
006e3 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
006ea e8 00 00 00 00 call memcpy
006ef 90 npad 1
; 5382 : for (k = filter_bytes; k < nk; ++k)
006f0 8b 85 84 01 00
00 mov eax, DWORD PTR filter_bytes$[rbp]
006f6 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
006fc eb 0e jmp SHORT $LN27@stbi__crea
$LN25@stbi__crea:
006fe 8b 85 24 01 00
00 mov eax, DWORD PTR k$[rbp]
00704 ff c0 inc eax
00706 89 85 24 01 00
00 mov DWORD PTR k$[rbp], eax
$LN27@stbi__crea:
0070c 8b 85 24 02 00
00 mov eax, DWORD PTR nk$4[rbp]
00712 39 85 24 01 00
00 cmp DWORD PTR k$[rbp], eax
00718 7d 4c jge SHORT $LN26@stbi__crea
; 5383 : cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1));
0071a 48 63 85 24 01
00 00 movsxd rax, DWORD PTR k$[rbp]
00721 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
00728 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0072c 8b 8d 84 01 00
00 mov ecx, DWORD PTR filter_bytes$[rbp]
00732 8b 95 24 01 00
00 mov edx, DWORD PTR k$[rbp]
00738 2b d1 sub edx, ecx
0073a 8b ca mov ecx, edx
0073c 48 63 c9 movsxd rcx, ecx
0073f 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00746 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0074a d1 f9 sar ecx, 1
0074c 03 c1 add eax, ecx
0074e 25 ff 00 00 00 and eax, 255 ; 000000ffH
00753 48 63 8d 24 01
00 00 movsxd rcx, DWORD PTR k$[rbp]
0075a 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00761 88 04 0a mov BYTE PTR [rdx+rcx], al
00764 eb 98 jmp SHORT $LN25@stbi__crea
$LN26@stbi__crea:
$LN5@stbi__crea:
; 5384 : break;
; 5385 : }
; 5386 :
; 5387 : raw += nk;
00766 48 63 85 24 02
00 00 movsxd rax, DWORD PTR nk$4[rbp]
0076d 48 8b 8d e8 04
00 00 mov rcx, QWORD PTR raw$[rbp]
00774 48 03 c8 add rcx, rax
00777 48 8b c1 mov rax, rcx
0077a 48 89 85 e8 04
00 00 mov QWORD PTR raw$[rbp], rax
; 5388 :
; 5389 : // expand decoded bits in cur to dest, also adding an extra alpha channel if desired
; 5390 : if (depth < 8) {
00781 83 bd 10 05 00
00 08 cmp DWORD PTR depth$[rbp], 8
00788 0f 8d 82 02 00
00 jge $LN60@stbi__crea
; 5391 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] :
0078e 83 bd 18 05 00
00 00 cmp DWORD PTR color$[rbp], 0
00795 75 1a jne SHORT $LN84@stbi__crea
00797 48 63 85 10 05
00 00 movsxd rax, DWORD PTR depth$[rbp]
0079e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__depth_scale_table
007a5 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
007a9 89 85 b4 04 00
00 mov DWORD PTR tv340[rbp], eax
007af eb 0a jmp SHORT $LN85@stbi__crea
$LN84@stbi__crea:
007b1 c7 85 b4 04 00
00 01 00 00 00 mov DWORD PTR tv340[rbp], 1
$LN85@stbi__crea:
007bb 0f b6 85 b4 04
00 00 movzx eax, BYTE PTR tv340[rbp]
007c2 88 85 64 02 00
00 mov BYTE PTR scale$6[rbp], al
; 5392 : 1; // scale grayscale values to 0..255 range
; 5393 : stbi_uc *in = cur;
007c8 48 8b 85 c8 01
00 00 mov rax, QWORD PTR cur$1[rbp]
007cf 48 89 85 88 02
00 00 mov QWORD PTR in$7[rbp], rax
; 5394 : stbi_uc *out = dest;
007d6 48 8b 85 08 02
00 00 mov rax, QWORD PTR dest$3[rbp]
007dd 48 89 85 a8 02
00 00 mov QWORD PTR out$8[rbp], rax
; 5395 : stbi_uc inb = 0;
007e4 c6 85 c4 02 00
00 00 mov BYTE PTR inb$9[rbp], 0
; 5396 : stbi__uint32 nsmp = x * img_n;
007eb 8b 85 00 05 00
00 mov eax, DWORD PTR x$[rbp]
007f1 0f af 85 44 01
00 00 imul eax, DWORD PTR img_n$[rbp]
007f8 89 85 e4 02 00
00 mov DWORD PTR nsmp$10[rbp], eax
; 5397 :
; 5398 : // expand bits to bytes first
; 5399 : if (depth == 4) {
007fe 83 bd 10 05 00
00 04 cmp DWORD PTR depth$[rbp], 4
00805 0f 85 8c 00 00
00 jne $LN62@stbi__crea
; 5400 : for (i = 0; i < nsmp; ++i) {
0080b c7 45 44 00 00
00 00 mov DWORD PTR i$[rbp], 0
00812 eb 08 jmp SHORT $LN30@stbi__crea
$LN28@stbi__crea:
00814 8b 45 44 mov eax, DWORD PTR i$[rbp]
00817 ff c0 inc eax
00819 89 45 44 mov DWORD PTR i$[rbp], eax
$LN30@stbi__crea:
0081c 8b 85 e4 02 00
00 mov eax, DWORD PTR nsmp$10[rbp]
00822 39 45 44 cmp DWORD PTR i$[rbp], eax
00825 73 6b jae SHORT $LN29@stbi__crea
; 5401 : if ((i & 1) == 0)
00827 8b 45 44 mov eax, DWORD PTR i$[rbp]
0082a 83 e0 01 and eax, 1
0082d 85 c0 test eax, eax
0082f 75 21 jne SHORT $LN64@stbi__crea
; 5402 : inb = *in++;
00831 48 8b 85 88 02
00 00 mov rax, QWORD PTR in$7[rbp]
00838 0f b6 00 movzx eax, BYTE PTR [rax]
0083b 88 85 c4 02 00
00 mov BYTE PTR inb$9[rbp], al
00841 48 8b 85 88 02
00 00 mov rax, QWORD PTR in$7[rbp]
00848 48 ff c0 inc rax
0084b 48 89 85 88 02
00 00 mov QWORD PTR in$7[rbp], rax
$LN64@stbi__crea:
; 5403 : *out++ = scale * (inb >> 4);
00852 0f b6 85 64 02
00 00 movzx eax, BYTE PTR scale$6[rbp]
00859 0f b6 8d c4 02
00 00 movzx ecx, BYTE PTR inb$9[rbp]
00860 c1 f9 04 sar ecx, 4
00863 0f af c1 imul eax, ecx
00866 48 8b 8d a8 02
00 00 mov rcx, QWORD PTR out$8[rbp]
0086d 88 01 mov BYTE PTR [rcx], al
0086f 48 8b 85 a8 02
00 00 mov rax, QWORD PTR out$8[rbp]
00876 48 ff c0 inc rax
00879 48 89 85 a8 02
00 00 mov QWORD PTR out$8[rbp], rax
; 5404 : inb <<= 4;
00880 0f b6 85 c4 02
00 00 movzx eax, BYTE PTR inb$9[rbp]
00887 c0 e0 04 shl al, 4
0088a 88 85 c4 02 00
00 mov BYTE PTR inb$9[rbp], al
; 5405 : }
00890 eb 82 jmp SHORT $LN28@stbi__crea
$LN29@stbi__crea:
; 5406 : } else if (depth == 2) {
00892 e9 44 01 00 00 jmp $LN63@stbi__crea
$LN62@stbi__crea:
00897 83 bd 10 05 00
00 02 cmp DWORD PTR depth$[rbp], 2
0089e 0f 85 8c 00 00
00 jne $LN65@stbi__crea
; 5407 : for (i = 0; i < nsmp; ++i) {
008a4 c7 45 44 00 00
00 00 mov DWORD PTR i$[rbp], 0
008ab eb 08 jmp SHORT $LN33@stbi__crea
$LN31@stbi__crea:
008ad 8b 45 44 mov eax, DWORD PTR i$[rbp]
008b0 ff c0 inc eax
008b2 89 45 44 mov DWORD PTR i$[rbp], eax
$LN33@stbi__crea:
008b5 8b 85 e4 02 00
00 mov eax, DWORD PTR nsmp$10[rbp]
008bb 39 45 44 cmp DWORD PTR i$[rbp], eax
008be 73 6b jae SHORT $LN32@stbi__crea
; 5408 : if ((i & 3) == 0)
008c0 8b 45 44 mov eax, DWORD PTR i$[rbp]
008c3 83 e0 03 and eax, 3
008c6 85 c0 test eax, eax
008c8 75 21 jne SHORT $LN67@stbi__crea
; 5409 : inb = *in++;
008ca 48 8b 85 88 02
00 00 mov rax, QWORD PTR in$7[rbp]
008d1 0f b6 00 movzx eax, BYTE PTR [rax]
008d4 88 85 c4 02 00
00 mov BYTE PTR inb$9[rbp], al
008da 48 8b 85 88 02
00 00 mov rax, QWORD PTR in$7[rbp]
008e1 48 ff c0 inc rax
008e4 48 89 85 88 02
00 00 mov QWORD PTR in$7[rbp], rax
$LN67@stbi__crea:
; 5410 : *out++ = scale * (inb >> 6);
008eb 0f b6 85 64 02
00 00 movzx eax, BYTE PTR scale$6[rbp]
008f2 0f b6 8d c4 02
00 00 movzx ecx, BYTE PTR inb$9[rbp]
008f9 c1 f9 06 sar ecx, 6
008fc 0f af c1 imul eax, ecx
008ff 48 8b 8d a8 02
00 00 mov rcx, QWORD PTR out$8[rbp]
00906 88 01 mov BYTE PTR [rcx], al
00908 48 8b 85 a8 02
00 00 mov rax, QWORD PTR out$8[rbp]
0090f 48 ff c0 inc rax
00912 48 89 85 a8 02
00 00 mov QWORD PTR out$8[rbp], rax
; 5411 : inb <<= 2;
00919 0f b6 85 c4 02
00 00 movzx eax, BYTE PTR inb$9[rbp]
00920 c0 e0 02 shl al, 2
00923 88 85 c4 02 00
00 mov BYTE PTR inb$9[rbp], al
; 5412 : }
00929 eb 82 jmp SHORT $LN31@stbi__crea
$LN32@stbi__crea:
; 5413 : } else {
0092b e9 ab 00 00 00 jmp $LN66@stbi__crea
$LN65@stbi__crea:
; 5414 : STBI_ASSERT(depth == 1);
00930 83 bd 10 05 00
00 01 cmp DWORD PTR depth$[rbp], 1
00937 74 1c je SHORT $LN86@stbi__crea
00939 41 b8 26 15 00
00 mov r8d, 5414 ; 00001526H
0093f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00946 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@
0094d ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00953 33 c0 xor eax, eax
$LN86@stbi__crea:
; 5415 : for (i = 0; i < nsmp; ++i) {
00955 c7 45 44 00 00
00 00 mov DWORD PTR i$[rbp], 0
0095c eb 08 jmp SHORT $LN36@stbi__crea
$LN34@stbi__crea:
0095e 8b 45 44 mov eax, DWORD PTR i$[rbp]
00961 ff c0 inc eax
00963 89 45 44 mov DWORD PTR i$[rbp], eax
$LN36@stbi__crea:
00966 8b 85 e4 02 00
00 mov eax, DWORD PTR nsmp$10[rbp]
0096c 39 45 44 cmp DWORD PTR i$[rbp], eax
0096f 73 6a jae SHORT $LN35@stbi__crea
; 5416 : if ((i & 7) == 0)
00971 8b 45 44 mov eax, DWORD PTR i$[rbp]
00974 83 e0 07 and eax, 7
00977 85 c0 test eax, eax
00979 75 21 jne SHORT $LN68@stbi__crea
; 5417 : inb = *in++;
0097b 48 8b 85 88 02
00 00 mov rax, QWORD PTR in$7[rbp]
00982 0f b6 00 movzx eax, BYTE PTR [rax]
00985 88 85 c4 02 00
00 mov BYTE PTR inb$9[rbp], al
0098b 48 8b 85 88 02
00 00 mov rax, QWORD PTR in$7[rbp]
00992 48 ff c0 inc rax
00995 48 89 85 88 02
00 00 mov QWORD PTR in$7[rbp], rax
$LN68@stbi__crea:
; 5418 : *out++ = scale * (inb >> 7);
0099c 0f b6 85 64 02
00 00 movzx eax, BYTE PTR scale$6[rbp]
009a3 0f b6 8d c4 02
00 00 movzx ecx, BYTE PTR inb$9[rbp]
009aa c1 f9 07 sar ecx, 7
009ad 0f af c1 imul eax, ecx
009b0 48 8b 8d a8 02
00 00 mov rcx, QWORD PTR out$8[rbp]
009b7 88 01 mov BYTE PTR [rcx], al
009b9 48 8b 85 a8 02
00 00 mov rax, QWORD PTR out$8[rbp]
009c0 48 ff c0 inc rax
009c3 48 89 85 a8 02
00 00 mov QWORD PTR out$8[rbp], rax
; 5419 : inb <<= 1;
009ca 0f b6 85 c4 02
00 00 movzx eax, BYTE PTR inb$9[rbp]
009d1 d0 e0 shl al, 1
009d3 88 85 c4 02 00
00 mov BYTE PTR inb$9[rbp], al
; 5420 : }
009d9 eb 83 jmp SHORT $LN34@stbi__crea
$LN35@stbi__crea:
$LN66@stbi__crea:
$LN63@stbi__crea:
; 5421 : }
; 5422 :
; 5423 : // insert alpha=255 values if desired
; 5424 : if (img_n != out_n)
009db 8b 85 f8 04 00
00 mov eax, DWORD PTR out_n$[rbp]
009e1 39 85 44 01 00
00 cmp DWORD PTR img_n$[rbp], eax
009e7 74 22 je SHORT $LN69@stbi__crea
; 5425 : stbi__create_png_alpha_expand8(dest, dest, x, img_n);
009e9 44 8b 8d 44 01
00 00 mov r9d, DWORD PTR img_n$[rbp]
009f0 44 8b 85 00 05
00 00 mov r8d, DWORD PTR x$[rbp]
009f7 48 8b 95 08 02
00 00 mov rdx, QWORD PTR dest$3[rbp]
009fe 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR dest$3[rbp]
00a05 e8 00 00 00 00 call stbi__create_png_alpha_expand8
00a0a 90 npad 1
$LN69@stbi__crea:
; 5426 : } else if (depth == 8) {
00a0b e9 47 03 00 00 jmp $LN61@stbi__crea
$LN60@stbi__crea:
00a10 83 bd 10 05 00
00 08 cmp DWORD PTR depth$[rbp], 8
00a17 75 5d jne SHORT $LN70@stbi__crea
; 5427 : if (img_n == out_n)
00a19 8b 85 f8 04 00
00 mov eax, DWORD PTR out_n$[rbp]
00a1f 39 85 44 01 00
00 cmp DWORD PTR img_n$[rbp], eax
00a25 75 28 jne SHORT $LN72@stbi__crea
; 5428 : memcpy(dest, cur, x * img_n);
00a27 8b 85 00 05 00
00 mov eax, DWORD PTR x$[rbp]
00a2d 0f af 85 44 01
00 00 imul eax, DWORD PTR img_n$[rbp]
00a34 8b c0 mov eax, eax
00a36 44 8b c0 mov r8d, eax
00a39 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00a40 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR dest$3[rbp]
00a47 e8 00 00 00 00 call memcpy
00a4c 90 npad 1
00a4d eb 22 jmp SHORT $LN73@stbi__crea
$LN72@stbi__crea:
; 5429 : else
; 5430 : stbi__create_png_alpha_expand8(dest, cur, x, img_n);
00a4f 44 8b 8d 44 01
00 00 mov r9d, DWORD PTR img_n$[rbp]
00a56 44 8b 85 00 05
00 00 mov r8d, DWORD PTR x$[rbp]
00a5d 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00a64 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR dest$3[rbp]
00a6b e8 00 00 00 00 call stbi__create_png_alpha_expand8
00a70 90 npad 1
$LN73@stbi__crea:
; 5431 : } else if (depth == 16) {
00a71 e9 e1 02 00 00 jmp $LN71@stbi__crea
$LN70@stbi__crea:
00a76 83 bd 10 05 00
00 10 cmp DWORD PTR depth$[rbp], 16
00a7d 0f 85 d4 02 00
00 jne $LN74@stbi__crea
; 5432 : // convert the image data from big-endian to platform-native
; 5433 : stbi__uint16 *dest16 = (stbi__uint16 *)dest;
00a83 48 8b 85 08 02
00 00 mov rax, QWORD PTR dest$3[rbp]
00a8a 48 89 85 08 03
00 00 mov QWORD PTR dest16$11[rbp], rax
; 5434 : stbi__uint32 nsmp = x * img_n;
00a91 8b 85 00 05 00
00 mov eax, DWORD PTR x$[rbp]
00a97 0f af 85 44 01
00 00 imul eax, DWORD PTR img_n$[rbp]
00a9e 89 85 24 03 00
00 mov DWORD PTR nsmp$12[rbp], eax
; 5435 :
; 5436 : if (img_n == out_n) {
00aa4 8b 85 f8 04 00
00 mov eax, DWORD PTR out_n$[rbp]
00aaa 39 85 44 01 00
00 cmp DWORD PTR img_n$[rbp], eax
00ab0 75 7e jne SHORT $LN75@stbi__crea
; 5437 : for (i = 0; i < nsmp; ++i, ++dest16, cur += 2)
00ab2 c7 45 44 00 00
00 00 mov DWORD PTR i$[rbp], 0
00ab9 eb 2c jmp SHORT $LN39@stbi__crea
$LN37@stbi__crea:
00abb 8b 45 44 mov eax, DWORD PTR i$[rbp]
00abe ff c0 inc eax
00ac0 89 45 44 mov DWORD PTR i$[rbp], eax
00ac3 48 8b 85 08 03
00 00 mov rax, QWORD PTR dest16$11[rbp]
00aca 48 83 c0 02 add rax, 2
00ace 48 89 85 08 03
00 00 mov QWORD PTR dest16$11[rbp], rax
00ad5 48 8b 85 c8 01
00 00 mov rax, QWORD PTR cur$1[rbp]
00adc 48 83 c0 02 add rax, 2
00ae0 48 89 85 c8 01
00 00 mov QWORD PTR cur$1[rbp], rax
$LN39@stbi__crea:
00ae7 8b 85 24 03 00
00 mov eax, DWORD PTR nsmp$12[rbp]
00aed 39 45 44 cmp DWORD PTR i$[rbp], eax
00af0 73 39 jae SHORT $LN38@stbi__crea
; 5438 : *dest16 = (cur[0] << 8) | cur[1];
00af2 b8 01 00 00 00 mov eax, 1
00af7 48 6b c0 00 imul rax, rax, 0
00afb 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
00b02 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00b06 c1 e0 08 shl eax, 8
00b09 b9 01 00 00 00 mov ecx, 1
00b0e 48 6b c9 01 imul rcx, rcx, 1
00b12 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00b19 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00b1d 0b c1 or eax, ecx
00b1f 48 8b 8d 08 03
00 00 mov rcx, QWORD PTR dest16$11[rbp]
00b26 66 89 01 mov WORD PTR [rcx], ax
00b29 eb 90 jmp SHORT $LN37@stbi__crea
$LN38@stbi__crea:
; 5439 : } else {
00b2b e9 27 02 00 00 jmp $LN76@stbi__crea
$LN75@stbi__crea:
; 5440 : STBI_ASSERT(img_n + 1 == out_n);
00b30 8b 85 44 01 00
00 mov eax, DWORD PTR img_n$[rbp]
00b36 ff c0 inc eax
00b38 3b 85 f8 04 00
00 cmp eax, DWORD PTR out_n$[rbp]
00b3e 74 1c je SHORT $LN87@stbi__crea
00b40 41 b8 40 15 00
00 mov r8d, 5440 ; 00001540H
00b46 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00b4d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@
00b54 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00b5a 33 c0 xor eax, eax
$LN87@stbi__crea:
; 5441 : if (img_n == 1) {
00b5c 83 bd 44 01 00
00 01 cmp DWORD PTR img_n$[rbp], 1
00b63 0f 85 a4 00 00
00 jne $LN77@stbi__crea
; 5442 : for (i = 0; i < x; ++i, dest16 += 2, cur += 2) {
00b69 c7 45 44 00 00
00 00 mov DWORD PTR i$[rbp], 0
00b70 eb 2c jmp SHORT $LN42@stbi__crea
$LN40@stbi__crea:
00b72 8b 45 44 mov eax, DWORD PTR i$[rbp]
00b75 ff c0 inc eax
00b77 89 45 44 mov DWORD PTR i$[rbp], eax
00b7a 48 8b 85 08 03
00 00 mov rax, QWORD PTR dest16$11[rbp]
00b81 48 83 c0 04 add rax, 4
00b85 48 89 85 08 03
00 00 mov QWORD PTR dest16$11[rbp], rax
00b8c 48 8b 85 c8 01
00 00 mov rax, QWORD PTR cur$1[rbp]
00b93 48 83 c0 02 add rax, 2
00b97 48 89 85 c8 01
00 00 mov QWORD PTR cur$1[rbp], rax
$LN42@stbi__crea:
00b9e 8b 85 00 05 00
00 mov eax, DWORD PTR x$[rbp]
00ba4 39 45 44 cmp DWORD PTR i$[rbp], eax
00ba7 73 5f jae SHORT $LN41@stbi__crea
; 5443 : dest16[0] = (cur[0] << 8) | cur[1];
00ba9 b8 01 00 00 00 mov eax, 1
00bae 48 6b c0 00 imul rax, rax, 0
00bb2 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
00bb9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00bbd c1 e0 08 shl eax, 8
00bc0 b9 01 00 00 00 mov ecx, 1
00bc5 48 6b c9 01 imul rcx, rcx, 1
00bc9 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00bd0 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00bd4 0b c1 or eax, ecx
00bd6 b9 02 00 00 00 mov ecx, 2
00bdb 48 6b c9 00 imul rcx, rcx, 0
00bdf 48 8b 95 08 03
00 00 mov rdx, QWORD PTR dest16$11[rbp]
00be6 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 5444 : dest16[1] = 0xffff;
00bea b8 02 00 00 00 mov eax, 2
00bef 48 6b c0 01 imul rax, rax, 1
00bf3 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
00bf8 48 8b 95 08 03
00 00 mov rdx, QWORD PTR dest16$11[rbp]
00bff 66 89 0c 02 mov WORD PTR [rdx+rax], cx
; 5445 : }
00c03 e9 6a ff ff ff jmp $LN40@stbi__crea
$LN41@stbi__crea:
; 5446 : } else {
00c08 e9 4a 01 00 00 jmp $LN78@stbi__crea
$LN77@stbi__crea:
; 5447 : STBI_ASSERT(img_n == 3);
00c0d 83 bd 44 01 00
00 03 cmp DWORD PTR img_n$[rbp], 3
00c14 74 1c je SHORT $LN88@stbi__crea
00c16 41 b8 47 15 00
00 mov r8d, 5447 ; 00001547H
00c1c 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00c23 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@
00c2a ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00c30 33 c0 xor eax, eax
$LN88@stbi__crea:
; 5448 : for (i = 0; i < x; ++i, dest16 += 4, cur += 6) {
00c32 c7 45 44 00 00
00 00 mov DWORD PTR i$[rbp], 0
00c39 eb 2c jmp SHORT $LN45@stbi__crea
$LN43@stbi__crea:
00c3b 8b 45 44 mov eax, DWORD PTR i$[rbp]
00c3e ff c0 inc eax
00c40 89 45 44 mov DWORD PTR i$[rbp], eax
00c43 48 8b 85 08 03
00 00 mov rax, QWORD PTR dest16$11[rbp]
00c4a 48 83 c0 08 add rax, 8
00c4e 48 89 85 08 03
00 00 mov QWORD PTR dest16$11[rbp], rax
00c55 48 8b 85 c8 01
00 00 mov rax, QWORD PTR cur$1[rbp]
00c5c 48 83 c0 06 add rax, 6
00c60 48 89 85 c8 01
00 00 mov QWORD PTR cur$1[rbp], rax
$LN45@stbi__crea:
00c67 8b 85 00 05 00
00 mov eax, DWORD PTR x$[rbp]
00c6d 39 45 44 cmp DWORD PTR i$[rbp], eax
00c70 0f 83 e1 00 00
00 jae $LN44@stbi__crea
; 5449 : dest16[0] = (cur[0] << 8) | cur[1];
00c76 b8 01 00 00 00 mov eax, 1
00c7b 48 6b c0 00 imul rax, rax, 0
00c7f 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
00c86 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00c8a c1 e0 08 shl eax, 8
00c8d b9 01 00 00 00 mov ecx, 1
00c92 48 6b c9 01 imul rcx, rcx, 1
00c96 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00c9d 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00ca1 0b c1 or eax, ecx
00ca3 b9 02 00 00 00 mov ecx, 2
00ca8 48 6b c9 00 imul rcx, rcx, 0
00cac 48 8b 95 08 03
00 00 mov rdx, QWORD PTR dest16$11[rbp]
00cb3 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 5450 : dest16[1] = (cur[2] << 8) | cur[3];
00cb7 b8 01 00 00 00 mov eax, 1
00cbc 48 6b c0 02 imul rax, rax, 2
00cc0 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
00cc7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00ccb c1 e0 08 shl eax, 8
00cce b9 01 00 00 00 mov ecx, 1
00cd3 48 6b c9 03 imul rcx, rcx, 3
00cd7 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00cde 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00ce2 0b c1 or eax, ecx
00ce4 b9 02 00 00 00 mov ecx, 2
00ce9 48 6b c9 01 imul rcx, rcx, 1
00ced 48 8b 95 08 03
00 00 mov rdx, QWORD PTR dest16$11[rbp]
00cf4 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 5451 : dest16[2] = (cur[4] << 8) | cur[5];
00cf8 b8 01 00 00 00 mov eax, 1
00cfd 48 6b c0 04 imul rax, rax, 4
00d01 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR cur$1[rbp]
00d08 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00d0c c1 e0 08 shl eax, 8
00d0f b9 01 00 00 00 mov ecx, 1
00d14 48 6b c9 05 imul rcx, rcx, 5
00d18 48 8b 95 c8 01
00 00 mov rdx, QWORD PTR cur$1[rbp]
00d1f 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00d23 0b c1 or eax, ecx
00d25 b9 02 00 00 00 mov ecx, 2
00d2a 48 6b c9 02 imul rcx, rcx, 2
00d2e 48 8b 95 08 03
00 00 mov rdx, QWORD PTR dest16$11[rbp]
00d35 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 5452 : dest16[3] = 0xffff;
00d39 b8 02 00 00 00 mov eax, 2
00d3e 48 6b c0 03 imul rax, rax, 3
00d42 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
00d47 48 8b 95 08 03
00 00 mov rdx, QWORD PTR dest16$11[rbp]
00d4e 66 89 0c 02 mov WORD PTR [rdx+rax], cx
; 5453 : }
00d52 e9 e4 fe ff ff jmp $LN43@stbi__crea
$LN44@stbi__crea:
$LN78@stbi__crea:
$LN76@stbi__crea:
$LN74@stbi__crea:
$LN71@stbi__crea:
$LN61@stbi__crea:
; 5454 : }
; 5455 : }
; 5456 : }
; 5457 : }
00d57 e9 f5 f4 ff ff jmp $LN2@stbi__crea
$LN3@stbi__crea:
; 5458 :
; 5459 : STBI_FREE(filter_buf);
00d5c 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR filter_buf$[rbp]
00d63 ff 15 00 00 00
00 call QWORD PTR __imp_free
00d69 90 npad 1
; 5460 : if (!all_ok)
00d6a 83 bd 04 01 00
00 00 cmp DWORD PTR all_ok$[rbp], 0
00d71 75 04 jne SHORT $LN79@stbi__crea
; 5461 : return 0;
00d73 33 c0 xor eax, eax
00d75 eb 05 jmp SHORT $LN1@stbi__crea
$LN79@stbi__crea:
; 5462 :
; 5463 : return 1;
00d77 b8 01 00 00 00 mov eax, 1
$LN1@stbi__crea:
; 5464 : }
00d7c 48 8d a5 c8 04
00 00 lea rsp, QWORD PTR [rbp+1224]
00d83 5f pop rdi
00d84 5d pop rbp
00d85 c3 ret 0
00d86 66 90 npad 2
$LN89@stbi__crea:
00d88 00 00 00 00 DD $LN54@stbi__crea
00d8c 00 00 00 00 DD $LN55@stbi__crea
00d90 00 00 00 00 DD $LN56@stbi__crea
00d94 00 00 00 00 DD $LN57@stbi__crea
00d98 00 00 00 00 DD $LN58@stbi__crea
00d9c 00 00 00 00 DD $LN59@stbi__crea
stbi__create_png_image_raw ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__create_png_alpha_expand8
_TEXT SEGMENT
i$ = 4
dest$ = 256
src$ = 264
x$ = 272
img_n$ = 280
stbi__create_png_alpha_expand8 PROC ; COMDAT
; 5264 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 5265 : int i;
; 5266 : // must process data backwards since we allow dest==src
; 5267 : if (img_n == 1) {
0002f 83 bd 18 01 00
00 01 cmp DWORD PTR img_n$[rbp], 1
00036 75 58 jne SHORT $LN8@stbi__crea
; 5268 : for (i = x - 1; i >= 0; --i) {
00038 8b 85 10 01 00
00 mov eax, DWORD PTR x$[rbp]
0003e ff c8 dec eax
00040 89 45 04 mov DWORD PTR i$[rbp], eax
00043 eb 08 jmp SHORT $LN4@stbi__crea
$LN2@stbi__crea:
00045 8b 45 04 mov eax, DWORD PTR i$[rbp]
00048 ff c8 dec eax
0004a 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__crea:
0004d 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00051 7c 38 jl SHORT $LN3@stbi__crea
; 5269 : dest[i * 2 + 1] = 255;
00053 8b 45 04 mov eax, DWORD PTR i$[rbp]
00056 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
0005a 48 98 cdqe
0005c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR dest$[rbp]
00063 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 5270 : dest[i * 2 + 0] = src[i];
00067 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0006b 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
0006e 03 c9 add ecx, ecx
00070 48 63 c9 movsxd rcx, ecx
00073 48 8b 95 00 01
00 00 mov rdx, QWORD PTR dest$[rbp]
0007a 4c 8b 85 08 01
00 00 mov r8, QWORD PTR src$[rbp]
00081 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00086 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5271 : }
00089 eb ba jmp SHORT $LN2@stbi__crea
$LN3@stbi__crea:
; 5272 : } else {
0008b e9 dc 00 00 00 jmp $LN9@stbi__crea
$LN8@stbi__crea:
; 5273 : STBI_ASSERT(img_n == 3);
00090 83 bd 18 01 00
00 03 cmp DWORD PTR img_n$[rbp], 3
00097 74 1c je SHORT $LN11@stbi__crea
00099 41 b8 99 14 00
00 mov r8d, 5273 ; 00001499H
0009f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
000a6 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@
000ad ff 15 00 00 00
00 call QWORD PTR __imp__wassert
000b3 33 c0 xor eax, eax
$LN11@stbi__crea:
; 5274 : for (i = x - 1; i >= 0; --i) {
000b5 8b 85 10 01 00
00 mov eax, DWORD PTR x$[rbp]
000bb ff c8 dec eax
000bd 89 45 04 mov DWORD PTR i$[rbp], eax
000c0 eb 08 jmp SHORT $LN7@stbi__crea
$LN5@stbi__crea:
000c2 8b 45 04 mov eax, DWORD PTR i$[rbp]
000c5 ff c8 dec eax
000c7 89 45 04 mov DWORD PTR i$[rbp], eax
$LN7@stbi__crea:
000ca 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
000ce 0f 8c 98 00 00
00 jl $LN6@stbi__crea
; 5275 : dest[i * 4 + 3] = 255;
000d4 8b 45 04 mov eax, DWORD PTR i$[rbp]
000d7 8d 04 85 03 00
00 00 lea eax, DWORD PTR [rax*4+3]
000de 48 98 cdqe
000e0 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR dest$[rbp]
000e7 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 5276 : dest[i * 4 + 2] = src[i * 3 + 2];
000eb 6b 45 04 03 imul eax, DWORD PTR i$[rbp], 3
000ef 83 c0 02 add eax, 2
000f2 48 98 cdqe
000f4 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
000f7 8d 0c 8d 02 00
00 00 lea ecx, DWORD PTR [rcx*4+2]
000fe 48 63 c9 movsxd rcx, ecx
00101 48 8b 95 00 01
00 00 mov rdx, QWORD PTR dest$[rbp]
00108 4c 8b 85 08 01
00 00 mov r8, QWORD PTR src$[rbp]
0010f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00114 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5277 : dest[i * 4 + 1] = src[i * 3 + 1];
00117 6b 45 04 03 imul eax, DWORD PTR i$[rbp], 3
0011b ff c0 inc eax
0011d 48 98 cdqe
0011f 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00122 8d 0c 8d 01 00
00 00 lea ecx, DWORD PTR [rcx*4+1]
00129 48 63 c9 movsxd rcx, ecx
0012c 48 8b 95 00 01
00 00 mov rdx, QWORD PTR dest$[rbp]
00133 4c 8b 85 08 01
00 00 mov r8, QWORD PTR src$[rbp]
0013a 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0013f 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5278 : dest[i * 4 + 0] = src[i * 3 + 0];
00142 6b 45 04 03 imul eax, DWORD PTR i$[rbp], 3
00146 48 98 cdqe
00148 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
0014b c1 e1 02 shl ecx, 2
0014e 48 63 c9 movsxd rcx, ecx
00151 48 8b 95 00 01
00 00 mov rdx, QWORD PTR dest$[rbp]
00158 4c 8b 85 08 01
00 00 mov r8, QWORD PTR src$[rbp]
0015f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00164 88 04 0a mov BYTE PTR [rdx+rcx], al
; 5279 : }
00167 e9 56 ff ff ff jmp $LN5@stbi__crea
$LN6@stbi__crea:
$LN9@stbi__crea:
; 5280 : }
; 5281 : }
0016c 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00173 5f pop rdi
00174 5d pop rbp
00175 c3 ret 0
stbi__create_png_alpha_expand8 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__paeth
_TEXT SEGMENT
thresh$ = 4
lo$ = 36
hi$ = 68
t0$ = 100
t1$ = 132
tv68 = 340
tv70 = 340
tv72 = 340
tv74 = 340
a$ = 384
b$ = 392
c$ = 400
stbi__paeth PROC ; COMDAT
; 5246 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000d 55 push rbp
0000e 57 push rdi
0000f 48 81 ec 88 01
00 00 sub rsp, 392 ; 00000188H
00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00027 90 npad 1
; 5247 : // This formulation looks very different from the reference in the PNG spec, but is
; 5248 : // actually equivalent and has favorable data dependencies and admits straightforward
; 5249 : // generation of branch-free code, which helps performance significantly.
; 5250 : int thresh = c * 3 - (a + b);
00028 6b 85 90 01 00
00 03 imul eax, DWORD PTR c$[rbp], 3
0002f 8b 8d 88 01 00
00 mov ecx, DWORD PTR b$[rbp]
00035 8b 95 80 01 00
00 mov edx, DWORD PTR a$[rbp]
0003b 03 d1 add edx, ecx
0003d 8b ca mov ecx, edx
0003f 2b c1 sub eax, ecx
00041 89 45 04 mov DWORD PTR thresh$[rbp], eax
; 5251 : int lo = a < b ? a : b;
00044 8b 85 88 01 00
00 mov eax, DWORD PTR b$[rbp]
0004a 39 85 80 01 00
00 cmp DWORD PTR a$[rbp], eax
00050 7d 0e jge SHORT $LN3@stbi__paet
00052 8b 85 80 01 00
00 mov eax, DWORD PTR a$[rbp]
00058 89 85 54 01 00
00 mov DWORD PTR tv68[rbp], eax
0005e eb 0c jmp SHORT $LN4@stbi__paet
$LN3@stbi__paet:
00060 8b 85 88 01 00
00 mov eax, DWORD PTR b$[rbp]
00066 89 85 54 01 00
00 mov DWORD PTR tv68[rbp], eax
$LN4@stbi__paet:
0006c 8b 85 54 01 00
00 mov eax, DWORD PTR tv68[rbp]
00072 89 45 24 mov DWORD PTR lo$[rbp], eax
; 5252 : int hi = a < b ? b : a;
00075 8b 85 88 01 00
00 mov eax, DWORD PTR b$[rbp]
0007b 39 85 80 01 00
00 cmp DWORD PTR a$[rbp], eax
00081 7d 0e jge SHORT $LN5@stbi__paet
00083 8b 85 88 01 00
00 mov eax, DWORD PTR b$[rbp]
00089 89 85 54 01 00
00 mov DWORD PTR tv70[rbp], eax
0008f eb 0c jmp SHORT $LN6@stbi__paet
$LN5@stbi__paet:
00091 8b 85 80 01 00
00 mov eax, DWORD PTR a$[rbp]
00097 89 85 54 01 00
00 mov DWORD PTR tv70[rbp], eax
$LN6@stbi__paet:
0009d 8b 85 54 01 00
00 mov eax, DWORD PTR tv70[rbp]
000a3 89 45 44 mov DWORD PTR hi$[rbp], eax
; 5253 : int t0 = (hi <= thresh) ? lo : c;
000a6 8b 45 04 mov eax, DWORD PTR thresh$[rbp]
000a9 39 45 44 cmp DWORD PTR hi$[rbp], eax
000ac 7f 0b jg SHORT $LN7@stbi__paet
000ae 8b 45 24 mov eax, DWORD PTR lo$[rbp]
000b1 89 85 54 01 00
00 mov DWORD PTR tv72[rbp], eax
000b7 eb 0c jmp SHORT $LN8@stbi__paet
$LN7@stbi__paet:
000b9 8b 85 90 01 00
00 mov eax, DWORD PTR c$[rbp]
000bf 89 85 54 01 00
00 mov DWORD PTR tv72[rbp], eax
$LN8@stbi__paet:
000c5 8b 85 54 01 00
00 mov eax, DWORD PTR tv72[rbp]
000cb 89 45 64 mov DWORD PTR t0$[rbp], eax
; 5254 : int t1 = (thresh <= lo) ? hi : t0;
000ce 8b 45 24 mov eax, DWORD PTR lo$[rbp]
000d1 39 45 04 cmp DWORD PTR thresh$[rbp], eax
000d4 7f 0b jg SHORT $LN9@stbi__paet
000d6 8b 45 44 mov eax, DWORD PTR hi$[rbp]
000d9 89 85 54 01 00
00 mov DWORD PTR tv74[rbp], eax
000df eb 09 jmp SHORT $LN10@stbi__paet
$LN9@stbi__paet:
000e1 8b 45 64 mov eax, DWORD PTR t0$[rbp]
000e4 89 85 54 01 00
00 mov DWORD PTR tv74[rbp], eax
$LN10@stbi__paet:
000ea 8b 85 54 01 00
00 mov eax, DWORD PTR tv74[rbp]
000f0 89 85 84 00 00
00 mov DWORD PTR t1$[rbp], eax
; 5255 : return t1;
000f6 8b 85 84 00 00
00 mov eax, DWORD PTR t1$[rbp]
; 5256 : }
000fc 48 8d a5 68 01
00 00 lea rsp, QWORD PTR [rbp+360]
00103 5f pop rdi
00104 5d pop rbp
00105 c3 ret 0
stbi__paeth ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__check_png_header
_TEXT SEGMENT
i$ = 4
s$ = 256
stbi__check_png_header PROC ; COMDAT
; 5215 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 5216 : static const stbi_uc png_sig[8] = { 137, 80, 78, 71, 13, 10, 26, 10 };
; 5217 : int i;
; 5218 : for (i = 0; i < 8; ++i)
00020 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00027 eb 08 jmp SHORT $LN4@stbi__chec
$LN2@stbi__chec:
00029 8b 45 04 mov eax, DWORD PTR i$[rbp]
0002c ff c0 inc eax
0002e 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__chec:
00031 83 7d 04 08 cmp DWORD PTR i$[rbp], 8
00035 7d 32 jge SHORT $LN3@stbi__chec
; 5219 : if (stbi__get8(s) != png_sig[i])
00037 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0003e e8 00 00 00 00 call stbi__get8
00043 0f b6 c0 movzx eax, al
00046 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
0004a 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?png_sig@?1??stbi__check_png_header@@9@9
00051 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00055 3b c1 cmp eax, ecx
00057 74 0e je SHORT $LN5@stbi__chec
; 5220 : return stbi__err("bad png sig", "Not a PNG");
00059 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@DMDNBACF@bad?5png?5sig@
00060 e8 00 00 00 00 call stbi__err
00065 eb 07 jmp SHORT $LN1@stbi__chec
$LN5@stbi__chec:
00067 eb c0 jmp SHORT $LN2@stbi__chec
$LN3@stbi__chec:
; 5221 : return 1;
00069 b8 01 00 00 00 mov eax, 1
$LN1@stbi__chec:
; 5222 : }
0006e 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00075 5f pop rdi
00076 5d pop rbp
00077 c3 ret 0
stbi__check_png_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__get_chunk_header
_TEXT SEGMENT
c$ = 8
s$ = 256
stbi__get_chunk_header PROC ; COMDAT
; 5207 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00018 b9 0a 00 00 00 mov ecx, 10
0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00022 f3 ab rep stosd
00024 48 8b 8c 24 28
01 00 00 mov rcx, QWORD PTR [rsp+296]
0002c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00033 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00038 90 npad 1
; 5208 : stbi__pngchunk c;
; 5209 : c.length = stbi__get32be(s);
00039 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00040 e8 00 00 00 00 call stbi__get32be
00045 89 45 08 mov DWORD PTR c$[rbp], eax
; 5210 : c.type = stbi__get32be(s);
00048 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0004f e8 00 00 00 00 call stbi__get32be
00054 89 45 0c mov DWORD PTR c$[rbp+4], eax
; 5211 : return c;
00057 48 8b 45 08 mov rax, QWORD PTR c$[rbp]
; 5212 : }
0005b 48 8b f8 mov rdi, rax
0005e 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00062 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__get_chunk_header$rtcFrameData
00069 e8 00 00 00 00 call _RTC_CheckStackVars
0006e 48 8b c7 mov rax, rdi
00071 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00078 5f pop rdi
00079 5d pop rbp
0007a c3 ret 0
stbi__get_chunk_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__do_zlib
_TEXT SEGMENT
a$ = 224
obuf$ = 232
olen$ = 240
exp$ = 248
parse_header$ = 256
stbi__do_zlib PROC ; COMDAT
; 5096 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 5097 : a->zout_start = obuf;
0002f 48 8b 85 e0 00
00 00 mov rax, QWORD PTR a$[rbp]
00036 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR obuf$[rbp]
0003d 48 89 48 28 mov QWORD PTR [rax+40], rcx
; 5098 : a->zout = obuf;
00041 48 8b 85 e0 00
00 00 mov rax, QWORD PTR a$[rbp]
00048 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR obuf$[rbp]
0004f 48 89 48 20 mov QWORD PTR [rax+32], rcx
; 5099 : a->zout_end = obuf + olen;
00053 48 63 85 f0 00
00 00 movsxd rax, DWORD PTR olen$[rbp]
0005a 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR obuf$[rbp]
00061 48 03 c8 add rcx, rax
00064 48 8b c1 mov rax, rcx
00067 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR a$[rbp]
0006e 48 89 41 30 mov QWORD PTR [rcx+48], rax
; 5100 : a->z_expandable = exp;
00072 48 8b 85 e0 00
00 00 mov rax, QWORD PTR a$[rbp]
00079 8b 8d f8 00 00
00 mov ecx, DWORD PTR exp$[rbp]
0007f 89 48 38 mov DWORD PTR [rax+56], ecx
; 5101 :
; 5102 : return stbi__parse_zlib(a, parse_header);
00082 8b 95 00 01 00
00 mov edx, DWORD PTR parse_header$[rbp]
00088 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR a$[rbp]
0008f e8 00 00 00 00 call stbi__parse_zlib
; 5103 : }
00094 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0009b 5f pop rdi
0009c 5d pop rbp
0009d c3 ret 0
stbi__do_zlib ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__parse_zlib
_TEXT SEGMENT
final$ = 4
type$ = 36
a$ = 288
parse_header$ = 296
stbi__parse_zlib PROC ; COMDAT
; 5059 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 5060 : int final, type;
; 5061 : if (parse_header)
00024 83 bd 28 01 00
00 00 cmp DWORD PTR parse_header$[rbp], 0
0002b 74 17 je SHORT $LN5@stbi__pars
; 5062 : if (!stbi__parse_zlib_header(a))
0002d 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
00034 e8 00 00 00 00 call stbi__parse_zlib_header
00039 85 c0 test eax, eax
0003b 75 07 jne SHORT $LN6@stbi__pars
; 5063 : return 0;
0003d 33 c0 xor eax, eax
0003f e9 17 01 00 00 jmp $LN1@stbi__pars
$LN6@stbi__pars:
$LN5@stbi__pars:
; 5064 : a->num_bits = 0;
00044 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
0004b c7 40 10 00 00
00 00 mov DWORD PTR [rax+16], 0
; 5065 : a->code_buffer = 0;
00052 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
00059 c7 40 18 00 00
00 00 mov DWORD PTR [rax+24], 0
; 5066 : a->hit_zeof_once = 0;
00060 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
00067 c7 40 14 00 00
00 00 mov DWORD PTR [rax+20], 0
$LN4@stbi__pars:
; 5067 : do {
; 5068 : final = stbi__zreceive(a, 1);
0006e ba 01 00 00 00 mov edx, 1
00073 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
0007a e8 00 00 00 00 call stbi__zreceive
0007f 89 45 04 mov DWORD PTR final$[rbp], eax
; 5069 : type = stbi__zreceive(a, 2);
00082 ba 02 00 00 00 mov edx, 2
00087 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
0008e e8 00 00 00 00 call stbi__zreceive
00093 89 45 24 mov DWORD PTR type$[rbp], eax
; 5070 : if (type == 0) {
00096 83 7d 24 00 cmp DWORD PTR type$[rbp], 0
0009a 75 1c jne SHORT $LN7@stbi__pars
; 5071 : if (!stbi__parse_uncompressed_block(a))
0009c 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
000a3 e8 00 00 00 00 call stbi__parse_uncompressed_block
000a8 85 c0 test eax, eax
000aa 75 07 jne SHORT $LN9@stbi__pars
; 5072 : return 0;
000ac 33 c0 xor eax, eax
000ae e9 a8 00 00 00 jmp $LN1@stbi__pars
$LN9@stbi__pars:
; 5073 : } else if (type == 3) {
000b3 e9 94 00 00 00 jmp $LN8@stbi__pars
$LN7@stbi__pars:
000b8 83 7d 24 03 cmp DWORD PTR type$[rbp], 3
000bc 75 0c jne SHORT $LN10@stbi__pars
; 5074 : return 0;
000be 33 c0 xor eax, eax
000c0 e9 96 00 00 00 jmp $LN1@stbi__pars
; 5075 : } else {
000c5 e9 82 00 00 00 jmp $LN11@stbi__pars
$LN10@stbi__pars:
; 5076 : if (type == 1) {
000ca 83 7d 24 01 cmp DWORD PTR type$[rbp], 1
000ce 75 54 jne SHORT $LN12@stbi__pars
; 5077 : // use fixed code lengths
; 5078 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length,
000d0 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
000d7 48 83 c0 3c add rax, 60 ; 0000003cH
000db 41 b8 20 01 00
00 mov r8d, 288 ; 00000120H
000e1 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__zdefault_length
000e8 48 8b c8 mov rcx, rax
000eb e8 00 00 00 00 call stbi__zbuild_huffman
000f0 85 c0 test eax, eax
000f2 75 04 jne SHORT $LN14@stbi__pars
; 5079 : STBI__ZNSYMS))
; 5080 : return 0;
000f4 33 c0 xor eax, eax
000f6 eb 63 jmp SHORT $LN1@stbi__pars
$LN14@stbi__pars:
; 5081 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance,
000f8 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
000ff 48 05 20 08 00
00 add rax, 2080 ; 00000820H
00105 41 b8 20 00 00
00 mov r8d, 32 ; 00000020H
0010b 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__zdefault_distance
00112 48 8b c8 mov rcx, rax
00115 e8 00 00 00 00 call stbi__zbuild_huffman
0011a 85 c0 test eax, eax
0011c 75 04 jne SHORT $LN15@stbi__pars
; 5082 : 32))
; 5083 : return 0;
0011e 33 c0 xor eax, eax
00120 eb 39 jmp SHORT $LN1@stbi__pars
$LN15@stbi__pars:
; 5084 : } else {
00122 eb 14 jmp SHORT $LN13@stbi__pars
$LN12@stbi__pars:
; 5085 : if (!stbi__compute_huffman_codes(a))
00124 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
0012b e8 00 00 00 00 call stbi__compute_huffman_codes
00130 85 c0 test eax, eax
00132 75 04 jne SHORT $LN16@stbi__pars
; 5086 : return 0;
00134 33 c0 xor eax, eax
00136 eb 23 jmp SHORT $LN1@stbi__pars
$LN16@stbi__pars:
$LN13@stbi__pars:
; 5087 : }
; 5088 : if (!stbi__parse_huffman_block(a))
00138 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
0013f e8 00 00 00 00 call stbi__parse_huffman_block
00144 85 c0 test eax, eax
00146 75 04 jne SHORT $LN17@stbi__pars
; 5089 : return 0;
00148 33 c0 xor eax, eax
0014a eb 0f jmp SHORT $LN1@stbi__pars
$LN17@stbi__pars:
$LN11@stbi__pars:
$LN8@stbi__pars:
; 5090 : }
; 5091 : } while (!final);
0014c 83 7d 04 00 cmp DWORD PTR final$[rbp], 0
00150 0f 84 18 ff ff
ff je $LN4@stbi__pars
; 5092 : return 1;
00156 b8 01 00 00 00 mov eax, 1
$LN1@stbi__pars:
; 5093 : }
0015b 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00162 5f pop rdi
00163 5d pop rbp
00164 c3 ret 0
stbi__parse_zlib ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__parse_zlib_header
_TEXT SEGMENT
cmf$ = 4
cm$ = 36
flg$ = 68
a$ = 320
stbi__parse_zlib_header PROC ; COMDAT
; 5011 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 5012 : int cmf = stbi__zget8(a);
00020 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR a$[rbp]
00027 e8 00 00 00 00 call stbi__zget8
0002c 0f b6 c0 movzx eax, al
0002f 89 45 04 mov DWORD PTR cmf$[rbp], eax
; 5013 : int cm = cmf & 15;
00032 8b 45 04 mov eax, DWORD PTR cmf$[rbp]
00035 83 e0 0f and eax, 15
00038 89 45 24 mov DWORD PTR cm$[rbp], eax
; 5014 : /* int cinfo = cmf >> 4; */
; 5015 : int flg = stbi__zget8(a);
0003b 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR a$[rbp]
00042 e8 00 00 00 00 call stbi__zget8
00047 0f b6 c0 movzx eax, al
0004a 89 45 44 mov DWORD PTR flg$[rbp], eax
; 5016 : if (stbi__zeof(a))
0004d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR a$[rbp]
00054 e8 00 00 00 00 call stbi__zeof
00059 85 c0 test eax, eax
0005b 74 0e je SHORT $LN2@stbi__pars
; 5017 : return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec
0005d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@OBKOPAFL@bad?5zlib?5header@
00064 e8 00 00 00 00 call stbi__err
00069 eb 57 jmp SHORT $LN1@stbi__pars
$LN2@stbi__pars:
; 5018 : if ((cmf * 256 + flg) % 31 != 0)
0006b 69 45 04 00 01
00 00 imul eax, DWORD PTR cmf$[rbp], 256 ; 00000100H
00072 03 45 44 add eax, DWORD PTR flg$[rbp]
00075 99 cdq
00076 b9 1f 00 00 00 mov ecx, 31
0007b f7 f9 idiv ecx
0007d 8b c2 mov eax, edx
0007f 85 c0 test eax, eax
00081 74 0e je SHORT $LN3@stbi__pars
; 5019 : return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec
00083 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@OBKOPAFL@bad?5zlib?5header@
0008a e8 00 00 00 00 call stbi__err
0008f eb 31 jmp SHORT $LN1@stbi__pars
$LN3@stbi__pars:
; 5020 : if (flg & 32)
00091 8b 45 44 mov eax, DWORD PTR flg$[rbp]
00094 83 e0 20 and eax, 32 ; 00000020H
00097 85 c0 test eax, eax
00099 74 0e je SHORT $LN4@stbi__pars
; 5021 : return stbi__err("no preset dict",
0009b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@DOGMHEBI@no?5preset?5dict@
000a2 e8 00 00 00 00 call stbi__err
000a7 eb 19 jmp SHORT $LN1@stbi__pars
$LN4@stbi__pars:
; 5022 : "Corrupt PNG"); // preset dictionary not allowed in png
; 5023 : if (cm != 8)
000a9 83 7d 24 08 cmp DWORD PTR cm$[rbp], 8
000ad 74 0e je SHORT $LN5@stbi__pars
; 5024 : return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png
000af 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MCNBDLPD@bad?5compression@
000b6 e8 00 00 00 00 call stbi__err
000bb eb 05 jmp SHORT $LN1@stbi__pars
$LN5@stbi__pars:
; 5025 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output
; 5026 : return 1;
000bd b8 01 00 00 00 mov eax, 1
$LN1@stbi__pars:
; 5027 : }
000c2 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
000c9 5f pop rdi
000ca 5d pop rbp
000cb c3 ret 0
stbi__parse_zlib_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__parse_uncompressed_block
_TEXT SEGMENT
header$ = 4
len$ = 36
nlen$ = 68
k$ = 100
a$ = 352
stbi__parse_uncompressed_block PROC ; COMDAT
; 4978 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 68 01
00 00 sub rsp, 360 ; 00000168H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00018 b9 22 00 00 00 mov ecx, 34 ; 00000022H
0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00022 f3 ab rep stosd
00024 48 8b 8c 24 88
01 00 00 mov rcx, QWORD PTR [rsp+392]
0002c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00033 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00038 90 npad 1
; 4979 : stbi_uc header[4];
; 4980 : int len, nlen, k;
; 4981 : if (a->num_bits & 7)
00039 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
00040 8b 40 10 mov eax, DWORD PTR [rax+16]
00043 83 e0 07 and eax, 7
00046 85 c0 test eax, eax
00048 74 1c je SHORT $LN6@stbi__pars
; 4982 : stbi__zreceive(a, a->num_bits & 7); // discard
0004a 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
00051 8b 40 10 mov eax, DWORD PTR [rax+16]
00054 83 e0 07 and eax, 7
00057 8b d0 mov edx, eax
00059 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
00060 e8 00 00 00 00 call stbi__zreceive
00065 90 npad 1
$LN6@stbi__pars:
; 4983 : // drain the bit-packed data into header
; 4984 : k = 0;
00066 c7 45 64 00 00
00 00 mov DWORD PTR k$[rbp], 0
$LN2@stbi__pars:
; 4985 : while (a->num_bits > 0) {
0006d 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
00074 83 78 10 00 cmp DWORD PTR [rax+16], 0
00078 7e 4f jle SHORT $LN3@stbi__pars
; 4986 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check
0007a 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
00081 8b 40 18 mov eax, DWORD PTR [rax+24]
00084 25 ff 00 00 00 and eax, 255 ; 000000ffH
00089 48 63 4d 64 movsxd rcx, DWORD PTR k$[rbp]
0008d 88 44 0d 04 mov BYTE PTR header$[rbp+rcx], al
00091 8b 45 64 mov eax, DWORD PTR k$[rbp]
00094 ff c0 inc eax
00096 89 45 64 mov DWORD PTR k$[rbp], eax
; 4987 : a->code_buffer >>= 8;
00099 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
000a0 8b 40 18 mov eax, DWORD PTR [rax+24]
000a3 c1 e8 08 shr eax, 8
000a6 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
000ad 89 41 18 mov DWORD PTR [rcx+24], eax
; 4988 : a->num_bits -= 8;
000b0 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
000b7 8b 40 10 mov eax, DWORD PTR [rax+16]
000ba 83 e8 08 sub eax, 8
000bd 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
000c4 89 41 10 mov DWORD PTR [rcx+16], eax
; 4989 : }
000c7 eb a4 jmp SHORT $LN2@stbi__pars
$LN3@stbi__pars:
; 4990 : if (a->num_bits < 0)
000c9 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
000d0 83 78 10 00 cmp DWORD PTR [rax+16], 0
000d4 7d 11 jge SHORT $LN7@stbi__pars
; 4991 : return stbi__err("zlib corrupt", "Corrupt PNG");
000d6 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@IECDHMDI@zlib?5corrupt@
000dd e8 00 00 00 00 call stbi__err
000e2 e9 54 01 00 00 jmp $LN1@stbi__pars
$LN7@stbi__pars:
$LN4@stbi__pars:
; 4992 : // now fill header the normal way
; 4993 : while (k < 4)
000e7 83 7d 64 04 cmp DWORD PTR k$[rbp], 4
000eb 7d 1e jge SHORT $LN5@stbi__pars
; 4994 : header[k++] = stbi__zget8(a);
000ed 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
000f4 e8 00 00 00 00 call stbi__zget8
000f9 48 63 4d 64 movsxd rcx, DWORD PTR k$[rbp]
000fd 88 44 0d 04 mov BYTE PTR header$[rbp+rcx], al
00101 8b 45 64 mov eax, DWORD PTR k$[rbp]
00104 ff c0 inc eax
00106 89 45 64 mov DWORD PTR k$[rbp], eax
00109 eb dc jmp SHORT $LN4@stbi__pars
$LN5@stbi__pars:
; 4995 : len = header[1] * 256 + header[0];
0010b b8 01 00 00 00 mov eax, 1
00110 48 6b c0 01 imul rax, rax, 1
00114 0f b6 44 05 04 movzx eax, BYTE PTR header$[rbp+rax]
00119 69 c0 00 01 00
00 imul eax, eax, 256 ; 00000100H
0011f b9 01 00 00 00 mov ecx, 1
00124 48 6b c9 00 imul rcx, rcx, 0
00128 0f b6 4c 0d 04 movzx ecx, BYTE PTR header$[rbp+rcx]
0012d 03 c1 add eax, ecx
0012f 89 45 24 mov DWORD PTR len$[rbp], eax
; 4996 : nlen = header[3] * 256 + header[2];
00132 b8 01 00 00 00 mov eax, 1
00137 48 6b c0 03 imul rax, rax, 3
0013b 0f b6 44 05 04 movzx eax, BYTE PTR header$[rbp+rax]
00140 69 c0 00 01 00
00 imul eax, eax, 256 ; 00000100H
00146 b9 01 00 00 00 mov ecx, 1
0014b 48 6b c9 02 imul rcx, rcx, 2
0014f 0f b6 4c 0d 04 movzx ecx, BYTE PTR header$[rbp+rcx]
00154 03 c1 add eax, ecx
00156 89 45 44 mov DWORD PTR nlen$[rbp], eax
; 4997 : if (nlen != (len ^ 0xffff))
00159 8b 45 24 mov eax, DWORD PTR len$[rbp]
0015c 35 ff ff 00 00 xor eax, 65535 ; 0000ffffH
00161 39 45 44 cmp DWORD PTR nlen$[rbp], eax
00164 74 11 je SHORT $LN8@stbi__pars
; 4998 : return stbi__err("zlib corrupt", "Corrupt PNG");
00166 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@IECDHMDI@zlib?5corrupt@
0016d e8 00 00 00 00 call stbi__err
00172 e9 c4 00 00 00 jmp $LN1@stbi__pars
$LN8@stbi__pars:
; 4999 : if (a->zbuffer + len > a->zbuffer_end)
00177 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
0017b 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
00182 48 03 01 add rax, QWORD PTR [rcx]
00185 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
0018c 48 3b 41 08 cmp rax, QWORD PTR [rcx+8]
00190 76 11 jbe SHORT $LN9@stbi__pars
; 5000 : return stbi__err("read past buffer", "Corrupt PNG");
00192 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@PIPBCKIA@read?5past?5buffer@
00199 e8 00 00 00 00 call stbi__err
0019e e9 98 00 00 00 jmp $LN1@stbi__pars
$LN9@stbi__pars:
; 5001 : if (a->zout + len > a->zout_end)
001a3 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
001a7 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
001ae 48 03 41 20 add rax, QWORD PTR [rcx+32]
001b2 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
001b9 48 3b 41 30 cmp rax, QWORD PTR [rcx+48]
001bd 76 23 jbe SHORT $LN10@stbi__pars
; 5002 : if (!stbi__zexpand(a, a->zout, len))
001bf 44 8b 45 24 mov r8d, DWORD PTR len$[rbp]
001c3 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
001ca 48 8b 50 20 mov rdx, QWORD PTR [rax+32]
001ce 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
001d5 e8 00 00 00 00 call stbi__zexpand
001da 85 c0 test eax, eax
001dc 75 04 jne SHORT $LN11@stbi__pars
; 5003 : return 0;
001de 33 c0 xor eax, eax
001e0 eb 59 jmp SHORT $LN1@stbi__pars
$LN11@stbi__pars:
$LN10@stbi__pars:
; 5004 : memcpy(a->zout, a->zbuffer, len);
001e2 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
001e6 4c 8b c0 mov r8, rax
001e9 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
001f0 48 8b 10 mov rdx, QWORD PTR [rax]
001f3 48 8b 85 60 01
00 00 mov rax, QWORD PTR a$[rbp]
001fa 48 8b 48 20 mov rcx, QWORD PTR [rax+32]
001fe e8 00 00 00 00 call memcpy
00203 90 npad 1
; 5005 : a->zbuffer += len;
00204 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
00208 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
0020f 48 03 01 add rax, QWORD PTR [rcx]
00212 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
00219 48 89 01 mov QWORD PTR [rcx], rax
; 5006 : a->zout += len;
0021c 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
00220 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
00227 48 03 41 20 add rax, QWORD PTR [rcx+32]
0022b 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR a$[rbp]
00232 48 89 41 20 mov QWORD PTR [rcx+32], rax
; 5007 : return 1;
00236 b8 01 00 00 00 mov eax, 1
$LN1@stbi__pars:
; 5008 : }
0023b 48 8b f8 mov rdi, rax
0023e 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00242 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__parse_uncompressed_block$rtcFrameData
00249 e8 00 00 00 00 call _RTC_CheckStackVars
0024e 48 8b c7 mov rax, rdi
00251 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
00258 5f pop rdi
00259 5d pop rbp
0025a c3 ret 0
stbi__parse_uncompressed_block ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__compute_huffman_codes
_TEXT SEGMENT
z_codelength$ = 16
lencodes$ = 2080
codelength_sizes$ = 2568
i$ = 2612
n$ = 2644
hlit$ = 2676
hdist$ = 2708
hclen$ = 2740
ntot$ = 2772
s$6 = 2804
c$7 = 2836
fill$8 = 2868
tv175 = 4040
__$ArrayPad$ = 4048
a$ = 4096
stbi__compute_huffman_codes PROC ; COMDAT
; 4920 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 b8 08 10 00 00 mov eax, 4104 ; 00001008H
0000c e8 00 00 00 00 call __chkstk
00011 48 2b e0 sub rsp, rax
00014 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00019 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001e b9 da 02 00 00 mov ecx, 730 ; 000002daH
00023 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00028 f3 ab rep stosd
0002a 48 8b 8c 24 28
10 00 00 mov rcx, QWORD PTR [rsp+4136]
00032 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00039 48 33 c5 xor rax, rbp
0003c 48 89 85 d0 0f
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00043 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0004a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004f 90 npad 1
; 4921 : static const stbi_uc length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5,
; 4922 : 11, 4, 12, 3, 13, 2, 14, 1, 15 };
; 4923 : stbi__zhuffman z_codelength;
; 4924 : stbi_uc lencodes[286 + 32 + 137]; //padding for maximum single op
; 4925 : stbi_uc codelength_sizes[19];
; 4926 : int i, n;
; 4927 :
; 4928 : int hlit = stbi__zreceive(a, 5) + 257;
00050 ba 05 00 00 00 mov edx, 5
00055 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
0005c e8 00 00 00 00 call stbi__zreceive
00061 05 01 01 00 00 add eax, 257 ; 00000101H
00066 89 85 74 0a 00
00 mov DWORD PTR hlit$[rbp], eax
; 4929 : int hdist = stbi__zreceive(a, 5) + 1;
0006c ba 05 00 00 00 mov edx, 5
00071 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
00078 e8 00 00 00 00 call stbi__zreceive
0007d ff c0 inc eax
0007f 89 85 94 0a 00
00 mov DWORD PTR hdist$[rbp], eax
; 4930 : int hclen = stbi__zreceive(a, 4) + 4;
00085 ba 04 00 00 00 mov edx, 4
0008a 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
00091 e8 00 00 00 00 call stbi__zreceive
00096 83 c0 04 add eax, 4
00099 89 85 b4 0a 00
00 mov DWORD PTR hclen$[rbp], eax
; 4931 : int ntot = hlit + hdist;
0009f 8b 85 94 0a 00
00 mov eax, DWORD PTR hdist$[rbp]
000a5 8b 8d 74 0a 00
00 mov ecx, DWORD PTR hlit$[rbp]
000ab 03 c8 add ecx, eax
000ad 8b c1 mov eax, ecx
000af 89 85 d4 0a 00
00 mov DWORD PTR ntot$[rbp], eax
; 4932 :
; 4933 : memset(codelength_sizes, 0, sizeof(codelength_sizes));
000b5 41 b8 13 00 00
00 mov r8d, 19
000bb 33 d2 xor edx, edx
000bd 48 8d 8d 08 0a
00 00 lea rcx, QWORD PTR codelength_sizes$[rbp]
000c4 e8 00 00 00 00 call memset
000c9 90 npad 1
; 4934 : for (i = 0; i < hclen; ++i) {
000ca c7 85 34 0a 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
000d4 eb 0e jmp SHORT $LN4@stbi__comp
$LN2@stbi__comp:
000d6 8b 85 34 0a 00
00 mov eax, DWORD PTR i$[rbp]
000dc ff c0 inc eax
000de 89 85 34 0a 00
00 mov DWORD PTR i$[rbp], eax
$LN4@stbi__comp:
000e4 8b 85 b4 0a 00
00 mov eax, DWORD PTR hclen$[rbp]
000ea 39 85 34 0a 00
00 cmp DWORD PTR i$[rbp], eax
000f0 7d 39 jge SHORT $LN3@stbi__comp
; 4935 : int s = stbi__zreceive(a, 3);
000f2 ba 03 00 00 00 mov edx, 3
000f7 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
000fe e8 00 00 00 00 call stbi__zreceive
00103 89 85 f4 0a 00
00 mov DWORD PTR s$6[rbp], eax
; 4936 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s;
00109 48 63 85 34 0a
00 00 movsxd rax, DWORD PTR i$[rbp]
00110 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?length_dezigzag@?1??stbi__compute_huffman_codes@@9@9
00117 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0011b 0f b6 8d f4 0a
00 00 movzx ecx, BYTE PTR s$6[rbp]
00122 88 8c 05 08 0a
00 00 mov BYTE PTR codelength_sizes$[rbp+rax], cl
; 4937 : }
00129 eb ab jmp SHORT $LN2@stbi__comp
$LN3@stbi__comp:
; 4938 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19))
0012b 41 b8 13 00 00
00 mov r8d, 19
00131 48 8d 95 08 0a
00 00 lea rdx, QWORD PTR codelength_sizes$[rbp]
00138 48 8d 4d 10 lea rcx, QWORD PTR z_codelength$[rbp]
0013c e8 00 00 00 00 call stbi__zbuild_huffman
00141 85 c0 test eax, eax
00143 75 07 jne SHORT $LN7@stbi__comp
; 4939 : return 0;
00145 33 c0 xor eax, eax
00147 e9 3a 02 00 00 jmp $LN1@stbi__comp
$LN7@stbi__comp:
; 4940 :
; 4941 : n = 0;
0014c c7 85 54 0a 00
00 00 00 00 00 mov DWORD PTR n$[rbp], 0
$LN5@stbi__comp:
; 4942 : while (n < ntot) {
00156 8b 85 d4 0a 00
00 mov eax, DWORD PTR ntot$[rbp]
0015c 39 85 54 0a 00
00 cmp DWORD PTR n$[rbp], eax
00162 0f 8d a0 01 00
00 jge $LN6@stbi__comp
; 4943 : int c = stbi__zhuffman_decode(a, &z_codelength);
00168 48 8d 55 10 lea rdx, QWORD PTR z_codelength$[rbp]
0016c 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
00173 e8 00 00 00 00 call stbi__zhuffman_decode
00178 89 85 14 0b 00
00 mov DWORD PTR c$7[rbp], eax
; 4944 : if (c < 0 || c >= 19)
0017e 83 bd 14 0b 00
00 00 cmp DWORD PTR c$7[rbp], 0
00185 7c 09 jl SHORT $LN9@stbi__comp
00187 83 bd 14 0b 00
00 13 cmp DWORD PTR c$7[rbp], 19
0018e 7c 11 jl SHORT $LN8@stbi__comp
$LN9@stbi__comp:
; 4945 : return stbi__err("bad codelengths", "Corrupt PNG");
00190 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
00197 e8 00 00 00 00 call stbi__err
0019c e9 e5 01 00 00 jmp $LN1@stbi__comp
$LN8@stbi__comp:
; 4946 : if (c < 16)
001a1 83 bd 14 0b 00
00 10 cmp DWORD PTR c$7[rbp], 16
001a8 7d 28 jge SHORT $LN10@stbi__comp
; 4947 : lencodes[n++] = (stbi_uc)c;
001aa 48 63 85 54 0a
00 00 movsxd rax, DWORD PTR n$[rbp]
001b1 0f b6 8d 14 0b
00 00 movzx ecx, BYTE PTR c$7[rbp]
001b8 88 8c 05 20 08
00 00 mov BYTE PTR lencodes$[rbp+rax], cl
001bf 8b 85 54 0a 00
00 mov eax, DWORD PTR n$[rbp]
001c5 ff c0 inc eax
001c7 89 85 54 0a 00
00 mov DWORD PTR n$[rbp], eax
001cd e9 31 01 00 00 jmp $LN11@stbi__comp
$LN10@stbi__comp:
; 4948 : else {
; 4949 : stbi_uc fill = 0;
001d2 c6 85 34 0b 00
00 00 mov BYTE PTR fill$8[rbp], 0
; 4950 : if (c == 16) {
001d9 83 bd 14 0b 00
00 10 cmp DWORD PTR c$7[rbp], 16
001e0 75 4e jne SHORT $LN12@stbi__comp
; 4951 : c = stbi__zreceive(a, 2) + 3;
001e2 ba 02 00 00 00 mov edx, 2
001e7 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
001ee e8 00 00 00 00 call stbi__zreceive
001f3 83 c0 03 add eax, 3
001f6 89 85 14 0b 00
00 mov DWORD PTR c$7[rbp], eax
; 4952 : if (n == 0)
001fc 83 bd 54 0a 00
00 00 cmp DWORD PTR n$[rbp], 0
00203 75 11 jne SHORT $LN14@stbi__comp
; 4953 : return stbi__err("bad codelengths", "Corrupt PNG");
00205 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
0020c e8 00 00 00 00 call stbi__err
00211 e9 70 01 00 00 jmp $LN1@stbi__comp
$LN14@stbi__comp:
; 4954 : fill = lencodes[n - 1];
00216 8b 85 54 0a 00
00 mov eax, DWORD PTR n$[rbp]
0021c ff c8 dec eax
0021e 48 98 cdqe
00220 0f b6 84 05 20
08 00 00 movzx eax, BYTE PTR lencodes$[rbp+rax]
00228 88 85 34 0b 00
00 mov BYTE PTR fill$8[rbp], al
0022e eb 5b jmp SHORT $LN13@stbi__comp
$LN12@stbi__comp:
; 4955 : } else if (c == 17) {
00230 83 bd 14 0b 00
00 11 cmp DWORD PTR c$7[rbp], 17
00237 75 1c jne SHORT $LN15@stbi__comp
; 4956 : c = stbi__zreceive(a, 3) + 3;
00239 ba 03 00 00 00 mov edx, 3
0023e 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
00245 e8 00 00 00 00 call stbi__zreceive
0024a 83 c0 03 add eax, 3
0024d 89 85 14 0b 00
00 mov DWORD PTR c$7[rbp], eax
00253 eb 36 jmp SHORT $LN16@stbi__comp
$LN15@stbi__comp:
; 4957 : } else if (c == 18) {
00255 83 bd 14 0b 00
00 12 cmp DWORD PTR c$7[rbp], 18
0025c 75 1c jne SHORT $LN17@stbi__comp
; 4958 : c = stbi__zreceive(a, 7) + 11;
0025e ba 07 00 00 00 mov edx, 7
00263 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
0026a e8 00 00 00 00 call stbi__zreceive
0026f 83 c0 0b add eax, 11
00272 89 85 14 0b 00
00 mov DWORD PTR c$7[rbp], eax
; 4959 : } else {
00278 eb 11 jmp SHORT $LN18@stbi__comp
$LN17@stbi__comp:
; 4960 : return stbi__err("bad codelengths", "Corrupt PNG");
0027a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
00281 e8 00 00 00 00 call stbi__err
00286 e9 fb 00 00 00 jmp $LN1@stbi__comp
$LN18@stbi__comp:
$LN16@stbi__comp:
$LN13@stbi__comp:
; 4961 : }
; 4962 : if (ntot - n < c)
0028b 8b 85 54 0a 00
00 mov eax, DWORD PTR n$[rbp]
00291 8b 8d d4 0a 00
00 mov ecx, DWORD PTR ntot$[rbp]
00297 2b c8 sub ecx, eax
00299 8b c1 mov eax, ecx
0029b 3b 85 14 0b 00
00 cmp eax, DWORD PTR c$7[rbp]
002a1 7d 11 jge SHORT $LN19@stbi__comp
; 4963 : return stbi__err("bad codelengths", "Corrupt PNG");
002a3 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
002aa e8 00 00 00 00 call stbi__err
002af e9 d2 00 00 00 jmp $LN1@stbi__comp
$LN19@stbi__comp:
; 4964 : memset(lencodes + n, fill, c);
002b4 48 63 85 14 0b
00 00 movsxd rax, DWORD PTR c$7[rbp]
002bb 0f b6 8d 34 0b
00 00 movzx ecx, BYTE PTR fill$8[rbp]
002c2 48 63 95 54 0a
00 00 movsxd rdx, DWORD PTR n$[rbp]
002c9 48 8d 94 15 20
08 00 00 lea rdx, QWORD PTR lencodes$[rbp+rdx]
002d1 48 89 95 c8 0f
00 00 mov QWORD PTR tv175[rbp], rdx
002d8 4c 8b c0 mov r8, rax
002db 8b d1 mov edx, ecx
002dd 48 8b 85 c8 0f
00 00 mov rax, QWORD PTR tv175[rbp]
002e4 48 8b c8 mov rcx, rax
002e7 e8 00 00 00 00 call memset
002ec 90 npad 1
; 4965 : n += c;
002ed 8b 85 14 0b 00
00 mov eax, DWORD PTR c$7[rbp]
002f3 8b 8d 54 0a 00
00 mov ecx, DWORD PTR n$[rbp]
002f9 03 c8 add ecx, eax
002fb 8b c1 mov eax, ecx
002fd 89 85 54 0a 00
00 mov DWORD PTR n$[rbp], eax
$LN11@stbi__comp:
; 4966 : }
; 4967 : }
00303 e9 4e fe ff ff jmp $LN5@stbi__comp
$LN6@stbi__comp:
; 4968 : if (n != ntot)
00308 8b 85 d4 0a 00
00 mov eax, DWORD PTR ntot$[rbp]
0030e 39 85 54 0a 00
00 cmp DWORD PTR n$[rbp], eax
00314 74 0e je SHORT $LN20@stbi__comp
; 4969 : return stbi__err("bad codelengths", "Corrupt PNG");
00316 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
0031d e8 00 00 00 00 call stbi__err
00322 eb 62 jmp SHORT $LN1@stbi__comp
$LN20@stbi__comp:
; 4970 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit))
00324 48 8b 85 00 10
00 00 mov rax, QWORD PTR a$[rbp]
0032b 48 83 c0 3c add rax, 60 ; 0000003cH
0032f 44 8b 85 74 0a
00 00 mov r8d, DWORD PTR hlit$[rbp]
00336 48 8d 95 20 08
00 00 lea rdx, QWORD PTR lencodes$[rbp]
0033d 48 8b c8 mov rcx, rax
00340 e8 00 00 00 00 call stbi__zbuild_huffman
00345 85 c0 test eax, eax
00347 75 04 jne SHORT $LN21@stbi__comp
; 4971 : return 0;
00349 33 c0 xor eax, eax
0034b eb 39 jmp SHORT $LN1@stbi__comp
$LN21@stbi__comp:
; 4972 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist))
0034d 48 63 85 74 0a
00 00 movsxd rax, DWORD PTR hlit$[rbp]
00354 48 8d 84 05 20
08 00 00 lea rax, QWORD PTR lencodes$[rbp+rax]
0035c 48 8b 8d 00 10
00 00 mov rcx, QWORD PTR a$[rbp]
00363 48 81 c1 20 08
00 00 add rcx, 2080 ; 00000820H
0036a 44 8b 85 94 0a
00 00 mov r8d, DWORD PTR hdist$[rbp]
00371 48 8b d0 mov rdx, rax
00374 e8 00 00 00 00 call stbi__zbuild_huffman
00379 85 c0 test eax, eax
0037b 75 04 jne SHORT $LN22@stbi__comp
; 4973 : return 0;
0037d 33 c0 xor eax, eax
0037f eb 05 jmp SHORT $LN1@stbi__comp
$LN22@stbi__comp:
; 4974 : return 1;
00381 b8 01 00 00 00 mov eax, 1
$LN1@stbi__comp:
; 4975 : }
00386 48 8b f8 mov rdi, rax
00389 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0038d 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__compute_huffman_codes$rtcFrameData
00394 e8 00 00 00 00 call _RTC_CheckStackVars
00399 48 8b c7 mov rax, rdi
0039c 48 8b 8d d0 0f
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
003a3 48 33 cd xor rcx, rbp
003a6 e8 00 00 00 00 call __security_check_cookie
003ab 48 8d a5 e8 0f
00 00 lea rsp, QWORD PTR [rbp+4072]
003b2 5f pop rdi
003b3 5d pop rbp
003b4 c3 ret 0
stbi__compute_huffman_codes ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__parse_huffman_block
_TEXT SEGMENT
zout$ = 8
z$1 = 36
p$2 = 72
len$3 = 100
dist$4 = 132
v$5 = 164
a$ = 416
stbi__parse_huffman_block PROC ; COMDAT
; 4849 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 4850 : char *zout = a->zout;
00020 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
00027 48 8b 40 20 mov rax, QWORD PTR [rax+32]
0002b 48 89 45 08 mov QWORD PTR zout$[rbp], rax
$LN2@stbi__pars:
; 4851 : for (;;) {
; 4852 : int z = stbi__zhuffman_decode(a, &a->z_length);
0002f 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
00036 48 83 c0 3c add rax, 60 ; 0000003cH
0003a 48 8b d0 mov rdx, rax
0003d 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR a$[rbp]
00044 e8 00 00 00 00 call stbi__zhuffman_decode
00049 89 45 24 mov DWORD PTR z$1[rbp], eax
; 4853 : if (z < 256) {
0004c 81 7d 24 00 01
00 00 cmp DWORD PTR z$1[rbp], 256 ; 00000100H
00053 7d 72 jge SHORT $LN11@stbi__pars
; 4854 : if (z < 0)
00055 83 7d 24 00 cmp DWORD PTR z$1[rbp], 0
00059 7d 11 jge SHORT $LN13@stbi__pars
; 4855 : return stbi__err("bad huffman code",
0005b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
00062 e8 00 00 00 00 call stbi__err
00067 e9 ae 02 00 00 jmp $LN1@stbi__pars
$LN13@stbi__pars:
; 4856 : "Corrupt PNG"); // error in huffman codes
; 4857 : if (zout >= a->zout_end) {
0006c 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
00073 48 8b 40 30 mov rax, QWORD PTR [rax+48]
00077 48 39 45 08 cmp QWORD PTR zout$[rbp], rax
0007b 72 30 jb SHORT $LN14@stbi__pars
; 4858 : if (!stbi__zexpand(a, zout, 1))
0007d 41 b8 01 00 00
00 mov r8d, 1
00083 48 8b 55 08 mov rdx, QWORD PTR zout$[rbp]
00087 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR a$[rbp]
0008e e8 00 00 00 00 call stbi__zexpand
00093 85 c0 test eax, eax
00095 75 07 jne SHORT $LN15@stbi__pars
; 4859 : return 0;
00097 33 c0 xor eax, eax
00099 e9 7c 02 00 00 jmp $LN1@stbi__pars
$LN15@stbi__pars:
; 4860 : zout = a->zout;
0009e 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
000a5 48 8b 40 20 mov rax, QWORD PTR [rax+32]
000a9 48 89 45 08 mov QWORD PTR zout$[rbp], rax
$LN14@stbi__pars:
; 4861 : }
; 4862 : *zout++ = (char)z;
000ad 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
000b1 0f b6 4d 24 movzx ecx, BYTE PTR z$1[rbp]
000b5 88 08 mov BYTE PTR [rax], cl
000b7 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
000bb 48 ff c0 inc rax
000be 48 89 45 08 mov QWORD PTR zout$[rbp], rax
; 4863 : } else {
000c2 e9 4e 02 00 00 jmp $LN12@stbi__pars
$LN11@stbi__pars:
; 4864 : stbi_uc *p;
; 4865 : int len, dist;
; 4866 : if (z == 256) {
000c7 81 7d 24 00 01
00 00 cmp DWORD PTR z$1[rbp], 256 ; 00000100H
000ce 75 44 jne SHORT $LN16@stbi__pars
; 4867 : a->zout = zout;
000d0 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
000d7 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp]
000db 48 89 48 20 mov QWORD PTR [rax+32], rcx
; 4868 : if (a->hit_zeof_once && a->num_bits < 16) {
000df 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
000e6 83 78 14 00 cmp DWORD PTR [rax+20], 0
000ea 74 1e je SHORT $LN17@stbi__pars
000ec 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
000f3 83 78 10 10 cmp DWORD PTR [rax+16], 16
000f7 7d 11 jge SHORT $LN17@stbi__pars
; 4869 : // The first time we hit zeof, we inserted 16 extra zero bits into our bit
; 4870 : // buffer so the decoder can just do its speculative decoding. But if we
; 4871 : // actually consumed any of those bits (which is the case when num_bits < 16),
; 4872 : // the stream actually read past the end so it is malformed.
; 4873 : return stbi__err("unexpected end", "Corrupt PNG");
000f9 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@CLDJCNKP@unexpected?5end@
00100 e8 00 00 00 00 call stbi__err
00105 e9 10 02 00 00 jmp $LN1@stbi__pars
$LN17@stbi__pars:
; 4874 : }
; 4875 : return 1;
0010a b8 01 00 00 00 mov eax, 1
0010f e9 06 02 00 00 jmp $LN1@stbi__pars
$LN16@stbi__pars:
; 4876 : }
; 4877 : if (z >= 286)
00114 81 7d 24 1e 01
00 00 cmp DWORD PTR z$1[rbp], 286 ; 0000011eH
0011b 7c 11 jl SHORT $LN18@stbi__pars
; 4878 : return stbi__err(
0011d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
00124 e8 00 00 00 00 call stbi__err
00129 e9 ec 01 00 00 jmp $LN1@stbi__pars
$LN18@stbi__pars:
; 4879 : "bad huffman code",
; 4880 : "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data
; 4881 : z -= 257;
0012e 8b 45 24 mov eax, DWORD PTR z$1[rbp]
00131 2d 01 01 00 00 sub eax, 257 ; 00000101H
00136 89 45 24 mov DWORD PTR z$1[rbp], eax
; 4882 : len = stbi__zlength_base[z];
00139 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
0013d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__zlength_base
00144 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
00147 89 45 64 mov DWORD PTR len$3[rbp], eax
; 4883 : if (stbi__zlength_extra[z])
0014a 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
0014e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__zlength_extra
00155 83 3c 81 00 cmp DWORD PTR [rcx+rax*4], 0
00159 74 24 je SHORT $LN19@stbi__pars
; 4884 : len += stbi__zreceive(a, stbi__zlength_extra[z]);
0015b 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
0015f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__zlength_extra
00166 8b 14 81 mov edx, DWORD PTR [rcx+rax*4]
00169 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR a$[rbp]
00170 e8 00 00 00 00 call stbi__zreceive
00175 8b 4d 64 mov ecx, DWORD PTR len$3[rbp]
00178 03 c8 add ecx, eax
0017a 8b c1 mov eax, ecx
0017c 89 45 64 mov DWORD PTR len$3[rbp], eax
$LN19@stbi__pars:
; 4885 : z = stbi__zhuffman_decode(a, &a->z_distance);
0017f 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
00186 48 05 20 08 00
00 add rax, 2080 ; 00000820H
0018c 48 8b d0 mov rdx, rax
0018f 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR a$[rbp]
00196 e8 00 00 00 00 call stbi__zhuffman_decode
0019b 89 45 24 mov DWORD PTR z$1[rbp], eax
; 4886 : if (z < 0 || z >= 30)
0019e 83 7d 24 00 cmp DWORD PTR z$1[rbp], 0
001a2 7c 06 jl SHORT $LN21@stbi__pars
001a4 83 7d 24 1e cmp DWORD PTR z$1[rbp], 30
001a8 7c 11 jl SHORT $LN20@stbi__pars
$LN21@stbi__pars:
; 4887 : return stbi__err(
001aa 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
001b1 e8 00 00 00 00 call stbi__err
001b6 e9 5f 01 00 00 jmp $LN1@stbi__pars
$LN20@stbi__pars:
; 4888 : "bad huffman code",
; 4889 : "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data
; 4890 : dist = stbi__zdist_base[z];
001bb 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
001bf 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__zdist_base
001c6 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
001c9 89 85 84 00 00
00 mov DWORD PTR dist$4[rbp], eax
; 4891 : if (stbi__zdist_extra[z])
001cf 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
001d3 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__zdist_extra
001da 83 3c 81 00 cmp DWORD PTR [rcx+rax*4], 0
001de 74 2a je SHORT $LN22@stbi__pars
; 4892 : dist += stbi__zreceive(a, stbi__zdist_extra[z]);
001e0 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
001e4 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__zdist_extra
001eb 8b 14 81 mov edx, DWORD PTR [rcx+rax*4]
001ee 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR a$[rbp]
001f5 e8 00 00 00 00 call stbi__zreceive
001fa 8b 8d 84 00 00
00 mov ecx, DWORD PTR dist$4[rbp]
00200 03 c8 add ecx, eax
00202 8b c1 mov eax, ecx
00204 89 85 84 00 00
00 mov DWORD PTR dist$4[rbp], eax
$LN22@stbi__pars:
; 4893 : if (zout - a->zout_start < dist)
0020a 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
00211 48 8b 40 28 mov rax, QWORD PTR [rax+40]
00215 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp]
00219 48 2b c8 sub rcx, rax
0021c 48 8b c1 mov rax, rcx
0021f 48 63 8d 84 00
00 00 movsxd rcx, DWORD PTR dist$4[rbp]
00226 48 3b c1 cmp rax, rcx
00229 7d 11 jge SHORT $LN23@stbi__pars
; 4894 : return stbi__err("bad dist", "Corrupt PNG");
0022b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08DIAPIMGJ@bad?5dist@
00232 e8 00 00 00 00 call stbi__err
00237 e9 de 00 00 00 jmp $LN1@stbi__pars
$LN23@stbi__pars:
; 4895 : if (len > a->zout_end - zout) {
0023c 48 63 45 64 movsxd rax, DWORD PTR len$3[rbp]
00240 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR a$[rbp]
00247 48 8b 55 08 mov rdx, QWORD PTR zout$[rbp]
0024b 48 8b 49 30 mov rcx, QWORD PTR [rcx+48]
0024f 48 2b ca sub rcx, rdx
00252 48 3b c1 cmp rax, rcx
00255 7e 2e jle SHORT $LN24@stbi__pars
; 4896 : if (!stbi__zexpand(a, zout, len))
00257 44 8b 45 64 mov r8d, DWORD PTR len$3[rbp]
0025b 48 8b 55 08 mov rdx, QWORD PTR zout$[rbp]
0025f 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR a$[rbp]
00266 e8 00 00 00 00 call stbi__zexpand
0026b 85 c0 test eax, eax
0026d 75 07 jne SHORT $LN25@stbi__pars
; 4897 : return 0;
0026f 33 c0 xor eax, eax
00271 e9 a4 00 00 00 jmp $LN1@stbi__pars
$LN25@stbi__pars:
; 4898 : zout = a->zout;
00276 48 8b 85 a0 01
00 00 mov rax, QWORD PTR a$[rbp]
0027d 48 8b 40 20 mov rax, QWORD PTR [rax+32]
00281 48 89 45 08 mov QWORD PTR zout$[rbp], rax
$LN24@stbi__pars:
; 4899 : }
; 4900 : p = (stbi_uc *)(zout - dist);
00285 48 63 85 84 00
00 00 movsxd rax, DWORD PTR dist$4[rbp]
0028c 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp]
00290 48 2b c8 sub rcx, rax
00293 48 8b c1 mov rax, rcx
00296 48 89 45 48 mov QWORD PTR p$2[rbp], rax
; 4901 : if (dist == 1) { // run of one byte; common in images.
0029a 83 bd 84 00 00
00 01 cmp DWORD PTR dist$4[rbp], 1
002a1 75 3b jne SHORT $LN26@stbi__pars
; 4902 : stbi_uc v = *p;
002a3 48 8b 45 48 mov rax, QWORD PTR p$2[rbp]
002a7 0f b6 00 movzx eax, BYTE PTR [rax]
002aa 88 85 a4 00 00
00 mov BYTE PTR v$5[rbp], al
; 4903 : if (len) {
002b0 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
002b4 74 26 je SHORT $LN28@stbi__pars
$LN7@stbi__pars:
; 4904 : do
; 4905 : *zout++ = v;
002b6 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
002ba 0f b6 8d a4 00
00 00 movzx ecx, BYTE PTR v$5[rbp]
002c1 88 08 mov BYTE PTR [rax], cl
002c3 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
002c7 48 ff c0 inc rax
002ca 48 89 45 08 mov QWORD PTR zout$[rbp], rax
; 4906 : while (--len);
002ce 8b 45 64 mov eax, DWORD PTR len$3[rbp]
002d1 ff c8 dec eax
002d3 89 45 64 mov DWORD PTR len$3[rbp], eax
002d6 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
002da 75 da jne SHORT $LN7@stbi__pars
$LN28@stbi__pars:
; 4907 : }
; 4908 : } else {
002dc eb 37 jmp SHORT $LN27@stbi__pars
$LN26@stbi__pars:
; 4909 : if (len) {
002de 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
002e2 74 31 je SHORT $LN29@stbi__pars
$LN10@stbi__pars:
; 4910 : do
; 4911 : *zout++ = *p++;
002e4 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
002e8 48 8b 4d 48 mov rcx, QWORD PTR p$2[rbp]
002ec 0f b6 09 movzx ecx, BYTE PTR [rcx]
002ef 88 08 mov BYTE PTR [rax], cl
002f1 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
002f5 48 ff c0 inc rax
002f8 48 89 45 08 mov QWORD PTR zout$[rbp], rax
002fc 48 8b 45 48 mov rax, QWORD PTR p$2[rbp]
00300 48 ff c0 inc rax
00303 48 89 45 48 mov QWORD PTR p$2[rbp], rax
; 4912 : while (--len);
00307 8b 45 64 mov eax, DWORD PTR len$3[rbp]
0030a ff c8 dec eax
0030c 89 45 64 mov DWORD PTR len$3[rbp], eax
0030f 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
00313 75 cf jne SHORT $LN10@stbi__pars
$LN29@stbi__pars:
$LN27@stbi__pars:
$LN12@stbi__pars:
; 4913 : }
; 4914 : }
; 4915 : }
; 4916 : }
00315 e9 15 fd ff ff jmp $LN2@stbi__pars
$LN1@stbi__pars:
; 4917 : }
0031a 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
00321 5f pop rdi
00322 5d pop rbp
00323 c3 ret 0
stbi__parse_huffman_block ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__zexpand
_TEXT SEGMENT
q$ = 8
cur$ = 36
limit$ = 68
old_limit$ = 100
z$ = 352
zout$ = 360
n$ = 368
stbi__zexpand PROC ; COMDAT
; 4808 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 68 01
00 00 sub rsp, 360 ; 00000168H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 4809 : char *q;
; 4810 : unsigned int cur, limit, old_limit;
; 4811 : z->zout = zout;
0002a 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00031 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR zout$[rbp]
00038 48 89 48 20 mov QWORD PTR [rax+32], rcx
; 4812 : if (!z->z_expandable)
0003c 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00043 83 78 38 00 cmp DWORD PTR [rax+56], 0
00047 75 11 jne SHORT $LN4@stbi__zexp
; 4813 : return stbi__err("output buffer limit", "Corrupt PNG");
00049 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BE@IBFIPFO@output?5buffer?5limit@
00050 e8 00 00 00 00 call stbi__err
00055 e9 05 01 00 00 jmp $LN1@stbi__zexp
$LN4@stbi__zexp:
; 4814 : cur = (unsigned int)(z->zout - z->zout_start);
0005a 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00061 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR z$[rbp]
00068 48 8b 49 28 mov rcx, QWORD PTR [rcx+40]
0006c 48 8b 40 20 mov rax, QWORD PTR [rax+32]
00070 48 2b c1 sub rax, rcx
00073 89 45 24 mov DWORD PTR cur$[rbp], eax
; 4815 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start);
00076 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
0007d 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR z$[rbp]
00084 48 8b 49 28 mov rcx, QWORD PTR [rcx+40]
00088 48 8b 40 30 mov rax, QWORD PTR [rax+48]
0008c 48 2b c1 sub rax, rcx
0008f 89 45 64 mov DWORD PTR old_limit$[rbp], eax
00092 8b 45 64 mov eax, DWORD PTR old_limit$[rbp]
00095 89 45 44 mov DWORD PTR limit$[rbp], eax
; 4816 : if (UINT_MAX - cur < (unsigned)n)
00098 b8 ff ff ff ff mov eax, -1 ; ffffffffH
0009d 2b 45 24 sub eax, DWORD PTR cur$[rbp]
000a0 3b 85 70 01 00
00 cmp eax, DWORD PTR n$[rbp]
000a6 73 11 jae SHORT $LN5@stbi__zexp
; 4817 : return stbi__err("outofmem", "Out of memory");
000a8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
000af e8 00 00 00 00 call stbi__err
000b4 e9 a6 00 00 00 jmp $LN1@stbi__zexp
$LN5@stbi__zexp:
$LN2@stbi__zexp:
; 4818 : while (cur + n > limit) {
000b9 8b 85 70 01 00
00 mov eax, DWORD PTR n$[rbp]
000bf 8b 4d 24 mov ecx, DWORD PTR cur$[rbp]
000c2 03 c8 add ecx, eax
000c4 8b c1 mov eax, ecx
000c6 3b 45 44 cmp eax, DWORD PTR limit$[rbp]
000c9 76 21 jbe SHORT $LN3@stbi__zexp
; 4819 : if (limit > UINT_MAX / 2)
000cb 81 7d 44 ff ff
ff 7f cmp DWORD PTR limit$[rbp], 2147483647 ; 7fffffffH
000d2 76 0e jbe SHORT $LN6@stbi__zexp
; 4820 : return stbi__err("outofmem", "Out of memory");
000d4 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
000db e8 00 00 00 00 call stbi__err
000e0 eb 7d jmp SHORT $LN1@stbi__zexp
$LN6@stbi__zexp:
; 4821 : limit *= 2;
000e2 8b 45 44 mov eax, DWORD PTR limit$[rbp]
000e5 d1 e0 shl eax, 1
000e7 89 45 44 mov DWORD PTR limit$[rbp], eax
; 4822 : }
000ea eb cd jmp SHORT $LN2@stbi__zexp
$LN3@stbi__zexp:
; 4823 : q = (char *)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit);
000ec 8b 45 44 mov eax, DWORD PTR limit$[rbp]
000ef 8b d0 mov edx, eax
000f1 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
000f8 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
000fc ff 15 00 00 00
00 call QWORD PTR __imp_realloc
00102 48 89 45 08 mov QWORD PTR q$[rbp], rax
; 4824 : STBI_NOTUSED(old_limit);
; 4825 : if (q == NULL)
00106 48 83 7d 08 00 cmp QWORD PTR q$[rbp], 0
0010b 75 0e jne SHORT $LN7@stbi__zexp
; 4826 : return stbi__err("outofmem", "Out of memory");
0010d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00114 e8 00 00 00 00 call stbi__err
00119 eb 44 jmp SHORT $LN1@stbi__zexp
$LN7@stbi__zexp:
; 4827 : z->zout_start = q;
0011b 48 8b 85 60 01
00 00 mov rax, QWORD PTR z$[rbp]
00122 48 8b 4d 08 mov rcx, QWORD PTR q$[rbp]
00126 48 89 48 28 mov QWORD PTR [rax+40], rcx
; 4828 : z->zout = q + cur;
0012a 8b 45 24 mov eax, DWORD PTR cur$[rbp]
0012d 48 8b 4d 08 mov rcx, QWORD PTR q$[rbp]
00131 48 03 c8 add rcx, rax
00134 48 8b c1 mov rax, rcx
00137 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR z$[rbp]
0013e 48 89 41 20 mov QWORD PTR [rcx+32], rax
; 4829 : z->zout_end = q + limit;
00142 8b 45 44 mov eax, DWORD PTR limit$[rbp]
00145 48 8b 4d 08 mov rcx, QWORD PTR q$[rbp]
00149 48 03 c8 add rcx, rax
0014c 48 8b c1 mov rax, rcx
0014f 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR z$[rbp]
00156 48 89 41 30 mov QWORD PTR [rcx+48], rax
; 4830 : return 1;
0015a b8 01 00 00 00 mov eax, 1
$LN1@stbi__zexp:
; 4831 : }
0015f 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
00166 5f pop rdi
00167 5d pop rbp
00168 c3 ret 0
stbi__zexpand ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__zhuffman_decode
_TEXT SEGMENT
b$ = 4
s$ = 36
tv145 = 248
a$ = 288
z$ = 296
stbi__zhuffman_decode PROC ; COMDAT
; 4778 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 4779 : int b, s;
; 4780 : if (a->num_bits < 16) {
00025 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
0002c 83 78 10 10 cmp DWORD PTR [rax+16], 16
00030 7d 5d jge SHORT $LN2@stbi__zhuf
; 4781 : if (stbi__zeof(a)) {
00032 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
00039 e8 00 00 00 00 call stbi__zeof
0003e 85 c0 test eax, eax
00040 74 40 je SHORT $LN3@stbi__zhuf
; 4782 : if (!a->hit_zeof_once) {
00042 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
00049 83 78 14 00 cmp DWORD PTR [rax+20], 0
0004d 75 27 jne SHORT $LN5@stbi__zhuf
; 4783 : // This is the first time we hit eof, insert 16 extra padding btis
; 4784 : // to allow us to keep going; if we actually consume any of them
; 4785 : // though, that is invalid data. This is caught later.
; 4786 : a->hit_zeof_once = 1;
0004f 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
00056 c7 40 14 01 00
00 00 mov DWORD PTR [rax+20], 1
; 4787 : a->num_bits += 16; // add 16 implicit zero bits
0005d 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
00064 8b 40 10 mov eax, DWORD PTR [rax+16]
00067 83 c0 10 add eax, 16
0006a 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
00071 89 41 10 mov DWORD PTR [rcx+16], eax
; 4788 : } else {
00074 eb 0a jmp SHORT $LN6@stbi__zhuf
$LN5@stbi__zhuf:
; 4789 : // We already inserted our extra 16 padding bits and are again
; 4790 : // out, this stream is actually prematurely terminated.
; 4791 : return -1;
00076 b8 ff ff ff ff mov eax, -1
0007b e9 9d 00 00 00 jmp $LN1@stbi__zhuf
$LN6@stbi__zhuf:
; 4792 : }
; 4793 : } else {
00080 eb 0d jmp SHORT $LN4@stbi__zhuf
$LN3@stbi__zhuf:
; 4794 : stbi__fill_bits(a);
00082 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
00089 e8 00 00 00 00 call stbi__fill_bits
0008e 90 npad 1
$LN4@stbi__zhuf:
$LN2@stbi__zhuf:
; 4795 : }
; 4796 : }
; 4797 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK];
0008f 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
00096 8b 40 18 mov eax, DWORD PTR [rax+24]
00099 25 ff 01 00 00 and eax, 511 ; 000001ffH
0009e 8b c0 mov eax, eax
000a0 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR z$[rbp]
000a7 0f b7 04 41 movzx eax, WORD PTR [rcx+rax*2]
000ab 89 45 04 mov DWORD PTR b$[rbp], eax
; 4798 : if (b) {
000ae 83 7d 04 00 cmp DWORD PTR b$[rbp], 0
000b2 74 56 je SHORT $LN7@stbi__zhuf
; 4799 : s = b >> 9;
000b4 8b 45 04 mov eax, DWORD PTR b$[rbp]
000b7 c1 f8 09 sar eax, 9
000ba 89 45 24 mov DWORD PTR s$[rbp], eax
; 4800 : a->code_buffer >>= s;
000bd 8b 45 24 mov eax, DWORD PTR s$[rbp]
000c0 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
000c7 48 89 8d f8 00
00 00 mov QWORD PTR tv145[rbp], rcx
000ce 0f b6 c8 movzx ecx, al
000d1 48 8b 85 f8 00
00 00 mov rax, QWORD PTR tv145[rbp]
000d8 8b 40 18 mov eax, DWORD PTR [rax+24]
000db d3 e8 shr eax, cl
000dd 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
000e4 89 41 18 mov DWORD PTR [rcx+24], eax
; 4801 : a->num_bits -= s;
000e7 48 8b 85 20 01
00 00 mov rax, QWORD PTR a$[rbp]
000ee 8b 4d 24 mov ecx, DWORD PTR s$[rbp]
000f1 8b 40 10 mov eax, DWORD PTR [rax+16]
000f4 2b c1 sub eax, ecx
000f6 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
000fd 89 41 10 mov DWORD PTR [rcx+16], eax
; 4802 : return b & 511;
00100 8b 45 04 mov eax, DWORD PTR b$[rbp]
00103 25 ff 01 00 00 and eax, 511 ; 000001ffH
00108 eb 13 jmp SHORT $LN1@stbi__zhuf
$LN7@stbi__zhuf:
; 4803 : }
; 4804 : return stbi__zhuffman_decode_slowpath(a, z);
0010a 48 8b 95 28 01
00 00 mov rdx, QWORD PTR z$[rbp]
00111 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR a$[rbp]
00118 e8 00 00 00 00 call stbi__zhuffman_decode_slowpath
$LN1@stbi__zhuf:
; 4805 : }
0011d 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00124 5f pop rdi
00125 5d pop rbp
00126 c3 ret 0
stbi__zhuffman_decode ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__zhuffman_decode_slowpath
_TEXT SEGMENT
b$ = 4
s$ = 36
k$ = 68
tv159 = 280
a$ = 320
z$ = 328
stbi__zhuffman_decode_slowpath PROC ; COMDAT
; 4756 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 4757 : int b, s, k;
; 4758 : // not resolved by fast table, so compute it the slow way
; 4759 : // use jpeg approach, which requires MSbits at top
; 4760 : k = stbi__bit_reverse(a->code_buffer, 16);
00025 ba 10 00 00 00 mov edx, 16
0002a 48 8b 85 40 01
00 00 mov rax, QWORD PTR a$[rbp]
00031 8b 48 18 mov ecx, DWORD PTR [rax+24]
00034 e8 00 00 00 00 call stbi__bit_reverse
00039 89 45 44 mov DWORD PTR k$[rbp], eax
; 4761 : for (s = STBI__ZFAST_BITS + 1;; ++s)
0003c c7 45 24 0a 00
00 00 mov DWORD PTR s$[rbp], 10
00043 eb 08 jmp SHORT $LN4@stbi__zhuf
$LN2@stbi__zhuf:
00045 8b 45 24 mov eax, DWORD PTR s$[rbp]
00048 ff c0 inc eax
0004a 89 45 24 mov DWORD PTR s$[rbp], eax
$LN4@stbi__zhuf:
; 4762 : if (k < z->maxcode[s])
0004d 48 63 45 24 movsxd rax, DWORD PTR s$[rbp]
00051 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR z$[rbp]
00058 8b 84 81 20 04
00 00 mov eax, DWORD PTR [rcx+rax*4+1056]
0005f 39 45 44 cmp DWORD PTR k$[rbp], eax
00062 7d 02 jge SHORT $LN5@stbi__zhuf
; 4763 : break;
00064 eb 02 jmp SHORT $LN3@stbi__zhuf
$LN5@stbi__zhuf:
00066 eb dd jmp SHORT $LN2@stbi__zhuf
$LN3@stbi__zhuf:
; 4764 : if (s >= 16)
00068 83 7d 24 10 cmp DWORD PTR s$[rbp], 16
0006c 7c 0a jl SHORT $LN6@stbi__zhuf
; 4765 : return -1; // invalid code!
0006e b8 ff ff ff ff mov eax, -1
00073 e9 c2 00 00 00 jmp $LN1@stbi__zhuf
$LN6@stbi__zhuf:
; 4766 : // code size is s, so:
; 4767 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s];
00078 b8 10 00 00 00 mov eax, 16
0007d 2b 45 24 sub eax, DWORD PTR s$[rbp]
00080 0f b6 c8 movzx ecx, al
00083 8b 45 44 mov eax, DWORD PTR k$[rbp]
00086 d3 f8 sar eax, cl
00088 48 63 4d 24 movsxd rcx, DWORD PTR s$[rbp]
0008c 48 8b 95 48 01
00 00 mov rdx, QWORD PTR z$[rbp]
00093 0f b7 8c 4a 00
04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1024]
0009b 2b c1 sub eax, ecx
0009d 48 63 4d 24 movsxd rcx, DWORD PTR s$[rbp]
000a1 48 8b 95 48 01
00 00 mov rdx, QWORD PTR z$[rbp]
000a8 0f b7 8c 4a 64
04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1124]
000b0 03 c1 add eax, ecx
000b2 89 45 04 mov DWORD PTR b$[rbp], eax
; 4768 : if (b >= STBI__ZNSYMS)
000b5 81 7d 04 20 01
00 00 cmp DWORD PTR b$[rbp], 288 ; 00000120H
000bc 7c 07 jl SHORT $LN7@stbi__zhuf
; 4769 : return -1; // some data was corrupt somewhere!
000be b8 ff ff ff ff mov eax, -1
000c3 eb 75 jmp SHORT $LN1@stbi__zhuf
$LN7@stbi__zhuf:
; 4770 : if (z->size[b] != s)
000c5 48 63 45 04 movsxd rax, DWORD PTR b$[rbp]
000c9 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR z$[rbp]
000d0 0f b6 84 01 84
04 00 00 movzx eax, BYTE PTR [rcx+rax+1156]
000d8 3b 45 24 cmp eax, DWORD PTR s$[rbp]
000db 74 07 je SHORT $LN8@stbi__zhuf
; 4771 : return -1; // was originally an assert, but report failure instead.
000dd b8 ff ff ff ff mov eax, -1
000e2 eb 56 jmp SHORT $LN1@stbi__zhuf
$LN8@stbi__zhuf:
; 4772 : a->code_buffer >>= s;
000e4 8b 45 24 mov eax, DWORD PTR s$[rbp]
000e7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR a$[rbp]
000ee 48 89 8d 18 01
00 00 mov QWORD PTR tv159[rbp], rcx
000f5 0f b6 c8 movzx ecx, al
000f8 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv159[rbp]
000ff 8b 40 18 mov eax, DWORD PTR [rax+24]
00102 d3 e8 shr eax, cl
00104 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR a$[rbp]
0010b 89 41 18 mov DWORD PTR [rcx+24], eax
; 4773 : a->num_bits -= s;
0010e 48 8b 85 40 01
00 00 mov rax, QWORD PTR a$[rbp]
00115 8b 4d 24 mov ecx, DWORD PTR s$[rbp]
00118 8b 40 10 mov eax, DWORD PTR [rax+16]
0011b 2b c1 sub eax, ecx
0011d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR a$[rbp]
00124 89 41 10 mov DWORD PTR [rcx+16], eax
; 4774 : return z->value[b];
00127 48 63 45 04 movsxd rax, DWORD PTR b$[rbp]
0012b 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR z$[rbp]
00132 0f b7 84 41 a4
05 00 00 movzx eax, WORD PTR [rcx+rax*2+1444]
$LN1@stbi__zhuf:
; 4775 : }
0013a 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
00141 5f pop rdi
00142 5d pop rbp
00143 c3 ret 0
stbi__zhuffman_decode_slowpath ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__zreceive
_TEXT SEGMENT
k$ = 4
tv84 = 212
tv90 = 216
z$ = 256
n$ = 264
stbi__zreceive PROC ; COMDAT
; 4745 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 4746 : unsigned int k;
; 4747 : if (z->num_bits < n)
00024 48 8b 85 00 01
00 00 mov rax, QWORD PTR z$[rbp]
0002b 8b 8d 08 01 00
00 mov ecx, DWORD PTR n$[rbp]
00031 39 48 10 cmp DWORD PTR [rax+16], ecx
00034 7d 0d jge SHORT $LN2@stbi__zrec
; 4748 : stbi__fill_bits(z);
00036 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
0003d e8 00 00 00 00 call stbi__fill_bits
00042 90 npad 1
$LN2@stbi__zrec:
; 4749 : k = z->code_buffer & ((1 << n) - 1);
00043 8b 85 08 01 00
00 mov eax, DWORD PTR n$[rbp]
00049 b9 01 00 00 00 mov ecx, 1
0004e 89 8d d4 00 00
00 mov DWORD PTR tv84[rbp], ecx
00054 0f b6 c8 movzx ecx, al
00057 8b 85 d4 00 00
00 mov eax, DWORD PTR tv84[rbp]
0005d d3 e0 shl eax, cl
0005f ff c8 dec eax
00061 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00068 8b 49 18 mov ecx, DWORD PTR [rcx+24]
0006b 23 c8 and ecx, eax
0006d 8b c1 mov eax, ecx
0006f 89 45 04 mov DWORD PTR k$[rbp], eax
; 4750 : z->code_buffer >>= n;
00072 8b 85 08 01 00
00 mov eax, DWORD PTR n$[rbp]
00078 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
0007f 48 89 8d d8 00
00 00 mov QWORD PTR tv90[rbp], rcx
00086 0f b6 c8 movzx ecx, al
00089 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv90[rbp]
00090 8b 40 18 mov eax, DWORD PTR [rax+24]
00093 d3 e8 shr eax, cl
00095 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
0009c 89 41 18 mov DWORD PTR [rcx+24], eax
; 4751 : z->num_bits -= n;
0009f 48 8b 85 00 01
00 00 mov rax, QWORD PTR z$[rbp]
000a6 8b 8d 08 01 00
00 mov ecx, DWORD PTR n$[rbp]
000ac 8b 40 10 mov eax, DWORD PTR [rax+16]
000af 2b c1 sub eax, ecx
000b1 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
000b8 89 41 10 mov DWORD PTR [rcx+16], eax
; 4752 : return k;
000bb 8b 45 04 mov eax, DWORD PTR k$[rbp]
; 4753 : }
000be 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000c5 5f pop rdi
000c6 5d pop rbp
000c7 c3 ret 0
stbi__zreceive ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__fill_bits
_TEXT SEGMENT
tv92 = 192
z$ = 240
stbi__fill_bits PROC ; COMDAT
; 4733 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
$LN4@stbi__fill:
; 4734 : do {
; 4735 : if (z->code_buffer >= (1U << z->num_bits)) {
00020 48 8b 85 f0 00
00 00 mov rax, QWORD PTR z$[rbp]
00027 8b 40 10 mov eax, DWORD PTR [rax+16]
0002a b9 01 00 00 00 mov ecx, 1
0002f 89 8d c0 00 00
00 mov DWORD PTR tv92[rbp], ecx
00035 0f b6 c8 movzx ecx, al
00038 8b 85 c0 00 00
00 mov eax, DWORD PTR tv92[rbp]
0003e d3 e0 shl eax, cl
00040 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
00047 39 41 18 cmp DWORD PTR [rcx+24], eax
0004a 72 17 jb SHORT $LN5@stbi__fill
; 4736 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */
0004c 48 8b 85 f0 00
00 00 mov rax, QWORD PTR z$[rbp]
00053 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
0005a 48 8b 49 08 mov rcx, QWORD PTR [rcx+8]
0005e 48 89 08 mov QWORD PTR [rax], rcx
; 4737 : return;
00061 eb 5b jmp SHORT $LN1@stbi__fill
$LN5@stbi__fill:
; 4738 : }
; 4739 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits;
00063 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
0006a e8 00 00 00 00 call stbi__zget8
0006f 0f b6 c0 movzx eax, al
00072 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
00079 8b 49 10 mov ecx, DWORD PTR [rcx+16]
0007c d3 e0 shl eax, cl
0007e 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
00085 8b 49 18 mov ecx, DWORD PTR [rcx+24]
00088 0b c8 or ecx, eax
0008a 8b c1 mov eax, ecx
0008c 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
00093 89 41 18 mov DWORD PTR [rcx+24], eax
; 4740 : z->num_bits += 8;
00096 48 8b 85 f0 00
00 00 mov rax, QWORD PTR z$[rbp]
0009d 8b 40 10 mov eax, DWORD PTR [rax+16]
000a0 83 c0 08 add eax, 8
000a3 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
000aa 89 41 10 mov DWORD PTR [rcx+16], eax
; 4741 : } while (z->num_bits <= 24);
000ad 48 8b 85 f0 00
00 00 mov rax, QWORD PTR z$[rbp]
000b4 83 78 10 18 cmp DWORD PTR [rax+16], 24
000b8 0f 8e 62 ff ff
ff jle $LN4@stbi__fill
$LN1@stbi__fill:
; 4742 : }
000be 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000c5 5f pop rdi
000c6 5d pop rbp
000c7 c3 ret 0
stbi__fill_bits ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__zget8
_TEXT SEGMENT
tv73 = 192
z$ = 240
stbi__zget8 PROC ; COMDAT
; 4728 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 4729 : return stbi__zeof(z) ? 0 : *z->zbuffer++;
00020 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
00027 e8 00 00 00 00 call stbi__zeof
0002c 85 c0 test eax, eax
0002e 74 0c je SHORT $LN3@stbi__zget
00030 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
0003a eb 2a jmp SHORT $LN4@stbi__zget
$LN3@stbi__zget:
0003c 48 8b 85 f0 00
00 00 mov rax, QWORD PTR z$[rbp]
00043 48 8b 00 mov rax, QWORD PTR [rax]
00046 0f b6 00 movzx eax, BYTE PTR [rax]
00049 89 85 c0 00 00
00 mov DWORD PTR tv73[rbp], eax
0004f 48 8b 85 f0 00
00 00 mov rax, QWORD PTR z$[rbp]
00056 48 8b 00 mov rax, QWORD PTR [rax]
00059 48 ff c0 inc rax
0005c 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
00063 48 89 01 mov QWORD PTR [rcx], rax
$LN4@stbi__zget:
00066 0f b6 85 c0 00
00 00 movzx eax, BYTE PTR tv73[rbp]
; 4730 : }
0006d 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
00074 5f pop rdi
00075 5d pop rbp
00076 c3 ret 0
stbi__zget8 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__zeof
_TEXT SEGMENT
tv67 = 192
z$ = 240
stbi__zeof PROC ; COMDAT
; 4723 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 4724 : return (z->zbuffer >= z->zbuffer_end);
00020 48 8b 85 f0 00
00 00 mov rax, QWORD PTR z$[rbp]
00027 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR z$[rbp]
0002e 48 8b 49 08 mov rcx, QWORD PTR [rcx+8]
00032 48 39 08 cmp QWORD PTR [rax], rcx
00035 72 0c jb SHORT $LN3@stbi__zeof
00037 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
00041 eb 0a jmp SHORT $LN4@stbi__zeof
$LN3@stbi__zeof:
00043 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
$LN4@stbi__zeof:
0004d 8b 85 c0 00 00
00 mov eax, DWORD PTR tv67[rbp]
; 4725 : }
00053 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
0005a 5f pop rdi
0005b 5d pop rbp
0005c c3 ret 0
stbi__zeof ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__zbuild_huffman
_TEXT SEGMENT
i$ = 4
k$ = 36
code$ = 68
next_code$ = 112
sizes$ = 208
s$5 = 308
c$6 = 340
fastv$7 = 372
j$8 = 404
tv289 = 612
__$ArrayPad$ = 616
z$ = 656
sizelist$ = 664
num$ = 672
stbi__zbuild_huffman PROC ; COMDAT
; 4655 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 98 02
00 00 sub rsp, 664 ; 00000298H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00022 b9 6e 00 00 00 mov ecx, 110 ; 0000006eH
00027 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
0002c f3 ab rep stosd
0002e 48 8b 8c 24 b8
02 00 00 mov rcx, QWORD PTR [rsp+696]
00036 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
0003d 48 33 c5 xor rax, rbp
00040 48 89 85 68 02
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00047 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0004e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00053 90 npad 1
; 4656 : int i, k = 0;
00054 c7 45 24 00 00
00 00 mov DWORD PTR k$[rbp], 0
; 4657 : int code, next_code[16], sizes[17];
; 4658 :
; 4659 : // DEFLATE spec for generating codes
; 4660 : memset(sizes, 0, sizeof(sizes));
0005b 41 b8 44 00 00
00 mov r8d, 68 ; 00000044H
00061 33 d2 xor edx, edx
00063 48 8d 8d d0 00
00 00 lea rcx, QWORD PTR sizes$[rbp]
0006a e8 00 00 00 00 call memset
0006f 90 npad 1
; 4661 : memset(z->fast, 0, sizeof(z->fast));
00070 48 8b 85 90 02
00 00 mov rax, QWORD PTR z$[rbp]
00077 41 b8 00 04 00
00 mov r8d, 1024 ; 00000400H
0007d 33 d2 xor edx, edx
0007f 48 8b c8 mov rcx, rax
00082 e8 00 00 00 00 call memset
00087 90 npad 1
; 4662 : for (i = 0; i < num; ++i)
00088 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
0008f eb 08 jmp SHORT $LN4@stbi__zbui
$LN2@stbi__zbui:
00091 8b 45 04 mov eax, DWORD PTR i$[rbp]
00094 ff c0 inc eax
00096 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__zbui:
00099 8b 85 a0 02 00
00 mov eax, DWORD PTR num$[rbp]
0009f 39 45 04 cmp DWORD PTR i$[rbp], eax
000a2 7d 30 jge SHORT $LN3@stbi__zbui
; 4663 : ++sizes[sizelist[i]];
000a4 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000a8 48 8b 8d 98 02
00 00 mov rcx, QWORD PTR sizelist$[rbp]
000af 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000b3 8b 84 85 d0 00
00 00 mov eax, DWORD PTR sizes$[rbp+rax*4]
000ba ff c0 inc eax
000bc 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
000c0 48 8b 95 98 02
00 00 mov rdx, QWORD PTR sizelist$[rbp]
000c7 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000cb 89 84 8d d0 00
00 00 mov DWORD PTR sizes$[rbp+rcx*4], eax
000d2 eb bd jmp SHORT $LN2@stbi__zbui
$LN3@stbi__zbui:
; 4664 : sizes[0] = 0;
000d4 b8 04 00 00 00 mov eax, 4
000d9 48 6b c0 00 imul rax, rax, 0
000dd c7 84 05 d0 00
00 00 00 00 00
00 mov DWORD PTR sizes$[rbp+rax], 0
; 4665 : for (i = 1; i < 16; ++i)
000e8 c7 45 04 01 00
00 00 mov DWORD PTR i$[rbp], 1
000ef eb 08 jmp SHORT $LN7@stbi__zbui
$LN5@stbi__zbui:
000f1 8b 45 04 mov eax, DWORD PTR i$[rbp]
000f4 ff c0 inc eax
000f6 89 45 04 mov DWORD PTR i$[rbp], eax
$LN7@stbi__zbui:
000f9 83 7d 04 10 cmp DWORD PTR i$[rbp], 16
000fd 7d 2c jge SHORT $LN6@stbi__zbui
; 4666 : if (sizes[i] > (1 << i))
000ff 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00103 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00106 ba 01 00 00 00 mov edx, 1
0010b d3 e2 shl edx, cl
0010d 8b ca mov ecx, edx
0010f 39 8c 85 d0 00
00 00 cmp DWORD PTR sizes$[rbp+rax*4], ecx
00116 7e 11 jle SHORT $LN16@stbi__zbui
; 4667 : return stbi__err("bad sizes", "Corrupt PNG");
00118 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09EOHLEIKL@bad?5sizes@
0011f e8 00 00 00 00 call stbi__err
00124 e9 6b 02 00 00 jmp $LN1@stbi__zbui
$LN16@stbi__zbui:
00129 eb c6 jmp SHORT $LN5@stbi__zbui
$LN6@stbi__zbui:
; 4668 : code = 0;
0012b c7 45 44 00 00
00 00 mov DWORD PTR code$[rbp], 0
; 4669 : for (i = 1; i < 16; ++i) {
00132 c7 45 04 01 00
00 00 mov DWORD PTR i$[rbp], 1
00139 eb 08 jmp SHORT $LN10@stbi__zbui
$LN8@stbi__zbui:
0013b 8b 45 04 mov eax, DWORD PTR i$[rbp]
0013e ff c0 inc eax
00140 89 45 04 mov DWORD PTR i$[rbp], eax
$LN10@stbi__zbui:
00143 83 7d 04 10 cmp DWORD PTR i$[rbp], 16
00147 0f 8d c6 00 00
00 jge $LN9@stbi__zbui
; 4670 : next_code[i] = code;
0014d 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00151 8b 4d 44 mov ecx, DWORD PTR code$[rbp]
00154 89 4c 85 70 mov DWORD PTR next_code$[rbp+rax*4], ecx
; 4671 : z->firstcode[i] = (stbi__uint16)code;
00158 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0015c 48 8b 8d 90 02
00 00 mov rcx, QWORD PTR z$[rbp]
00163 0f b7 55 44 movzx edx, WORD PTR code$[rbp]
00167 66 89 94 41 00
04 00 00 mov WORD PTR [rcx+rax*2+1024], dx
; 4672 : z->firstsymbol[i] = (stbi__uint16)k;
0016f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00173 48 8b 8d 90 02
00 00 mov rcx, QWORD PTR z$[rbp]
0017a 0f b7 55 24 movzx edx, WORD PTR k$[rbp]
0017e 66 89 94 41 64
04 00 00 mov WORD PTR [rcx+rax*2+1124], dx
; 4673 : code = (code + sizes[i]);
00186 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0018a 8b 84 85 d0 00
00 00 mov eax, DWORD PTR sizes$[rbp+rax*4]
00191 8b 4d 44 mov ecx, DWORD PTR code$[rbp]
00194 03 c8 add ecx, eax
00196 8b c1 mov eax, ecx
00198 89 45 44 mov DWORD PTR code$[rbp], eax
; 4674 : if (sizes[i])
0019b 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0019f 83 bc 85 d0 00
00 00 00 cmp DWORD PTR sizes$[rbp+rax*4], 0
001a7 74 26 je SHORT $LN17@stbi__zbui
; 4675 : if (code - 1 >= (1 << i))
001a9 8b 45 44 mov eax, DWORD PTR code$[rbp]
001ac ff c8 dec eax
001ae 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
001b1 ba 01 00 00 00 mov edx, 1
001b6 d3 e2 shl edx, cl
001b8 8b ca mov ecx, edx
001ba 3b c1 cmp eax, ecx
001bc 7c 11 jl SHORT $LN18@stbi__zbui
; 4676 : return stbi__err("bad codelengths", "Corrupt PNG");
001be 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
001c5 e8 00 00 00 00 call stbi__err
001ca e9 c5 01 00 00 jmp $LN1@stbi__zbui
$LN18@stbi__zbui:
$LN17@stbi__zbui:
; 4677 : z->maxcode[i] = code << (16 - i); // preshift for inner loop
001cf b8 10 00 00 00 mov eax, 16
001d4 2b 45 04 sub eax, DWORD PTR i$[rbp]
001d7 0f b6 c8 movzx ecx, al
001da 8b 45 44 mov eax, DWORD PTR code$[rbp]
001dd d3 e0 shl eax, cl
001df 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
001e3 48 8b 95 90 02
00 00 mov rdx, QWORD PTR z$[rbp]
001ea 89 84 8a 20 04
00 00 mov DWORD PTR [rdx+rcx*4+1056], eax
; 4678 : code <<= 1;
001f1 8b 45 44 mov eax, DWORD PTR code$[rbp]
001f4 d1 e0 shl eax, 1
001f6 89 45 44 mov DWORD PTR code$[rbp], eax
; 4679 : k += sizes[i];
001f9 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
001fd 8b 84 85 d0 00
00 00 mov eax, DWORD PTR sizes$[rbp+rax*4]
00204 8b 4d 24 mov ecx, DWORD PTR k$[rbp]
00207 03 c8 add ecx, eax
00209 8b c1 mov eax, ecx
0020b 89 45 24 mov DWORD PTR k$[rbp], eax
; 4680 : }
0020e e9 28 ff ff ff jmp $LN8@stbi__zbui
$LN9@stbi__zbui:
; 4681 : z->maxcode[16] = 0x10000; // sentinel
00213 b8 04 00 00 00 mov eax, 4
00218 48 6b c0 10 imul rax, rax, 16
0021c 48 8b 8d 90 02
00 00 mov rcx, QWORD PTR z$[rbp]
00223 c7 84 01 20 04
00 00 00 00 01
00 mov DWORD PTR [rcx+rax+1056], 65536 ; 00010000H
; 4682 : for (i = 0; i < num; ++i) {
0022e c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00235 eb 08 jmp SHORT $LN13@stbi__zbui
$LN11@stbi__zbui:
00237 8b 45 04 mov eax, DWORD PTR i$[rbp]
0023a ff c0 inc eax
0023c 89 45 04 mov DWORD PTR i$[rbp], eax
$LN13@stbi__zbui:
0023f 8b 85 a0 02 00
00 mov eax, DWORD PTR num$[rbp]
00245 39 45 04 cmp DWORD PTR i$[rbp], eax
00248 0f 8d 41 01 00
00 jge $LN12@stbi__zbui
; 4683 : int s = sizelist[i];
0024e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00252 48 8b 8d 98 02
00 00 mov rcx, QWORD PTR sizelist$[rbp]
00259 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0025d 89 85 34 01 00
00 mov DWORD PTR s$5[rbp], eax
; 4684 : if (s) {
00263 83 bd 34 01 00
00 00 cmp DWORD PTR s$5[rbp], 0
0026a 0f 84 1a 01 00
00 je $LN19@stbi__zbui
; 4685 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s];
00270 48 63 85 34 01
00 00 movsxd rax, DWORD PTR s$5[rbp]
00277 48 63 8d 34 01
00 00 movsxd rcx, DWORD PTR s$5[rbp]
0027e 48 8b 95 90 02
00 00 mov rdx, QWORD PTR z$[rbp]
00285 0f b7 8c 4a 00
04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1024]
0028d 8b 44 85 70 mov eax, DWORD PTR next_code$[rbp+rax*4]
00291 2b c1 sub eax, ecx
00293 48 63 8d 34 01
00 00 movsxd rcx, DWORD PTR s$5[rbp]
0029a 48 8b 95 90 02
00 00 mov rdx, QWORD PTR z$[rbp]
002a1 0f b7 8c 4a 64
04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1124]
002a9 03 c1 add eax, ecx
002ab 89 85 54 01 00
00 mov DWORD PTR c$6[rbp], eax
; 4686 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i);
002b1 8b 85 34 01 00
00 mov eax, DWORD PTR s$5[rbp]
002b7 c1 e0 09 shl eax, 9
002ba 0b 45 04 or eax, DWORD PTR i$[rbp]
002bd 66 89 85 74 01
00 00 mov WORD PTR fastv$7[rbp], ax
; 4687 : z->size[c] = (stbi_uc)s;
002c4 48 63 85 54 01
00 00 movsxd rax, DWORD PTR c$6[rbp]
002cb 48 8b 8d 90 02
00 00 mov rcx, QWORD PTR z$[rbp]
002d2 0f b6 95 34 01
00 00 movzx edx, BYTE PTR s$5[rbp]
002d9 88 94 01 84 04
00 00 mov BYTE PTR [rcx+rax+1156], dl
; 4688 : z->value[c] = (stbi__uint16)i;
002e0 48 63 85 54 01
00 00 movsxd rax, DWORD PTR c$6[rbp]
002e7 48 8b 8d 90 02
00 00 mov rcx, QWORD PTR z$[rbp]
002ee 0f b7 55 04 movzx edx, WORD PTR i$[rbp]
002f2 66 89 94 41 a4
05 00 00 mov WORD PTR [rcx+rax*2+1444], dx
; 4689 : if (s <= STBI__ZFAST_BITS) {
002fa 83 bd 34 01 00
00 09 cmp DWORD PTR s$5[rbp], 9
00301 7f 6f jg SHORT $LN20@stbi__zbui
; 4690 : int j = stbi__bit_reverse(next_code[s], s);
00303 48 63 85 34 01
00 00 movsxd rax, DWORD PTR s$5[rbp]
0030a 8b 95 34 01 00
00 mov edx, DWORD PTR s$5[rbp]
00310 8b 4c 85 70 mov ecx, DWORD PTR next_code$[rbp+rax*4]
00314 e8 00 00 00 00 call stbi__bit_reverse
00319 89 85 94 01 00
00 mov DWORD PTR j$8[rbp], eax
$LN14@stbi__zbui:
; 4691 : while (j < (1 << STBI__ZFAST_BITS)) {
0031f 81 bd 94 01 00
00 00 02 00 00 cmp DWORD PTR j$8[rbp], 512 ; 00000200H
00329 7d 47 jge SHORT $LN15@stbi__zbui
; 4692 : z->fast[j] = fastv;
0032b 48 63 85 94 01
00 00 movsxd rax, DWORD PTR j$8[rbp]
00332 48 8b 8d 90 02
00 00 mov rcx, QWORD PTR z$[rbp]
00339 0f b7 95 74 01
00 00 movzx edx, WORD PTR fastv$7[rbp]
00340 66 89 14 41 mov WORD PTR [rcx+rax*2], dx
; 4693 : j += (1 << s);
00344 8b 85 34 01 00
00 mov eax, DWORD PTR s$5[rbp]
0034a b9 01 00 00 00 mov ecx, 1
0034f 89 8d 64 02 00
00 mov DWORD PTR tv289[rbp], ecx
00355 0f b6 c8 movzx ecx, al
00358 8b 85 64 02 00
00 mov eax, DWORD PTR tv289[rbp]
0035e d3 e0 shl eax, cl
00360 8b 8d 94 01 00
00 mov ecx, DWORD PTR j$8[rbp]
00366 03 c8 add ecx, eax
00368 8b c1 mov eax, ecx
0036a 89 85 94 01 00
00 mov DWORD PTR j$8[rbp], eax
; 4694 : }
00370 eb ad jmp SHORT $LN14@stbi__zbui
$LN15@stbi__zbui:
$LN20@stbi__zbui:
; 4695 : }
; 4696 : ++next_code[s];
00372 48 63 85 34 01
00 00 movsxd rax, DWORD PTR s$5[rbp]
00379 8b 44 85 70 mov eax, DWORD PTR next_code$[rbp+rax*4]
0037d ff c0 inc eax
0037f 48 63 8d 34 01
00 00 movsxd rcx, DWORD PTR s$5[rbp]
00386 89 44 8d 70 mov DWORD PTR next_code$[rbp+rcx*4], eax
$LN19@stbi__zbui:
; 4697 : }
; 4698 : }
0038a e9 a8 fe ff ff jmp $LN11@stbi__zbui
$LN12@stbi__zbui:
; 4699 : return 1;
0038f b8 01 00 00 00 mov eax, 1
$LN1@stbi__zbui:
; 4700 : }
00394 48 8b f8 mov rdi, rax
00397 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0039b 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__zbuild_huffman$rtcFrameData
003a2 e8 00 00 00 00 call _RTC_CheckStackVars
003a7 48 8b c7 mov rax, rdi
003aa 48 8b 8d 68 02
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
003b1 48 33 cd xor rcx, rbp
003b4 e8 00 00 00 00 call __security_check_cookie
003b9 48 8d a5 78 02
00 00 lea rsp, QWORD PTR [rbp+632]
003c0 5f pop rdi
003c1 5d pop rbp
003c2 c3 ret 0
stbi__zbuild_huffman ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bit_reverse
_TEXT SEGMENT
v$ = 224
bits$ = 232
stbi__bit_reverse PROC ; COMDAT
; 4647 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00008 55 push rbp
00009 57 push rdi
0000a 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00016 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00022 90 npad 1
; 4648 : STBI_ASSERT(bits <= 16);
00023 83 bd e8 00 00
00 10 cmp DWORD PTR bits$[rbp], 16
0002a 7e 1c jle SHORT $LN3@stbi__bit_
0002c 41 b8 28 12 00
00 mov r8d, 4648 ; 00001228H
00032 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00039 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@
00040 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00046 33 c0 xor eax, eax
$LN3@stbi__bit_:
; 4649 : // to bit reverse n bits, reverse 16 and shift
; 4650 : // e.g. 11 bits, bit reverse and shift away 5
; 4651 : return stbi__bitreverse16(v) >> (16 - bits);
00048 8b 8d e0 00 00
00 mov ecx, DWORD PTR v$[rbp]
0004e e8 00 00 00 00 call stbi__bitreverse16
00053 b9 10 00 00 00 mov ecx, 16
00058 2b 8d e8 00 00
00 sub ecx, DWORD PTR bits$[rbp]
0005e d3 f8 sar eax, cl
; 4652 : }
00060 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00067 5f pop rdi
00068 5d pop rbp
00069 c3 ret 0
stbi__bit_reverse ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bitreverse16
_TEXT SEGMENT
n$ = 224
stbi__bitreverse16 PROC ; COMDAT
; 4638 : {
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 4639 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1);
0001f 8b 85 e0 00 00
00 mov eax, DWORD PTR n$[rbp]
00025 25 aa aa 00 00 and eax, 43690 ; 0000aaaaH
0002a d1 f8 sar eax, 1
0002c 8b 8d e0 00 00
00 mov ecx, DWORD PTR n$[rbp]
00032 81 e1 55 55 00
00 and ecx, 21845 ; 00005555H
00038 d1 e1 shl ecx, 1
0003a 0b c1 or eax, ecx
0003c 89 85 e0 00 00
00 mov DWORD PTR n$[rbp], eax
; 4640 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2);
00042 8b 85 e0 00 00
00 mov eax, DWORD PTR n$[rbp]
00048 25 cc cc 00 00 and eax, 52428 ; 0000ccccH
0004d c1 f8 02 sar eax, 2
00050 8b 8d e0 00 00
00 mov ecx, DWORD PTR n$[rbp]
00056 81 e1 33 33 00
00 and ecx, 13107 ; 00003333H
0005c c1 e1 02 shl ecx, 2
0005f 0b c1 or eax, ecx
00061 89 85 e0 00 00
00 mov DWORD PTR n$[rbp], eax
; 4641 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4);
00067 8b 85 e0 00 00
00 mov eax, DWORD PTR n$[rbp]
0006d 25 f0 f0 00 00 and eax, 61680 ; 0000f0f0H
00072 c1 f8 04 sar eax, 4
00075 8b 8d e0 00 00
00 mov ecx, DWORD PTR n$[rbp]
0007b 81 e1 0f 0f 00
00 and ecx, 3855 ; 00000f0fH
00081 c1 e1 04 shl ecx, 4
00084 0b c1 or eax, ecx
00086 89 85 e0 00 00
00 mov DWORD PTR n$[rbp], eax
; 4642 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8);
0008c 8b 85 e0 00 00
00 mov eax, DWORD PTR n$[rbp]
00092 25 00 ff 00 00 and eax, 65280 ; 0000ff00H
00097 c1 f8 08 sar eax, 8
0009a 8b 8d e0 00 00
00 mov ecx, DWORD PTR n$[rbp]
000a0 81 e1 ff 00 00
00 and ecx, 255 ; 000000ffH
000a6 c1 e1 08 shl ecx, 8
000a9 0b c1 or eax, ecx
000ab 89 85 e0 00 00
00 mov DWORD PTR n$[rbp], eax
; 4643 : return n;
000b1 8b 85 e0 00 00
00 mov eax, DWORD PTR n$[rbp]
; 4644 : }
000b7 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
000be 5f pop rdi
000bf 5d pop rbp
000c0 c3 ret 0
stbi__bitreverse16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_info_raw
_TEXT SEGMENT
tv80 = 192
j$ = 240
x$ = 248
y$ = 256
comp$ = 264
stbi__jpeg_info_raw PROC ; COMDAT
; 4584 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 4585 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) {
0002f ba 02 00 00 00 mov edx, 2
00034 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR j$[rbp]
0003b e8 00 00 00 00 call stbi__decode_jpeg_header
00040 85 c0 test eax, eax
00042 75 17 jne SHORT $LN2@stbi__jpeg
; 4586 : stbi__rewind(j->s);
00044 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
0004b 48 8b 08 mov rcx, QWORD PTR [rax]
0004e e8 00 00 00 00 call stbi__rewind
00053 90 npad 1
; 4587 : return 0;
00054 33 c0 xor eax, eax
00056 e9 83 00 00 00 jmp $LN1@stbi__jpeg
$LN2@stbi__jpeg:
; 4588 : }
; 4589 : if (x)
0005b 48 83 bd f8 00
00 00 00 cmp QWORD PTR x$[rbp], 0
00063 74 15 je SHORT $LN3@stbi__jpeg
; 4590 : *x = j->s->img_x;
00065 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
0006c 48 8b 00 mov rax, QWORD PTR [rax]
0006f 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR x$[rbp]
00076 8b 00 mov eax, DWORD PTR [rax]
00078 89 01 mov DWORD PTR [rcx], eax
$LN3@stbi__jpeg:
; 4591 : if (y)
0007a 48 83 bd 00 01
00 00 00 cmp QWORD PTR y$[rbp], 0
00082 74 16 je SHORT $LN4@stbi__jpeg
; 4592 : *y = j->s->img_y;
00084 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
0008b 48 8b 00 mov rax, QWORD PTR [rax]
0008e 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR y$[rbp]
00095 8b 40 04 mov eax, DWORD PTR [rax+4]
00098 89 01 mov DWORD PTR [rcx], eax
$LN4@stbi__jpeg:
; 4593 : if (comp)
0009a 48 83 bd 08 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
000a2 74 35 je SHORT $LN5@stbi__jpeg
; 4594 : *comp = j->s->img_n >= 3 ? 3 : 1;
000a4 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
000ab 48 8b 00 mov rax, QWORD PTR [rax]
000ae 83 78 08 03 cmp DWORD PTR [rax+8], 3
000b2 7c 0c jl SHORT $LN7@stbi__jpeg
000b4 c7 85 c0 00 00
00 03 00 00 00 mov DWORD PTR tv80[rbp], 3
000be eb 0a jmp SHORT $LN8@stbi__jpeg
$LN7@stbi__jpeg:
000c0 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv80[rbp], 1
$LN8@stbi__jpeg:
000ca 48 8b 85 08 01
00 00 mov rax, QWORD PTR comp$[rbp]
000d1 8b 8d c0 00 00
00 mov ecx, DWORD PTR tv80[rbp]
000d7 89 08 mov DWORD PTR [rax], ecx
$LN5@stbi__jpeg:
; 4595 : return 1;
000d9 b8 01 00 00 00 mov eax, 1
$LN1@stbi__jpeg:
; 4596 : }
000de 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000e5 5f pop rdi
000e6 5d pop rbp
000e7 c3 ret 0
stbi__jpeg_info_raw ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT load_jpeg_image
_TEXT SEGMENT
n$ = 4
decode_n$ = 36
is_rgb$ = 68
k$5 = 100
i$6 = 132
j$7 = 164
output$8 = 200
coutput$9 = 232
res_comp$10 = 304
r$11 = 520
out$12 = 552
r$13 = 584
y_bot$14 = 612
y$15 = 648
m$16 = 676
m$17 = 708
m$18 = 740
r$19 = 772
g$20 = 804
b$21 = 836
y$22 = 872
tv656 = 1268
tv694 = 1268
tv81 = 1268
tv91 = 1268
tv252 = 1268
tv280 = 1268
tv288 = 1268
tv516 = 1268
tv545 = 1268
tv626 = 1268
tv79 = 1272
tv265 = 1272
tv71 = 1272
tv159 = 1272
tv164 = 1272
tv172 = 1272
tv232 = 1272
tv270 = 1280
__$ArrayPad$ = 1288
z$ = 1328
out_x$ = 1336
out_y$ = 1344
comp$ = 1352
req_comp$ = 1360
load_jpeg_image PROC ; COMDAT
; 4359 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 05
00 00 sub rsp, 1352 ; 00000548H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 e6 00 00 00 mov ecx, 230 ; 000000e6H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 68
05 00 00 mov rcx, QWORD PTR [rsp+1384]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 08 05
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 4360 : int n, decode_n, is_rgb;
; 4361 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe
00059 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00060 48 8b 00 mov rax, QWORD PTR [rax]
00063 c7 40 08 00 00
00 00 mov DWORD PTR [rax+8], 0
; 4362 :
; 4363 : // validate req_comp
; 4364 : if (req_comp < 0 || req_comp > 4)
0006a 83 bd 50 05 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
00071 7c 09 jl SHORT $LN42@load_jpeg_
00073 83 bd 50 05 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
0007a 7e 34 jle SHORT $LN41@load_jpeg_
$LN42@load_jpeg_:
; 4365 : return stbi__errpuc("bad req_comp", "Internal error");
0007c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@
00083 e8 00 00 00 00 call stbi__err
00088 85 c0 test eax, eax
0008a 74 0d je SHORT $LN83@load_jpeg_
0008c 48 c7 85 f8 04
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
00097 eb 0b jmp SHORT $LN84@load_jpeg_
$LN83@load_jpeg_:
00099 48 c7 85 f8 04
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
$LN84@load_jpeg_:
000a4 48 8b 85 f8 04
00 00 mov rax, QWORD PTR tv71[rbp]
000ab e9 fa 11 00 00 jmp $LN1@load_jpeg_
$LN41@load_jpeg_:
; 4366 :
; 4367 : // load a jpeg image from whichever source, but leave in YCbCr format
; 4368 : if (!stbi__decode_jpeg_image(z)) {
000b0 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
000b7 e8 00 00 00 00 call stbi__decode_jpeg_image
000bc 85 c0 test eax, eax
000be 75 14 jne SHORT $LN43@load_jpeg_
; 4369 : stbi__cleanup_jpeg(z);
000c0 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
000c7 e8 00 00 00 00 call stbi__cleanup_jpeg
000cc 90 npad 1
; 4370 : return NULL;
000cd 33 c0 xor eax, eax
000cf e9 d6 11 00 00 jmp $LN1@load_jpeg_
$LN43@load_jpeg_:
; 4371 : }
; 4372 :
; 4373 : // determine actual number of components to generate
; 4374 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1;
000d4 83 bd 50 05 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
000db 74 0e je SHORT $LN87@load_jpeg_
000dd 8b 85 50 05 00
00 mov eax, DWORD PTR req_comp$[rbp]
000e3 89 85 f4 04 00
00 mov DWORD PTR tv81[rbp], eax
000e9 eb 32 jmp SHORT $LN88@load_jpeg_
$LN87@load_jpeg_:
000eb 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
000f2 48 8b 00 mov rax, QWORD PTR [rax]
000f5 83 78 08 03 cmp DWORD PTR [rax+8], 3
000f9 7c 0c jl SHORT $LN85@load_jpeg_
000fb c7 85 f8 04 00
00 03 00 00 00 mov DWORD PTR tv79[rbp], 3
00105 eb 0a jmp SHORT $LN86@load_jpeg_
$LN85@load_jpeg_:
00107 c7 85 f8 04 00
00 01 00 00 00 mov DWORD PTR tv79[rbp], 1
$LN86@load_jpeg_:
00111 8b 85 f8 04 00
00 mov eax, DWORD PTR tv79[rbp]
00117 89 85 f4 04 00
00 mov DWORD PTR tv81[rbp], eax
$LN88@load_jpeg_:
0011d 8b 85 f4 04 00
00 mov eax, DWORD PTR tv81[rbp]
00123 89 45 04 mov DWORD PTR n$[rbp], eax
; 4375 :
; 4376 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif));
00126 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0012d 48 8b 00 mov rax, QWORD PTR [rax]
00130 83 78 08 03 cmp DWORD PTR [rax+8], 3
00134 75 3c jne SHORT $LN91@load_jpeg_
00136 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0013d 83 b8 50 48 00
00 03 cmp DWORD PTR [rax+18512], 3
00144 74 20 je SHORT $LN90@load_jpeg_
00146 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0014d 83 b8 4c 48 00
00 00 cmp DWORD PTR [rax+18508], 0
00154 75 1c jne SHORT $LN89@load_jpeg_
00156 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0015d 83 b8 48 48 00
00 00 cmp DWORD PTR [rax+18504], 0
00164 75 0c jne SHORT $LN91@load_jpeg_
$LN90@load_jpeg_:
00166 c7 85 f4 04 00
00 01 00 00 00 mov DWORD PTR tv91[rbp], 1
00170 eb 0a jmp SHORT $LN92@load_jpeg_
$LN91@load_jpeg_:
$LN89@load_jpeg_:
00172 c7 85 f4 04 00
00 00 00 00 00 mov DWORD PTR tv91[rbp], 0
$LN92@load_jpeg_:
0017c 8b 85 f4 04 00
00 mov eax, DWORD PTR tv91[rbp]
00182 89 45 44 mov DWORD PTR is_rgb$[rbp], eax
; 4377 :
; 4378 : if (z->s->img_n == 3 && n < 3 && !is_rgb)
00185 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0018c 48 8b 00 mov rax, QWORD PTR [rax]
0018f 83 78 08 03 cmp DWORD PTR [rax+8], 3
00193 75 15 jne SHORT $LN44@load_jpeg_
00195 83 7d 04 03 cmp DWORD PTR n$[rbp], 3
00199 7d 0f jge SHORT $LN44@load_jpeg_
0019b 83 7d 44 00 cmp DWORD PTR is_rgb$[rbp], 0
0019f 75 09 jne SHORT $LN44@load_jpeg_
; 4379 : decode_n = 1;
001a1 c7 45 24 01 00
00 00 mov DWORD PTR decode_n$[rbp], 1
001a8 eb 10 jmp SHORT $LN45@load_jpeg_
$LN44@load_jpeg_:
; 4380 : else
; 4381 : decode_n = z->s->img_n;
001aa 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
001b1 48 8b 00 mov rax, QWORD PTR [rax]
001b4 8b 40 08 mov eax, DWORD PTR [rax+8]
001b7 89 45 24 mov DWORD PTR decode_n$[rbp], eax
$LN45@load_jpeg_:
; 4382 :
; 4383 : // nothing to do if no components requested; check this now to avoid
; 4384 : // accessing uninitialized coutput[0] later
; 4385 : if (decode_n <= 0) {
001ba 83 7d 24 00 cmp DWORD PTR decode_n$[rbp], 0
001be 7f 14 jg SHORT $LN46@load_jpeg_
; 4386 : stbi__cleanup_jpeg(z);
001c0 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
001c7 e8 00 00 00 00 call stbi__cleanup_jpeg
001cc 90 npad 1
; 4387 : return NULL;
001cd 33 c0 xor eax, eax
001cf e9 d6 10 00 00 jmp $LN1@load_jpeg_
$LN46@load_jpeg_:
; 4388 : }
; 4389 :
; 4390 : // resample and color-convert
; 4391 : {
; 4392 : int k;
; 4393 : unsigned int i, j;
; 4394 : stbi_uc *output;
; 4395 : stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL };
001d4 48 c7 85 e8 00
00 00 00 00 00
00 mov QWORD PTR coutput$9[rbp], 0
001df 48 c7 85 f0 00
00 00 00 00 00
00 mov QWORD PTR coutput$9[rbp+8], 0
001ea 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR coutput$9[rbp+16], 0
001f5 48 c7 85 00 01
00 00 00 00 00
00 mov QWORD PTR coutput$9[rbp+24], 0
; 4396 :
; 4397 : stbi__resample res_comp[4];
; 4398 :
; 4399 : for (k = 0; k < decode_n; ++k) {
00200 c7 45 64 00 00
00 00 mov DWORD PTR k$5[rbp], 0
00207 eb 08 jmp SHORT $LN4@load_jpeg_
$LN2@load_jpeg_:
00209 8b 45 64 mov eax, DWORD PTR k$5[rbp]
0020c ff c0 inc eax
0020e 89 45 64 mov DWORD PTR k$5[rbp], eax
$LN4@load_jpeg_:
00211 8b 45 24 mov eax, DWORD PTR decode_n$[rbp]
00214 39 45 64 cmp DWORD PTR k$5[rbp], eax
00217 0f 8d 7b 02 00
00 jge $LN3@load_jpeg_
; 4400 : stbi__resample *r = &res_comp[k];
0021d 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
00221 48 6b c0 30 imul rax, rax, 48 ; 00000030H
00225 48 8d 84 05 30
01 00 00 lea rax, QWORD PTR res_comp$10[rbp+rax]
0022d 48 89 85 08 02
00 00 mov QWORD PTR r$11[rbp], rax
; 4401 :
; 4402 : // allocate line buffer big enough for upsampling off the edges
; 4403 : // with upsample factor of 4
; 4404 : z->img_comp[k].linebuf = (stbi_uc *)stbi__malloc(z->s->img_x + 3);
00234 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0023b 48 8b 00 mov rax, QWORD PTR [rax]
0023e 8b 00 mov eax, DWORD PTR [rax]
00240 83 c0 03 add eax, 3
00243 8b c0 mov eax, eax
00245 8b c8 mov ecx, eax
00247 e8 00 00 00 00 call stbi__malloc
0024c 48 63 4d 64 movsxd rcx, DWORD PTR k$5[rbp]
00250 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00254 48 8b 95 30 05
00 00 mov rdx, QWORD PTR z$[rbp]
0025b 48 89 84 0a e8
46 00 00 mov QWORD PTR [rdx+rcx+18152], rax
; 4405 : if (!z->img_comp[k].linebuf) {
00263 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
00267 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0026b 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
00272 48 83 bc 01 e8
46 00 00 00 cmp QWORD PTR [rcx+rax+18152], 0
0027b 75 41 jne SHORT $LN47@load_jpeg_
; 4406 : stbi__cleanup_jpeg(z);
0027d 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
00284 e8 00 00 00 00 call stbi__cleanup_jpeg
00289 90 npad 1
; 4407 : return stbi__errpuc("outofmem", "Out of memory");
0028a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00291 e8 00 00 00 00 call stbi__err
00296 85 c0 test eax, eax
00298 74 0d je SHORT $LN93@load_jpeg_
0029a 48 c7 85 f8 04
00 00 00 00 00
00 mov QWORD PTR tv159[rbp], 0
002a5 eb 0b jmp SHORT $LN94@load_jpeg_
$LN93@load_jpeg_:
002a7 48 c7 85 f8 04
00 00 00 00 00
00 mov QWORD PTR tv159[rbp], 0
$LN94@load_jpeg_:
002b2 48 8b 85 f8 04
00 00 mov rax, QWORD PTR tv159[rbp]
002b9 e9 ec 0f 00 00 jmp $LN1@load_jpeg_
$LN47@load_jpeg_:
; 4408 : }
; 4409 :
; 4410 : r->hs = z->img_h_max / z->img_comp[k].h;
002be 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
002c2 48 6b c0 60 imul rax, rax, 96 ; 00000060H
002c6 48 89 85 f8 04
00 00 mov QWORD PTR tv164[rbp], rax
002cd 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
002d4 8b 81 88 46 00
00 mov eax, DWORD PTR [rcx+18056]
002da 99 cdq
002db 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
002e2 4c 8b 85 f8 04
00 00 mov r8, QWORD PTR tv164[rbp]
002e9 42 f7 bc 01 a4
46 00 00 idiv DWORD PTR [rcx+r8+18084]
002f1 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
002f8 89 41 18 mov DWORD PTR [rcx+24], eax
; 4411 : r->vs = z->img_v_max / z->img_comp[k].v;
002fb 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
002ff 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00303 48 89 85 f8 04
00 00 mov QWORD PTR tv172[rbp], rax
0030a 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
00311 8b 81 8c 46 00
00 mov eax, DWORD PTR [rcx+18060]
00317 99 cdq
00318 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
0031f 4c 8b 85 f8 04
00 00 mov r8, QWORD PTR tv172[rbp]
00326 42 f7 bc 01 a8
46 00 00 idiv DWORD PTR [rcx+r8+18088]
0032e 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
00335 89 41 1c mov DWORD PTR [rcx+28], eax
; 4412 : r->ystep = r->vs >> 1;
00338 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
0033f 8b 40 1c mov eax, DWORD PTR [rax+28]
00342 d1 f8 sar eax, 1
00344 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
0034b 89 41 24 mov DWORD PTR [rcx+36], eax
; 4413 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs;
0034e 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00355 48 8b 00 mov rax, QWORD PTR [rax]
00358 8b 00 mov eax, DWORD PTR [rax]
0035a 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
00361 8b 49 18 mov ecx, DWORD PTR [rcx+24]
00364 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
00368 33 d2 xor edx, edx
0036a 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
00371 f7 71 18 div DWORD PTR [rcx+24]
00374 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
0037b 89 41 20 mov DWORD PTR [rcx+32], eax
; 4414 : r->ypos = 0;
0037e 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00385 c7 40 28 00 00
00 00 mov DWORD PTR [rax+40], 0
; 4415 : r->line0 = r->line1 = z->img_comp[k].data;
0038c 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
00390 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00394 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
0039b 48 8b 95 30 05
00 00 mov rdx, QWORD PTR z$[rbp]
003a2 48 8b 84 02 d0
46 00 00 mov rax, QWORD PTR [rdx+rax+18128]
003aa 48 89 41 10 mov QWORD PTR [rcx+16], rax
003ae 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
003b5 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR r$11[rbp]
003bc 48 8b 49 10 mov rcx, QWORD PTR [rcx+16]
003c0 48 89 48 08 mov QWORD PTR [rax+8], rcx
; 4416 :
; 4417 : if (r->hs == 1 && r->vs == 1)
003c4 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
003cb 83 78 18 01 cmp DWORD PTR [rax+24], 1
003cf 75 23 jne SHORT $LN48@load_jpeg_
003d1 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
003d8 83 78 1c 01 cmp DWORD PTR [rax+28], 1
003dc 75 16 jne SHORT $LN48@load_jpeg_
; 4418 : r->resample = resample_row_1;
003de 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
003e5 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:resample_row_1
003ec 48 89 08 mov QWORD PTR [rax], rcx
003ef e9 9f 00 00 00 jmp $LN49@load_jpeg_
$LN48@load_jpeg_:
; 4419 : else if (r->hs == 1 && r->vs == 2)
003f4 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
003fb 83 78 18 01 cmp DWORD PTR [rax+24], 1
003ff 75 20 jne SHORT $LN50@load_jpeg_
00401 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00408 83 78 1c 02 cmp DWORD PTR [rax+28], 2
0040c 75 13 jne SHORT $LN50@load_jpeg_
; 4420 : r->resample = stbi__resample_row_v_2;
0040e 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00415 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__resample_row_v_2
0041c 48 89 08 mov QWORD PTR [rax], rcx
0041f eb 72 jmp SHORT $LN51@load_jpeg_
$LN50@load_jpeg_:
; 4421 : else if (r->hs == 2 && r->vs == 1)
00421 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00428 83 78 18 02 cmp DWORD PTR [rax+24], 2
0042c 75 20 jne SHORT $LN52@load_jpeg_
0042e 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00435 83 78 1c 01 cmp DWORD PTR [rax+28], 1
00439 75 13 jne SHORT $LN52@load_jpeg_
; 4422 : r->resample = stbi__resample_row_h_2;
0043b 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00442 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__resample_row_h_2
00449 48 89 08 mov QWORD PTR [rax], rcx
0044c eb 45 jmp SHORT $LN53@load_jpeg_
$LN52@load_jpeg_:
; 4423 : else if (r->hs == 2 && r->vs == 2)
0044e 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00455 83 78 18 02 cmp DWORD PTR [rax+24], 2
00459 75 27 jne SHORT $LN54@load_jpeg_
0045b 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00462 83 78 1c 02 cmp DWORD PTR [rax+28], 2
00466 75 1a jne SHORT $LN54@load_jpeg_
; 4424 : r->resample = z->resample_row_hv_2_kernel;
00468 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
0046f 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
00476 48 8b 89 80 48
00 00 mov rcx, QWORD PTR [rcx+18560]
0047d 48 89 08 mov QWORD PTR [rax], rcx
00480 eb 11 jmp SHORT $LN55@load_jpeg_
$LN54@load_jpeg_:
; 4425 : else
; 4426 : r->resample = stbi__resample_row_generic;
00482 48 8b 85 08 02
00 00 mov rax, QWORD PTR r$11[rbp]
00489 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__resample_row_generic
00490 48 89 08 mov QWORD PTR [rax], rcx
$LN55@load_jpeg_:
$LN53@load_jpeg_:
$LN51@load_jpeg_:
$LN49@load_jpeg_:
; 4427 : }
00493 e9 71 fd ff ff jmp $LN2@load_jpeg_
$LN3@load_jpeg_:
; 4428 :
; 4429 : // can't error after this so, this is safe
; 4430 : output = (stbi_uc *)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1);
00498 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0049f 48 8b 00 mov rax, QWORD PTR [rax]
004a2 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
004a9 48 8b 09 mov rcx, QWORD PTR [rcx]
004ac 41 b9 01 00 00
00 mov r9d, 1
004b2 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
004b6 8b 11 mov edx, DWORD PTR [rcx]
004b8 8b 4d 04 mov ecx, DWORD PTR n$[rbp]
004bb e8 00 00 00 00 call stbi__malloc_mad3
004c0 48 89 85 c8 00
00 00 mov QWORD PTR output$8[rbp], rax
; 4431 : if (!output) {
004c7 48 83 bd c8 00
00 00 00 cmp QWORD PTR output$8[rbp], 0
004cf 75 41 jne SHORT $LN56@load_jpeg_
; 4432 : stbi__cleanup_jpeg(z);
004d1 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
004d8 e8 00 00 00 00 call stbi__cleanup_jpeg
004dd 90 npad 1
; 4433 : return stbi__errpuc("outofmem", "Out of memory");
004de 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
004e5 e8 00 00 00 00 call stbi__err
004ea 85 c0 test eax, eax
004ec 74 0d je SHORT $LN95@load_jpeg_
004ee 48 c7 85 f8 04
00 00 00 00 00
00 mov QWORD PTR tv232[rbp], 0
004f9 eb 0b jmp SHORT $LN96@load_jpeg_
$LN95@load_jpeg_:
004fb 48 c7 85 f8 04
00 00 00 00 00
00 mov QWORD PTR tv232[rbp], 0
$LN96@load_jpeg_:
00506 48 8b 85 f8 04
00 00 mov rax, QWORD PTR tv232[rbp]
0050d e9 98 0d 00 00 jmp $LN1@load_jpeg_
$LN56@load_jpeg_:
; 4434 : }
; 4435 :
; 4436 : // now go ahead and resample
; 4437 : for (j = 0; j < z->s->img_y; ++j) {
00512 c7 85 a4 00 00
00 00 00 00 00 mov DWORD PTR j$7[rbp], 0
0051c eb 0e jmp SHORT $LN7@load_jpeg_
$LN5@load_jpeg_:
0051e 8b 85 a4 00 00
00 mov eax, DWORD PTR j$7[rbp]
00524 ff c0 inc eax
00526 89 85 a4 00 00
00 mov DWORD PTR j$7[rbp], eax
$LN7@load_jpeg_:
0052c 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00533 48 8b 00 mov rax, QWORD PTR [rax]
00536 8b 40 04 mov eax, DWORD PTR [rax+4]
00539 39 85 a4 00 00
00 cmp DWORD PTR j$7[rbp], eax
0053f 0f 83 e7 0c 00
00 jae $LN6@load_jpeg_
; 4438 : stbi_uc *out = output + n * z->s->img_x * j;
00545 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0054c 48 8b 00 mov rax, QWORD PTR [rax]
0054f 8b 4d 04 mov ecx, DWORD PTR n$[rbp]
00552 0f af 08 imul ecx, DWORD PTR [rax]
00555 8b c1 mov eax, ecx
00557 0f af 85 a4 00
00 00 imul eax, DWORD PTR j$7[rbp]
0055e 8b c0 mov eax, eax
00560 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR output$8[rbp]
00567 48 03 c8 add rcx, rax
0056a 48 8b c1 mov rax, rcx
0056d 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4439 : for (k = 0; k < decode_n; ++k) {
00574 c7 45 64 00 00
00 00 mov DWORD PTR k$5[rbp], 0
0057b eb 08 jmp SHORT $LN10@load_jpeg_
$LN8@load_jpeg_:
0057d 8b 45 64 mov eax, DWORD PTR k$5[rbp]
00580 ff c0 inc eax
00582 89 45 64 mov DWORD PTR k$5[rbp], eax
$LN10@load_jpeg_:
00585 8b 45 24 mov eax, DWORD PTR decode_n$[rbp]
00588 39 45 64 cmp DWORD PTR k$5[rbp], eax
0058b 0f 8d d0 01 00
00 jge $LN9@load_jpeg_
; 4440 : stbi__resample *r = &res_comp[k];
00591 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
00595 48 6b c0 30 imul rax, rax, 48 ; 00000030H
00599 48 8d 84 05 30
01 00 00 lea rax, QWORD PTR res_comp$10[rbp+rax]
005a1 48 89 85 48 02
00 00 mov QWORD PTR r$13[rbp], rax
; 4441 : int y_bot = r->ystep >= (r->vs >> 1);
005a8 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
005af 8b 40 1c mov eax, DWORD PTR [rax+28]
005b2 d1 f8 sar eax, 1
005b4 48 8b 8d 48 02
00 00 mov rcx, QWORD PTR r$13[rbp]
005bb 39 41 24 cmp DWORD PTR [rcx+36], eax
005be 7c 0c jl SHORT $LN97@load_jpeg_
005c0 c7 85 f4 04 00
00 01 00 00 00 mov DWORD PTR tv252[rbp], 1
005ca eb 0a jmp SHORT $LN98@load_jpeg_
$LN97@load_jpeg_:
005cc c7 85 f4 04 00
00 00 00 00 00 mov DWORD PTR tv252[rbp], 0
$LN98@load_jpeg_:
005d6 8b 85 f4 04 00
00 mov eax, DWORD PTR tv252[rbp]
005dc 89 85 64 02 00
00 mov DWORD PTR y_bot$14[rbp], eax
; 4442 : coutput[k] = r->resample(z->img_comp[k].linebuf,
005e2 83 bd 64 02 00
00 00 cmp DWORD PTR y_bot$14[rbp], 0
005e9 74 14 je SHORT $LN99@load_jpeg_
005eb 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
005f2 48 8b 40 08 mov rax, QWORD PTR [rax+8]
005f6 48 89 85 f8 04
00 00 mov QWORD PTR tv265[rbp], rax
005fd eb 12 jmp SHORT $LN100@load_jpeg_
$LN99@load_jpeg_:
005ff 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
00606 48 8b 40 10 mov rax, QWORD PTR [rax+16]
0060a 48 89 85 f8 04
00 00 mov QWORD PTR tv265[rbp], rax
$LN100@load_jpeg_:
00611 83 bd 64 02 00
00 00 cmp DWORD PTR y_bot$14[rbp], 0
00618 74 14 je SHORT $LN101@load_jpeg_
0061a 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
00621 48 8b 40 10 mov rax, QWORD PTR [rax+16]
00625 48 89 85 00 05
00 00 mov QWORD PTR tv270[rbp], rax
0062c eb 12 jmp SHORT $LN102@load_jpeg_
$LN101@load_jpeg_:
0062e 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
00635 48 8b 40 08 mov rax, QWORD PTR [rax+8]
00639 48 89 85 00 05
00 00 mov QWORD PTR tv270[rbp], rax
$LN102@load_jpeg_:
00640 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
00644 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00648 48 8b 8d 48 02
00 00 mov rcx, QWORD PTR r$13[rbp]
0064f 8b 49 18 mov ecx, DWORD PTR [rcx+24]
00652 89 4c 24 20 mov DWORD PTR [rsp+32], ecx
00656 48 8b 8d 48 02
00 00 mov rcx, QWORD PTR r$13[rbp]
0065d 44 8b 49 20 mov r9d, DWORD PTR [rcx+32]
00661 4c 8b 85 f8 04
00 00 mov r8, QWORD PTR tv265[rbp]
00668 48 8b 95 00 05
00 00 mov rdx, QWORD PTR tv270[rbp]
0066f 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
00676 48 8b 8c 01 e8
46 00 00 mov rcx, QWORD PTR [rcx+rax+18152]
0067e 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
00685 ff 10 call QWORD PTR [rax]
00687 48 63 4d 64 movsxd rcx, DWORD PTR k$5[rbp]
0068b 48 89 84 cd e8
00 00 00 mov QWORD PTR coutput$9[rbp+rcx*8], rax
; 4443 : y_bot ? r->line1 : r->line0,
; 4444 : y_bot ? r->line0 : r->line1, r->w_lores,
; 4445 : r->hs);
; 4446 : if (++r->ystep >= r->vs) {
00693 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
0069a 8b 40 24 mov eax, DWORD PTR [rax+36]
0069d ff c0 inc eax
0069f 89 85 f4 04 00
00 mov DWORD PTR tv280[rbp], eax
006a5 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
006ac 8b 8d f4 04 00
00 mov ecx, DWORD PTR tv280[rbp]
006b2 89 48 24 mov DWORD PTR [rax+36], ecx
006b5 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
006bc 8b 40 1c mov eax, DWORD PTR [rax+28]
006bf 39 85 f4 04 00
00 cmp DWORD PTR tv280[rbp], eax
006c5 0f 8c 91 00 00
00 jl $LN57@load_jpeg_
; 4447 : r->ystep = 0;
006cb 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
006d2 c7 40 24 00 00
00 00 mov DWORD PTR [rax+36], 0
; 4448 : r->line0 = r->line1;
006d9 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
006e0 48 8b 8d 48 02
00 00 mov rcx, QWORD PTR r$13[rbp]
006e7 48 8b 49 10 mov rcx, QWORD PTR [rcx+16]
006eb 48 89 48 08 mov QWORD PTR [rax+8], rcx
; 4449 : if (++r->ypos < z->img_comp[k].y)
006ef 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
006f6 8b 40 28 mov eax, DWORD PTR [rax+40]
006f9 ff c0 inc eax
006fb 89 85 f4 04 00
00 mov DWORD PTR tv288[rbp], eax
00701 48 8b 85 48 02
00 00 mov rax, QWORD PTR r$13[rbp]
00708 8b 8d f4 04 00
00 mov ecx, DWORD PTR tv288[rbp]
0070e 89 48 28 mov DWORD PTR [rax+40], ecx
00711 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
00715 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00719 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
00720 8b 84 01 c0 46
00 00 mov eax, DWORD PTR [rcx+rax+18112]
00727 39 85 f4 04 00
00 cmp DWORD PTR tv288[rbp], eax
0072d 7d 2d jge SHORT $LN58@load_jpeg_
; 4450 : r->line1 += z->img_comp[k].w2;
0072f 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
00733 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00737 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
0073e 48 63 84 01 c4
46 00 00 movsxd rax, DWORD PTR [rcx+rax+18116]
00746 48 8b 8d 48 02
00 00 mov rcx, QWORD PTR r$13[rbp]
0074d 48 03 41 10 add rax, QWORD PTR [rcx+16]
00751 48 8b 8d 48 02
00 00 mov rcx, QWORD PTR r$13[rbp]
00758 48 89 41 10 mov QWORD PTR [rcx+16], rax
$LN58@load_jpeg_:
$LN57@load_jpeg_:
; 4451 : }
; 4452 : }
0075c e9 1c fe ff ff jmp $LN8@load_jpeg_
$LN9@load_jpeg_:
; 4453 : if (n >= 3) {
00761 83 7d 04 03 cmp DWORD PTR n$[rbp], 3
00765 0f 8c ac 05 00
00 jl $LN59@load_jpeg_
; 4454 : stbi_uc *y = coutput[0];
0076b b8 08 00 00 00 mov eax, 8
00770 48 6b c0 00 imul rax, rax, 0
00774 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
0077c 48 89 85 88 02
00 00 mov QWORD PTR y$15[rbp], rax
; 4455 : if (z->s->img_n == 3) {
00783 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0078a 48 8b 00 mov rax, QWORD PTR [rax]
0078d 83 78 08 03 cmp DWORD PTR [rax+8], 3
00791 0f 85 4e 01 00
00 jne $LN61@load_jpeg_
; 4456 : if (is_rgb) {
00797 83 7d 44 00 cmp DWORD PTR is_rgb$[rbp], 0
0079b 0f 84 e8 00 00
00 je $LN63@load_jpeg_
; 4457 : for (i = 0; i < z->s->img_x; ++i) {
007a1 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
007ab eb 0e jmp SHORT $LN13@load_jpeg_
$LN11@load_jpeg_:
007ad 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
007b3 ff c0 inc eax
007b5 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN13@load_jpeg_:
007bb 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
007c2 48 8b 00 mov rax, QWORD PTR [rax]
007c5 8b 00 mov eax, DWORD PTR [rax]
007c7 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
007cd 0f 83 b4 00 00
00 jae $LN12@load_jpeg_
; 4458 : out[0] = y[i];
007d3 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
007d9 b9 01 00 00 00 mov ecx, 1
007de 48 6b c9 00 imul rcx, rcx, 0
007e2 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
007e9 4c 8b 85 88 02
00 00 mov r8, QWORD PTR y$15[rbp]
007f0 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
007f5 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4459 : out[1] = coutput[1][i];
007f8 b8 08 00 00 00 mov eax, 8
007fd 48 6b c0 01 imul rax, rax, 1
00801 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00807 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
0080f ba 01 00 00 00 mov edx, 1
00814 48 6b d2 01 imul rdx, rdx, 1
00818 4c 8b 85 28 02
00 00 mov r8, QWORD PTR out$12[rbp]
0081f 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00823 41 88 04 10 mov BYTE PTR [r8+rdx], al
; 4460 : out[2] = coutput[2][i];
00827 b8 08 00 00 00 mov eax, 8
0082c 48 6b c0 02 imul rax, rax, 2
00830 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00836 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
0083e ba 01 00 00 00 mov edx, 1
00843 48 6b d2 02 imul rdx, rdx, 2
00847 4c 8b 85 28 02
00 00 mov r8, QWORD PTR out$12[rbp]
0084e 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00852 41 88 04 10 mov BYTE PTR [r8+rdx], al
; 4461 : out[3] = 255;
00856 b8 01 00 00 00 mov eax, 1
0085b 48 6b c0 03 imul rax, rax, 3
0085f 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00866 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4462 : out += n;
0086a 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
0086e 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00875 48 03 c8 add rcx, rax
00878 48 8b c1 mov rax, rcx
0087b 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4463 : }
00882 e9 26 ff ff ff jmp $LN11@load_jpeg_
$LN12@load_jpeg_:
; 4464 : } else {
00887 eb 57 jmp SHORT $LN64@load_jpeg_
$LN63@load_jpeg_:
; 4465 : z->YCbCr_to_RGB_kernel(out, y, coutput[1],
00889 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00890 48 8b 00 mov rax, QWORD PTR [rax]
00893 b9 08 00 00 00 mov ecx, 8
00898 48 6b c9 02 imul rcx, rcx, 2
0089c ba 08 00 00 00 mov edx, 8
008a1 48 6b d2 01 imul rdx, rdx, 1
008a5 44 8b 45 04 mov r8d, DWORD PTR n$[rbp]
008a9 44 89 44 24 28 mov DWORD PTR [rsp+40], r8d
008ae 8b 00 mov eax, DWORD PTR [rax]
008b0 89 44 24 20 mov DWORD PTR [rsp+32], eax
008b4 4c 8b 8c 0d e8
00 00 00 mov r9, QWORD PTR coutput$9[rbp+rcx]
008bc 4c 8b 84 15 e8
00 00 00 mov r8, QWORD PTR coutput$9[rbp+rdx]
008c4 48 8b 95 88 02
00 00 mov rdx, QWORD PTR y$15[rbp]
008cb 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
008d2 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
008d9 ff 90 78 48 00
00 call QWORD PTR [rax+18552]
008df 90 npad 1
$LN64@load_jpeg_:
; 4466 : coutput[2], z->s->img_x, n);
; 4467 : }
008e0 e9 2d 04 00 00 jmp $LN62@load_jpeg_
$LN61@load_jpeg_:
; 4468 : } else if (z->s->img_n == 4) {
008e5 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
008ec 48 8b 00 mov rax, QWORD PTR [rax]
008ef 83 78 08 04 cmp DWORD PTR [rax+8], 4
008f3 0f 85 41 03 00
00 jne $LN65@load_jpeg_
; 4469 : if (z->app14_color_transform == 0) { // CMYK
008f9 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00900 83 b8 4c 48 00
00 00 cmp DWORD PTR [rax+18508], 0
00907 0f 85 37 01 00
00 jne $LN67@load_jpeg_
; 4470 : for (i = 0; i < z->s->img_x; ++i) {
0090d c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
00917 eb 0e jmp SHORT $LN16@load_jpeg_
$LN14@load_jpeg_:
00919 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
0091f ff c0 inc eax
00921 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN16@load_jpeg_:
00927 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0092e 48 8b 00 mov rax, QWORD PTR [rax]
00931 8b 00 mov eax, DWORD PTR [rax]
00933 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
00939 0f 83 00 01 00
00 jae $LN15@load_jpeg_
; 4471 : stbi_uc m = coutput[3][i];
0093f b8 08 00 00 00 mov eax, 8
00944 48 6b c0 03 imul rax, rax, 3
00948 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
0094e 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00956 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
0095a 88 85 a4 02 00
00 mov BYTE PTR m$16[rbp], al
; 4472 : out[0] = stbi__blinn_8x8(coutput[0][i], m);
00960 b8 08 00 00 00 mov eax, 8
00965 48 6b c0 00 imul rax, rax, 0
00969 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
0096f 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00977 0f b6 95 a4 02
00 00 movzx edx, BYTE PTR m$16[rbp]
0097e 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
00982 e8 00 00 00 00 call stbi__blinn_8x8
00987 b9 01 00 00 00 mov ecx, 1
0098c 48 6b c9 00 imul rcx, rcx, 0
00990 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00997 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4473 : out[1] = stbi__blinn_8x8(coutput[1][i], m);
0099a b8 08 00 00 00 mov eax, 8
0099f 48 6b c0 01 imul rax, rax, 1
009a3 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
009a9 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
009b1 0f b6 95 a4 02
00 00 movzx edx, BYTE PTR m$16[rbp]
009b8 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
009bc e8 00 00 00 00 call stbi__blinn_8x8
009c1 b9 01 00 00 00 mov ecx, 1
009c6 48 6b c9 01 imul rcx, rcx, 1
009ca 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
009d1 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4474 : out[2] = stbi__blinn_8x8(coutput[2][i], m);
009d4 b8 08 00 00 00 mov eax, 8
009d9 48 6b c0 02 imul rax, rax, 2
009dd 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
009e3 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
009eb 0f b6 95 a4 02
00 00 movzx edx, BYTE PTR m$16[rbp]
009f2 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
009f6 e8 00 00 00 00 call stbi__blinn_8x8
009fb b9 01 00 00 00 mov ecx, 1
00a00 48 6b c9 02 imul rcx, rcx, 2
00a04 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00a0b 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4475 : out[3] = 255;
00a0e b8 01 00 00 00 mov eax, 1
00a13 48 6b c0 03 imul rax, rax, 3
00a17 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00a1e c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4476 : out += n;
00a22 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
00a26 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00a2d 48 03 c8 add rcx, rax
00a30 48 8b c1 mov rax, rcx
00a33 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4477 : }
00a3a e9 da fe ff ff jmp $LN14@load_jpeg_
$LN15@load_jpeg_:
; 4478 : } else if (z->app14_color_transform == 2) { // YCCK
00a3f e9 f1 01 00 00 jmp $LN68@load_jpeg_
$LN67@load_jpeg_:
00a44 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00a4b 83 b8 4c 48 00
00 02 cmp DWORD PTR [rax+18508], 2
00a52 0f 85 86 01 00
00 jne $LN69@load_jpeg_
; 4479 : z->YCbCr_to_RGB_kernel(out, y, coutput[1],
00a58 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00a5f 48 8b 00 mov rax, QWORD PTR [rax]
00a62 b9 08 00 00 00 mov ecx, 8
00a67 48 6b c9 02 imul rcx, rcx, 2
00a6b ba 08 00 00 00 mov edx, 8
00a70 48 6b d2 01 imul rdx, rdx, 1
00a74 44 8b 45 04 mov r8d, DWORD PTR n$[rbp]
00a78 44 89 44 24 28 mov DWORD PTR [rsp+40], r8d
00a7d 8b 00 mov eax, DWORD PTR [rax]
00a7f 89 44 24 20 mov DWORD PTR [rsp+32], eax
00a83 4c 8b 8c 0d e8
00 00 00 mov r9, QWORD PTR coutput$9[rbp+rcx]
00a8b 4c 8b 84 15 e8
00 00 00 mov r8, QWORD PTR coutput$9[rbp+rdx]
00a93 48 8b 95 88 02
00 00 mov rdx, QWORD PTR y$15[rbp]
00a9a 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00aa1 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00aa8 ff 90 78 48 00
00 call QWORD PTR [rax+18552]
00aae 90 npad 1
; 4480 : coutput[2], z->s->img_x, n);
; 4481 : for (i = 0; i < z->s->img_x; ++i) {
00aaf c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
00ab9 eb 0e jmp SHORT $LN19@load_jpeg_
$LN17@load_jpeg_:
00abb 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
00ac1 ff c0 inc eax
00ac3 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN19@load_jpeg_:
00ac9 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00ad0 48 8b 00 mov rax, QWORD PTR [rax]
00ad3 8b 00 mov eax, DWORD PTR [rax]
00ad5 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
00adb 0f 83 fb 00 00
00 jae $LN18@load_jpeg_
; 4482 : stbi_uc m = coutput[3][i];
00ae1 b8 08 00 00 00 mov eax, 8
00ae6 48 6b c0 03 imul rax, rax, 3
00aea 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00af0 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00af8 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00afc 88 85 c4 02 00
00 mov BYTE PTR m$17[rbp], al
; 4483 : out[0] = stbi__blinn_8x8(255 - out[0], m);
00b02 b8 01 00 00 00 mov eax, 1
00b07 48 6b c0 00 imul rax, rax, 0
00b0b 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00b12 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00b16 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH
00b1b 2b c8 sub ecx, eax
00b1d 8b c1 mov eax, ecx
00b1f 0f b6 95 c4 02
00 00 movzx edx, BYTE PTR m$17[rbp]
00b26 0f b6 c8 movzx ecx, al
00b29 e8 00 00 00 00 call stbi__blinn_8x8
00b2e b9 01 00 00 00 mov ecx, 1
00b33 48 6b c9 00 imul rcx, rcx, 0
00b37 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00b3e 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4484 : out[1] = stbi__blinn_8x8(255 - out[1], m);
00b41 b8 01 00 00 00 mov eax, 1
00b46 48 6b c0 01 imul rax, rax, 1
00b4a 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00b51 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00b55 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH
00b5a 2b c8 sub ecx, eax
00b5c 8b c1 mov eax, ecx
00b5e 0f b6 95 c4 02
00 00 movzx edx, BYTE PTR m$17[rbp]
00b65 0f b6 c8 movzx ecx, al
00b68 e8 00 00 00 00 call stbi__blinn_8x8
00b6d b9 01 00 00 00 mov ecx, 1
00b72 48 6b c9 01 imul rcx, rcx, 1
00b76 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00b7d 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4485 : out[2] = stbi__blinn_8x8(255 - out[2], m);
00b80 b8 01 00 00 00 mov eax, 1
00b85 48 6b c0 02 imul rax, rax, 2
00b89 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00b90 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00b94 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH
00b99 2b c8 sub ecx, eax
00b9b 8b c1 mov eax, ecx
00b9d 0f b6 95 c4 02
00 00 movzx edx, BYTE PTR m$17[rbp]
00ba4 0f b6 c8 movzx ecx, al
00ba7 e8 00 00 00 00 call stbi__blinn_8x8
00bac b9 01 00 00 00 mov ecx, 1
00bb1 48 6b c9 02 imul rcx, rcx, 2
00bb5 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00bbc 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4486 : out += n;
00bbf 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
00bc3 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00bca 48 03 c8 add rcx, rax
00bcd 48 8b c1 mov rax, rcx
00bd0 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4487 : }
00bd7 e9 df fe ff ff jmp $LN17@load_jpeg_
$LN18@load_jpeg_:
; 4488 : } else { // YCbCr + alpha? Ignore the fourth channel for now
00bdc eb 57 jmp SHORT $LN70@load_jpeg_
$LN69@load_jpeg_:
; 4489 : z->YCbCr_to_RGB_kernel(out, y, coutput[1],
00bde 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00be5 48 8b 00 mov rax, QWORD PTR [rax]
00be8 b9 08 00 00 00 mov ecx, 8
00bed 48 6b c9 02 imul rcx, rcx, 2
00bf1 ba 08 00 00 00 mov edx, 8
00bf6 48 6b d2 01 imul rdx, rdx, 1
00bfa 44 8b 45 04 mov r8d, DWORD PTR n$[rbp]
00bfe 44 89 44 24 28 mov DWORD PTR [rsp+40], r8d
00c03 8b 00 mov eax, DWORD PTR [rax]
00c05 89 44 24 20 mov DWORD PTR [rsp+32], eax
00c09 4c 8b 8c 0d e8
00 00 00 mov r9, QWORD PTR coutput$9[rbp+rcx]
00c11 4c 8b 84 15 e8
00 00 00 mov r8, QWORD PTR coutput$9[rbp+rdx]
00c19 48 8b 95 88 02
00 00 mov rdx, QWORD PTR y$15[rbp]
00c20 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00c27 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00c2e ff 90 78 48 00
00 call QWORD PTR [rax+18552]
00c34 90 npad 1
$LN70@load_jpeg_:
$LN68@load_jpeg_:
; 4490 : coutput[2], z->s->img_x, n);
; 4491 : }
; 4492 : } else
00c35 e9 d8 00 00 00 jmp $LN66@load_jpeg_
$LN65@load_jpeg_:
; 4493 : for (i = 0; i < z->s->img_x; ++i) {
00c3a c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
00c44 eb 0e jmp SHORT $LN22@load_jpeg_
$LN20@load_jpeg_:
00c46 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
00c4c ff c0 inc eax
00c4e 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN22@load_jpeg_:
00c54 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00c5b 48 8b 00 mov rax, QWORD PTR [rax]
00c5e 8b 00 mov eax, DWORD PTR [rax]
00c60 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
00c66 0f 83 a6 00 00
00 jae $LN21@load_jpeg_
; 4494 : out[0] = out[1] = out[2] = y[i];
00c6c 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
00c72 b9 01 00 00 00 mov ecx, 1
00c77 48 6b c9 02 imul rcx, rcx, 2
00c7b 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00c82 4c 8b 85 88 02
00 00 mov r8, QWORD PTR y$15[rbp]
00c89 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00c8e 88 04 0a mov BYTE PTR [rdx+rcx], al
00c91 b8 01 00 00 00 mov eax, 1
00c96 48 6b c0 02 imul rax, rax, 2
00c9a b9 01 00 00 00 mov ecx, 1
00c9f 48 6b c9 01 imul rcx, rcx, 1
00ca3 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00caa 4c 8b 85 28 02
00 00 mov r8, QWORD PTR out$12[rbp]
00cb1 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00cb6 88 04 0a mov BYTE PTR [rdx+rcx], al
00cb9 b8 01 00 00 00 mov eax, 1
00cbe 48 6b c0 01 imul rax, rax, 1
00cc2 b9 01 00 00 00 mov ecx, 1
00cc7 48 6b c9 00 imul rcx, rcx, 0
00ccb 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00cd2 4c 8b 85 28 02
00 00 mov r8, QWORD PTR out$12[rbp]
00cd9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00cde 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4495 : out[3] = 255; // not used if n==3
00ce1 b8 01 00 00 00 mov eax, 1
00ce6 48 6b c0 03 imul rax, rax, 3
00cea 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00cf1 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4496 : out += n;
00cf5 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
00cf9 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00d00 48 03 c8 add rcx, rax
00d03 48 8b c1 mov rax, rcx
00d06 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4497 : }
00d0d e9 34 ff ff ff jmp $LN20@load_jpeg_
$LN21@load_jpeg_:
$LN66@load_jpeg_:
$LN62@load_jpeg_:
; 4498 : } else {
00d12 e9 10 05 00 00 jmp $LN60@load_jpeg_
$LN59@load_jpeg_:
; 4499 : if (is_rgb) {
00d17 83 7d 44 00 cmp DWORD PTR is_rgb$[rbp], 0
00d1b 0f 84 ab 01 00
00 je $LN71@load_jpeg_
; 4500 : if (n == 1)
00d21 83 7d 04 01 cmp DWORD PTR n$[rbp], 1
00d25 0f 85 c1 00 00
00 jne $LN73@load_jpeg_
; 4501 : for (i = 0; i < z->s->img_x; ++i)
00d2b c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
00d35 eb 0e jmp SHORT $LN25@load_jpeg_
$LN23@load_jpeg_:
00d37 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
00d3d ff c0 inc eax
00d3f 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN25@load_jpeg_:
00d45 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00d4c 48 8b 00 mov rax, QWORD PTR [rax]
00d4f 8b 00 mov eax, DWORD PTR [rax]
00d51 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
00d57 0f 83 8a 00 00
00 jae $LN24@load_jpeg_
; 4502 : *out++ = stbi__compute_y(coutput[0][i],
00d5d b8 08 00 00 00 mov eax, 8
00d62 48 6b c0 02 imul rax, rax, 2
00d66 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00d6c 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00d74 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00d78 b9 08 00 00 00 mov ecx, 8
00d7d 48 6b c9 01 imul rcx, rcx, 1
00d81 8b 95 84 00 00
00 mov edx, DWORD PTR i$6[rbp]
00d87 48 8b 8c 0d e8
00 00 00 mov rcx, QWORD PTR coutput$9[rbp+rcx]
00d8f 0f b6 0c 11 movzx ecx, BYTE PTR [rcx+rdx]
00d93 ba 08 00 00 00 mov edx, 8
00d98 48 6b d2 00 imul rdx, rdx, 0
00d9c 44 8b 85 84 00
00 00 mov r8d, DWORD PTR i$6[rbp]
00da3 48 8b 94 15 e8
00 00 00 mov rdx, QWORD PTR coutput$9[rbp+rdx]
00dab 42 0f b6 14 02 movzx edx, BYTE PTR [rdx+r8]
00db0 89 95 f4 04 00
00 mov DWORD PTR tv516[rbp], edx
00db6 44 8b c0 mov r8d, eax
00db9 8b d1 mov edx, ecx
00dbb 8b 85 f4 04 00
00 mov eax, DWORD PTR tv516[rbp]
00dc1 8b c8 mov ecx, eax
00dc3 e8 00 00 00 00 call stbi__compute_y
00dc8 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00dcf 88 01 mov BYTE PTR [rcx], al
00dd1 48 8b 85 28 02
00 00 mov rax, QWORD PTR out$12[rbp]
00dd8 48 ff c0 inc rax
00ddb 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
00de2 e9 50 ff ff ff jmp $LN23@load_jpeg_
$LN24@load_jpeg_:
; 4503 : coutput[1][i],
; 4504 : coutput[2][i]);
00de7 e9 db 00 00 00 jmp $LN74@load_jpeg_
$LN73@load_jpeg_:
; 4505 : else {
; 4506 : for (i = 0; i < z->s->img_x; ++i, out += 2) {
00dec c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
00df6 eb 20 jmp SHORT $LN28@load_jpeg_
$LN26@load_jpeg_:
00df8 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
00dfe ff c0 inc eax
00e00 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
00e06 48 8b 85 28 02
00 00 mov rax, QWORD PTR out$12[rbp]
00e0d 48 83 c0 02 add rax, 2
00e11 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
$LN28@load_jpeg_:
00e18 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00e1f 48 8b 00 mov rax, QWORD PTR [rax]
00e22 8b 00 mov eax, DWORD PTR [rax]
00e24 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
00e2a 0f 83 97 00 00
00 jae $LN27@load_jpeg_
; 4507 : out[0] = stbi__compute_y(coutput[0][i],
00e30 b8 08 00 00 00 mov eax, 8
00e35 48 6b c0 02 imul rax, rax, 2
00e39 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00e3f 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00e47 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00e4b b9 08 00 00 00 mov ecx, 8
00e50 48 6b c9 01 imul rcx, rcx, 1
00e54 8b 95 84 00 00
00 mov edx, DWORD PTR i$6[rbp]
00e5a 48 8b 8c 0d e8
00 00 00 mov rcx, QWORD PTR coutput$9[rbp+rcx]
00e62 0f b6 0c 11 movzx ecx, BYTE PTR [rcx+rdx]
00e66 ba 08 00 00 00 mov edx, 8
00e6b 48 6b d2 00 imul rdx, rdx, 0
00e6f 44 8b 85 84 00
00 00 mov r8d, DWORD PTR i$6[rbp]
00e76 48 8b 94 15 e8
00 00 00 mov rdx, QWORD PTR coutput$9[rbp+rdx]
00e7e 42 0f b6 14 02 movzx edx, BYTE PTR [rdx+r8]
00e83 89 95 f4 04 00
00 mov DWORD PTR tv545[rbp], edx
00e89 44 8b c0 mov r8d, eax
00e8c 8b d1 mov edx, ecx
00e8e 8b 85 f4 04 00
00 mov eax, DWORD PTR tv545[rbp]
00e94 8b c8 mov ecx, eax
00e96 e8 00 00 00 00 call stbi__compute_y
00e9b b9 01 00 00 00 mov ecx, 1
00ea0 48 6b c9 00 imul rcx, rcx, 0
00ea4 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
00eab 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4508 : coutput[1][i],
; 4509 : coutput[2][i]);
; 4510 : out[1] = 255;
00eae b8 01 00 00 00 mov eax, 1
00eb3 48 6b c0 01 imul rax, rax, 1
00eb7 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
00ebe c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4511 : }
00ec2 e9 31 ff ff ff jmp $LN26@load_jpeg_
$LN27@load_jpeg_:
$LN74@load_jpeg_:
; 4512 : }
00ec7 e9 5b 03 00 00 jmp $LN72@load_jpeg_
$LN71@load_jpeg_:
; 4513 : } else if (z->s->img_n == 4 && z->app14_color_transform == 0) {
00ecc 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00ed3 48 8b 00 mov rax, QWORD PTR [rax]
00ed6 83 78 08 04 cmp DWORD PTR [rax+8], 4
00eda 0f 85 64 01 00
00 jne $LN75@load_jpeg_
00ee0 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00ee7 83 b8 4c 48 00
00 00 cmp DWORD PTR [rax+18508], 0
00eee 0f 85 50 01 00
00 jne $LN75@load_jpeg_
; 4514 : for (i = 0; i < z->s->img_x; ++i) {
00ef4 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
00efe eb 0e jmp SHORT $LN31@load_jpeg_
$LN29@load_jpeg_:
00f00 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
00f06 ff c0 inc eax
00f08 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN31@load_jpeg_:
00f0e 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
00f15 48 8b 00 mov rax, QWORD PTR [rax]
00f18 8b 00 mov eax, DWORD PTR [rax]
00f1a 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
00f20 0f 83 19 01 00
00 jae $LN30@load_jpeg_
; 4515 : stbi_uc m = coutput[3][i];
00f26 b8 08 00 00 00 mov eax, 8
00f2b 48 6b c0 03 imul rax, rax, 3
00f2f 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00f35 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00f3d 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00f41 88 85 e4 02 00
00 mov BYTE PTR m$18[rbp], al
; 4516 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m);
00f47 b8 08 00 00 00 mov eax, 8
00f4c 48 6b c0 00 imul rax, rax, 0
00f50 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00f56 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00f5e 0f b6 95 e4 02
00 00 movzx edx, BYTE PTR m$18[rbp]
00f65 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
00f69 e8 00 00 00 00 call stbi__blinn_8x8
00f6e 88 85 04 03 00
00 mov BYTE PTR r$19[rbp], al
; 4517 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m);
00f74 b8 08 00 00 00 mov eax, 8
00f79 48 6b c0 01 imul rax, rax, 1
00f7d 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00f83 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00f8b 0f b6 95 e4 02
00 00 movzx edx, BYTE PTR m$18[rbp]
00f92 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
00f96 e8 00 00 00 00 call stbi__blinn_8x8
00f9b 88 85 24 03 00
00 mov BYTE PTR g$20[rbp], al
; 4518 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m);
00fa1 b8 08 00 00 00 mov eax, 8
00fa6 48 6b c0 02 imul rax, rax, 2
00faa 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
00fb0 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
00fb8 0f b6 95 e4 02
00 00 movzx edx, BYTE PTR m$18[rbp]
00fbf 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
00fc3 e8 00 00 00 00 call stbi__blinn_8x8
00fc8 88 85 44 03 00
00 mov BYTE PTR b$21[rbp], al
; 4519 : out[0] = stbi__compute_y(r, g, b);
00fce 0f b6 85 44 03
00 00 movzx eax, BYTE PTR b$21[rbp]
00fd5 0f b6 8d 24 03
00 00 movzx ecx, BYTE PTR g$20[rbp]
00fdc 0f b6 95 04 03
00 00 movzx edx, BYTE PTR r$19[rbp]
00fe3 89 95 f4 04 00
00 mov DWORD PTR tv626[rbp], edx
00fe9 44 8b c0 mov r8d, eax
00fec 8b d1 mov edx, ecx
00fee 8b 85 f4 04 00
00 mov eax, DWORD PTR tv626[rbp]
00ff4 8b c8 mov ecx, eax
00ff6 e8 00 00 00 00 call stbi__compute_y
00ffb b9 01 00 00 00 mov ecx, 1
01000 48 6b c9 00 imul rcx, rcx, 0
01004 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
0100b 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4520 : out[1] = 255;
0100e b8 01 00 00 00 mov eax, 1
01013 48 6b c0 01 imul rax, rax, 1
01017 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
0101e c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4521 : out += n;
01022 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
01026 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
0102d 48 03 c8 add rcx, rax
01030 48 8b c1 mov rax, rcx
01033 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4522 : }
0103a e9 c1 fe ff ff jmp $LN29@load_jpeg_
$LN30@load_jpeg_:
; 4523 : } else if (z->s->img_n == 4 && z->app14_color_transform == 2) {
0103f e9 e3 01 00 00 jmp $LN76@load_jpeg_
$LN75@load_jpeg_:
01044 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0104b 48 8b 00 mov rax, QWORD PTR [rax]
0104e 83 78 08 04 cmp DWORD PTR [rax+8], 4
01052 0f 85 e7 00 00
00 jne $LN77@load_jpeg_
01058 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0105f 83 b8 4c 48 00
00 02 cmp DWORD PTR [rax+18508], 2
01066 0f 85 d3 00 00
00 jne $LN77@load_jpeg_
; 4524 : for (i = 0; i < z->s->img_x; ++i) {
0106c c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
01076 eb 0e jmp SHORT $LN34@load_jpeg_
$LN32@load_jpeg_:
01078 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
0107e ff c0 inc eax
01080 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN34@load_jpeg_:
01086 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0108d 48 8b 00 mov rax, QWORD PTR [rax]
01090 8b 00 mov eax, DWORD PTR [rax]
01092 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
01098 0f 83 9c 00 00
00 jae $LN33@load_jpeg_
; 4525 : out[0] = stbi__blinn_8x8(255 - coutput[0][i],
0109e b8 08 00 00 00 mov eax, 8
010a3 48 6b c0 03 imul rax, rax, 3
010a7 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
010ad 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
010b5 ba 08 00 00 00 mov edx, 8
010ba 48 6b d2 00 imul rdx, rdx, 0
010be 44 8b 85 84 00
00 00 mov r8d, DWORD PTR i$6[rbp]
010c5 48 8b 94 15 e8
00 00 00 mov rdx, QWORD PTR coutput$9[rbp+rdx]
010cd 42 0f b6 14 02 movzx edx, BYTE PTR [rdx+r8]
010d2 41 b8 ff 00 00
00 mov r8d, 255 ; 000000ffH
010d8 44 2b c2 sub r8d, edx
010db 41 8b d0 mov edx, r8d
010de 89 95 f4 04 00
00 mov DWORD PTR tv656[rbp], edx
010e4 0f b6 14 08 movzx edx, BYTE PTR [rax+rcx]
010e8 8b 85 f4 04 00
00 mov eax, DWORD PTR tv656[rbp]
010ee 0f b6 c8 movzx ecx, al
010f1 e8 00 00 00 00 call stbi__blinn_8x8
010f6 b9 01 00 00 00 mov ecx, 1
010fb 48 6b c9 00 imul rcx, rcx, 0
010ff 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
01106 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4526 : coutput[3][i]);
; 4527 : out[1] = 255;
01109 b8 01 00 00 00 mov eax, 1
0110e 48 6b c0 01 imul rax, rax, 1
01112 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
01119 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4528 : out += n;
0111d 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
01121 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
01128 48 03 c8 add rcx, rax
0112b 48 8b c1 mov rax, rcx
0112e 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4529 : }
01135 e9 3e ff ff ff jmp $LN32@load_jpeg_
$LN33@load_jpeg_:
; 4530 : } else {
0113a e9 e8 00 00 00 jmp $LN78@load_jpeg_
$LN77@load_jpeg_:
; 4531 : stbi_uc *y = coutput[0];
0113f b8 08 00 00 00 mov eax, 8
01144 48 6b c0 00 imul rax, rax, 0
01148 48 8b 84 05 e8
00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
01150 48 89 85 68 03
00 00 mov QWORD PTR y$22[rbp], rax
; 4532 : if (n == 1)
01157 83 7d 04 01 cmp DWORD PTR n$[rbp], 1
0115b 75 54 jne SHORT $LN79@load_jpeg_
; 4533 : for (i = 0; i < z->s->img_x; ++i)
0115d c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
01167 eb 0e jmp SHORT $LN37@load_jpeg_
$LN35@load_jpeg_:
01169 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
0116f ff c0 inc eax
01171 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN37@load_jpeg_:
01177 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
0117e 48 8b 00 mov rax, QWORD PTR [rax]
01181 8b 00 mov eax, DWORD PTR [rax]
01183 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
01189 73 24 jae SHORT $LN36@load_jpeg_
; 4534 : out[i] = y[i];
0118b 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
01191 8b 8d 84 00 00
00 mov ecx, DWORD PTR i$6[rbp]
01197 48 8b 95 28 02
00 00 mov rdx, QWORD PTR out$12[rbp]
0119e 4c 8b 85 68 03
00 00 mov r8, QWORD PTR y$22[rbp]
011a5 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
011aa 88 04 0a mov BYTE PTR [rdx+rcx], al
011ad eb ba jmp SHORT $LN35@load_jpeg_
$LN36@load_jpeg_:
011af eb 76 jmp SHORT $LN80@load_jpeg_
$LN79@load_jpeg_:
; 4535 : else
; 4536 : for (i = 0; i < z->s->img_x; ++i) {
011b1 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
011bb eb 0e jmp SHORT $LN40@load_jpeg_
$LN38@load_jpeg_:
011bd 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
011c3 ff c0 inc eax
011c5 89 85 84 00 00
00 mov DWORD PTR i$6[rbp], eax
$LN40@load_jpeg_:
011cb 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
011d2 48 8b 00 mov rax, QWORD PTR [rax]
011d5 8b 00 mov eax, DWORD PTR [rax]
011d7 39 85 84 00 00
00 cmp DWORD PTR i$6[rbp], eax
011dd 73 48 jae SHORT $LN39@load_jpeg_
; 4537 : *out++ = y[i];
011df 8b 85 84 00 00
00 mov eax, DWORD PTR i$6[rbp]
011e5 48 8b 8d 28 02
00 00 mov rcx, QWORD PTR out$12[rbp]
011ec 48 8b 95 68 03
00 00 mov rdx, QWORD PTR y$22[rbp]
011f3 0f b6 04 02 movzx eax, BYTE PTR [rdx+rax]
011f7 88 01 mov BYTE PTR [rcx], al
011f9 48 8b 85 28 02
00 00 mov rax, QWORD PTR out$12[rbp]
01200 48 ff c0 inc rax
01203 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4538 : *out++ = 255;
0120a 48 8b 85 28 02
00 00 mov rax, QWORD PTR out$12[rbp]
01211 c6 00 ff mov BYTE PTR [rax], 255 ; 000000ffH
01214 48 8b 85 28 02
00 00 mov rax, QWORD PTR out$12[rbp]
0121b 48 ff c0 inc rax
0121e 48 89 85 28 02
00 00 mov QWORD PTR out$12[rbp], rax
; 4539 : }
01225 eb 96 jmp SHORT $LN38@load_jpeg_
$LN39@load_jpeg_:
$LN80@load_jpeg_:
$LN78@load_jpeg_:
$LN76@load_jpeg_:
$LN72@load_jpeg_:
$LN60@load_jpeg_:
; 4540 : }
; 4541 : }
; 4542 : }
01227 e9 f2 f2 ff ff jmp $LN5@load_jpeg_
$LN6@load_jpeg_:
; 4543 : stbi__cleanup_jpeg(z);
0122c 48 8b 8d 30 05
00 00 mov rcx, QWORD PTR z$[rbp]
01233 e8 00 00 00 00 call stbi__cleanup_jpeg
01238 90 npad 1
; 4544 : *out_x = z->s->img_x;
01239 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
01240 48 8b 00 mov rax, QWORD PTR [rax]
01243 48 8b 8d 38 05
00 00 mov rcx, QWORD PTR out_x$[rbp]
0124a 8b 00 mov eax, DWORD PTR [rax]
0124c 89 01 mov DWORD PTR [rcx], eax
; 4545 : *out_y = z->s->img_y;
0124e 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
01255 48 8b 00 mov rax, QWORD PTR [rax]
01258 48 8b 8d 40 05
00 00 mov rcx, QWORD PTR out_y$[rbp]
0125f 8b 40 04 mov eax, DWORD PTR [rax+4]
01262 89 01 mov DWORD PTR [rcx], eax
; 4546 : if (comp)
01264 48 83 bd 48 05
00 00 00 cmp QWORD PTR comp$[rbp], 0
0126c 74 35 je SHORT $LN81@load_jpeg_
; 4547 : *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output
0126e 48 8b 85 30 05
00 00 mov rax, QWORD PTR z$[rbp]
01275 48 8b 00 mov rax, QWORD PTR [rax]
01278 83 78 08 03 cmp DWORD PTR [rax+8], 3
0127c 7c 0c jl SHORT $LN103@load_jpeg_
0127e c7 85 f4 04 00
00 03 00 00 00 mov DWORD PTR tv694[rbp], 3
01288 eb 0a jmp SHORT $LN104@load_jpeg_
$LN103@load_jpeg_:
0128a c7 85 f4 04 00
00 01 00 00 00 mov DWORD PTR tv694[rbp], 1
$LN104@load_jpeg_:
01294 48 8b 85 48 05
00 00 mov rax, QWORD PTR comp$[rbp]
0129b 8b 8d f4 04 00
00 mov ecx, DWORD PTR tv694[rbp]
012a1 89 08 mov DWORD PTR [rax], ecx
$LN81@load_jpeg_:
; 4548 : return output;
012a3 48 8b 85 c8 00
00 00 mov rax, QWORD PTR output$8[rbp]
$LN1@load_jpeg_:
; 4549 : }
; 4550 : }
012aa 48 8b f8 mov rdi, rax
012ad 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
012b1 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:load_jpeg_image$rtcFrameData
012b8 e8 00 00 00 00 call _RTC_CheckStackVars
012bd 48 8b c7 mov rax, rdi
012c0 48 8b 8d 08 05
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
012c7 48 33 cd xor rcx, rbp
012ca e8 00 00 00 00 call __security_check_cookie
012cf 48 8d a5 18 05
00 00 lea rsp, QWORD PTR [rbp+1304]
012d6 5f pop rdi
012d7 5d pop rbp
012d8 c3 ret 0
load_jpeg_image ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__blinn_8x8
_TEXT SEGMENT
t$ = 4
x$ = 256
y$ = 264
stbi__blinn_8x8 PROC ; COMDAT
; 4353 : {
00000 88 54 24 10 mov BYTE PTR [rsp+16], dl
00004 88 4c 24 08 mov BYTE PTR [rsp+8], cl
00008 55 push rbp
00009 57 push rdi
0000a 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00016 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00022 90 npad 1
; 4354 : unsigned int t = x * y + 128;
00023 0f b6 85 00 01
00 00 movzx eax, BYTE PTR x$[rbp]
0002a 0f b6 8d 08 01
00 00 movzx ecx, BYTE PTR y$[rbp]
00031 0f af c1 imul eax, ecx
00034 05 80 00 00 00 add eax, 128 ; 00000080H
00039 89 45 04 mov DWORD PTR t$[rbp], eax
; 4355 : return (stbi_uc)((t + (t >> 8)) >> 8);
0003c 8b 45 04 mov eax, DWORD PTR t$[rbp]
0003f c1 e8 08 shr eax, 8
00042 8b 4d 04 mov ecx, DWORD PTR t$[rbp]
00045 03 c8 add ecx, eax
00047 8b c1 mov eax, ecx
00049 c1 e8 08 shr eax, 8
; 4356 : }
0004c 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00053 5f pop rdi
00054 5d pop rbp
00055 c3 ret 0
stbi__blinn_8x8 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__cleanup_jpeg
_TEXT SEGMENT
j$ = 224
stbi__cleanup_jpeg PROC ; COMDAT
; 4338 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 4339 : stbi__free_jpeg_components(j, j->s->img_n, 0);
00020 48 8b 85 e0 00
00 00 mov rax, QWORD PTR j$[rbp]
00027 48 8b 00 mov rax, QWORD PTR [rax]
0002a 45 33 c0 xor r8d, r8d
0002d 8b 50 08 mov edx, DWORD PTR [rax+8]
00030 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR j$[rbp]
00037 e8 00 00 00 00 call stbi__free_jpeg_components
0003c 90 npad 1
; 4340 : }
0003d 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00044 5f pop rdi
00045 5d pop rbp
00046 c3 ret 0
stbi__cleanup_jpeg ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__setup_jpeg
_TEXT SEGMENT
j$ = 224
stbi__setup_jpeg PROC ; COMDAT
; 4316 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 4317 : j->idct_block_kernel = stbi__idct_block;
00020 48 8b 85 e0 00
00 00 mov rax, QWORD PTR j$[rbp]
00027 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__idct_block
0002e 48 89 88 70 48
00 00 mov QWORD PTR [rax+18544], rcx
; 4318 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row;
00035 48 8b 85 e0 00
00 00 mov rax, QWORD PTR j$[rbp]
0003c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__YCbCr_to_RGB_row
00043 48 89 88 78 48
00 00 mov QWORD PTR [rax+18552], rcx
; 4319 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2;
0004a 48 8b 85 e0 00
00 00 mov rax, QWORD PTR j$[rbp]
00051 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__resample_row_hv_2
00058 48 89 88 80 48
00 00 mov QWORD PTR [rax+18560], rcx
; 4320 :
; 4321 : #ifdef STBI_SSE2
; 4322 : if (stbi__sse2_available()) {
0005f e8 00 00 00 00 call stbi__sse2_available
00064 85 c0 test eax, eax
00066 74 3f je SHORT $LN2@stbi__setu
; 4323 : j->idct_block_kernel = stbi__idct_simd;
00068 48 8b 85 e0 00
00 00 mov rax, QWORD PTR j$[rbp]
0006f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__idct_simd
00076 48 89 88 70 48
00 00 mov QWORD PTR [rax+18544], rcx
; 4324 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;
0007d 48 8b 85 e0 00
00 00 mov rax, QWORD PTR j$[rbp]
00084 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__YCbCr_to_RGB_simd
0008b 48 89 88 78 48
00 00 mov QWORD PTR [rax+18552], rcx
; 4325 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;
00092 48 8b 85 e0 00
00 00 mov rax, QWORD PTR j$[rbp]
00099 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__resample_row_hv_2_simd
000a0 48 89 88 80 48
00 00 mov QWORD PTR [rax+18560], rcx
$LN2@stbi__setu:
; 4326 : }
; 4327 : #endif
; 4328 :
; 4329 : #ifdef STBI_NEON
; 4330 : j->idct_block_kernel = stbi__idct_simd;
; 4331 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;
; 4332 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;
; 4333 : #endif
; 4334 : }
000a7 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
000ae 5f pop rdi
000af 5d pop rbp
000b0 c3 ret 0
stbi__setup_jpeg ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__YCbCr_to_RGB_simd
_TEXT SEGMENT
i$ = 4
signflip$1 = 48
cr_const0$2 = 96
cr_const1$3 = 144
cb_const0$4 = 192
cb_const1$5 = 240
y_bias$6 = 288
xw$7 = 336
y_bytes$8 = 384
cr_bytes$9 = 432
cb_bytes$10 = 480
cr_biased$11 = 528
cb_biased$12 = 576
yw$13 = 624
crw$14 = 672
cbw$15 = 720
yws$16 = 768
cr0$17 = 816
cb0$18 = 864
cb1$19 = 912
cr1$20 = 960
rws$21 = 1008
gwt$22 = 1056
bws$23 = 1104
gws$24 = 1152
rw$25 = 1200
bw$26 = 1248
gw$27 = 1296
brb$28 = 1344
gxb$29 = 1392
t0$30 = 1440
t1$31 = 1488
o0$32 = 1536
o1$33 = 1584
y_fixed$34 = 1620
r$35 = 1652
g$36 = 1684
b$37 = 1716
cr$38 = 1748
cb$39 = 1780
out$ = 2608
y$ = 2616
pcb$ = 2624
pcr$ = 2632
count$ = 2640
step$ = 2648
stbi__YCbCr_to_RGB_simd PROC ; COMDAT
; 4165 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 38 0a
00 00 sub rsp, 2616 ; 00000a38H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 4166 : int i = 0;
0002f c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
; 4167 :
; 4168 : #ifdef STBI_SSE2
; 4169 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced
; 4170 : // it's useful in practice (you wouldn't use it for textures, for example).
; 4171 : // so just accelerate step == 4 case.
; 4172 : if (step == 4) {
00036 83 bd 58 0a 00
00 04 cmp DWORD PTR step$[rbp], 4
0003d 0f 85 28 03 00
00 jne $LN8@stbi__YCbC
; 4173 : // this is a fairly straightforward implementation and not super-optimized.
; 4174 : __m128i signflip = _mm_set1_epi8(-0x80);
00043 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@80808080808080808080808080808080
0004b 66 0f 7f 45 30 movdqa XMMWORD PTR signflip$1[rbp], xmm0
; 4175 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f));
00050 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@166f166f166f166f166f166f166f166f
00058 66 0f 7f 45 60 movdqa XMMWORD PTR cr_const0$2[rbp], xmm0
; 4176 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f));
0005d 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@f493f493f493f493f493f493f493f493
00065 66 0f 7f 85 90
00 00 00 movdqa XMMWORD PTR cr_const1$3[rbp], xmm0
; 4177 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f));
0006d 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e
00075 66 0f 7f 85 c0
00 00 00 movdqa XMMWORD PTR cb_const0$4[rbp], xmm0
; 4178 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f));
0007d 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a
00085 66 0f 7f 85 f0
00 00 00 movdqa XMMWORD PTR cb_const1$5[rbp], xmm0
; 4179 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128);
0008d 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@80808080808080808080808080808080
00095 66 0f 7f 85 20
01 00 00 movdqa XMMWORD PTR y_bias$6[rbp], xmm0
; 4180 : __m128i xw = _mm_set1_epi16(255); // alpha channel
0009d 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff
000a5 66 0f 7f 85 50
01 00 00 movdqa XMMWORD PTR xw$7[rbp], xmm0
; 4181 :
; 4182 : for (; i + 7 < count; i += 8) {
000ad eb 09 jmp SHORT $LN4@stbi__YCbC
$LN2@stbi__YCbC:
000af 8b 45 04 mov eax, DWORD PTR i$[rbp]
000b2 83 c0 08 add eax, 8
000b5 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__YCbC:
000b8 8b 45 04 mov eax, DWORD PTR i$[rbp]
000bb 83 c0 07 add eax, 7
000be 3b 85 50 0a 00
00 cmp eax, DWORD PTR count$[rbp]
000c4 0f 8d a1 02 00
00 jge $LN3@stbi__YCbC
; 4183 : // load
; 4184 : __m128i y_bytes = _mm_loadl_epi64((__m128i *)(y + i));
000ca 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000ce 48 8b 8d 38 0a
00 00 mov rcx, QWORD PTR y$[rbp]
000d5 48 03 c8 add rcx, rax
000d8 48 8b c1 mov rax, rcx
000db f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
000df 66 0f 7f 85 80
01 00 00 movdqa XMMWORD PTR y_bytes$8[rbp], xmm0
; 4185 : __m128i cr_bytes = _mm_loadl_epi64((__m128i *)(pcr + i));
000e7 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000eb 48 8b 8d 48 0a
00 00 mov rcx, QWORD PTR pcr$[rbp]
000f2 48 03 c8 add rcx, rax
000f5 48 8b c1 mov rax, rcx
000f8 f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
000fc 66 0f 7f 85 b0
01 00 00 movdqa XMMWORD PTR cr_bytes$9[rbp], xmm0
; 4186 : __m128i cb_bytes = _mm_loadl_epi64((__m128i *)(pcb + i));
00104 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00108 48 8b 8d 40 0a
00 00 mov rcx, QWORD PTR pcb$[rbp]
0010f 48 03 c8 add rcx, rax
00112 48 8b c1 mov rax, rcx
00115 f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
00119 66 0f 7f 85 e0
01 00 00 movdqa XMMWORD PTR cb_bytes$10[rbp], xmm0
; 4187 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128
00121 66 0f 6f 85 b0
01 00 00 movdqa xmm0, XMMWORD PTR cr_bytes$9[rbp]
00129 0f 57 45 30 xorps xmm0, XMMWORD PTR signflip$1[rbp]
0012d 66 0f 7f 85 10
02 00 00 movdqa XMMWORD PTR cr_biased$11[rbp], xmm0
; 4188 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128
00135 66 0f 6f 85 e0
01 00 00 movdqa xmm0, XMMWORD PTR cb_bytes$10[rbp]
0013d 0f 57 45 30 xorps xmm0, XMMWORD PTR signflip$1[rbp]
00141 66 0f 7f 85 40
02 00 00 movdqa XMMWORD PTR cb_biased$12[rbp], xmm0
; 4189 :
; 4190 : // unpack to short (and left-shift cr, cb by 8)
; 4191 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes);
00149 66 0f 6f 85 20
01 00 00 movdqa xmm0, XMMWORD PTR y_bias$6[rbp]
00151 66 0f 60 85 80
01 00 00 punpcklbw xmm0, XMMWORD PTR y_bytes$8[rbp]
00159 66 0f 7f 85 70
02 00 00 movdqa XMMWORD PTR yw$13[rbp], xmm0
; 4192 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased);
00161 66 0f ef c0 pxor xmm0, xmm0
00165 66 0f 60 85 10
02 00 00 punpcklbw xmm0, XMMWORD PTR cr_biased$11[rbp]
0016d 66 0f 7f 85 a0
02 00 00 movdqa XMMWORD PTR crw$14[rbp], xmm0
; 4193 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased);
00175 66 0f ef c0 pxor xmm0, xmm0
00179 66 0f 60 85 40
02 00 00 punpcklbw xmm0, XMMWORD PTR cb_biased$12[rbp]
00181 66 0f 7f 85 d0
02 00 00 movdqa XMMWORD PTR cbw$15[rbp], xmm0
; 4194 :
; 4195 : // color transform
; 4196 : __m128i yws = _mm_srli_epi16(yw, 4);
00189 66 0f 6f 85 70
02 00 00 movdqa xmm0, XMMWORD PTR yw$13[rbp]
00191 66 0f 71 d0 04 psrlw xmm0, 4
00196 66 0f 7f 85 00
03 00 00 movdqa XMMWORD PTR yws$16[rbp], xmm0
; 4197 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw);
0019e 66 0f 6f 45 60 movdqa xmm0, XMMWORD PTR cr_const0$2[rbp]
001a3 66 0f e5 85 a0
02 00 00 pmulhw xmm0, XMMWORD PTR crw$14[rbp]
001ab 66 0f 7f 85 30
03 00 00 movdqa XMMWORD PTR cr0$17[rbp], xmm0
; 4198 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw);
001b3 66 0f 6f 85 c0
00 00 00 movdqa xmm0, XMMWORD PTR cb_const0$4[rbp]
001bb 66 0f e5 85 d0
02 00 00 pmulhw xmm0, XMMWORD PTR cbw$15[rbp]
001c3 66 0f 7f 85 60
03 00 00 movdqa XMMWORD PTR cb0$18[rbp], xmm0
; 4199 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1);
001cb 66 0f 6f 85 d0
02 00 00 movdqa xmm0, XMMWORD PTR cbw$15[rbp]
001d3 66 0f e5 85 f0
00 00 00 pmulhw xmm0, XMMWORD PTR cb_const1$5[rbp]
001db 66 0f 7f 85 90
03 00 00 movdqa XMMWORD PTR cb1$19[rbp], xmm0
; 4200 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1);
001e3 66 0f 6f 85 a0
02 00 00 movdqa xmm0, XMMWORD PTR crw$14[rbp]
001eb 66 0f e5 85 90
00 00 00 pmulhw xmm0, XMMWORD PTR cr_const1$3[rbp]
001f3 66 0f 7f 85 c0
03 00 00 movdqa XMMWORD PTR cr1$20[rbp], xmm0
; 4201 : __m128i rws = _mm_add_epi16(cr0, yws);
001fb 66 0f 6f 85 30
03 00 00 movdqa xmm0, XMMWORD PTR cr0$17[rbp]
00203 66 0f fd 85 00
03 00 00 paddw xmm0, XMMWORD PTR yws$16[rbp]
0020b 66 0f 7f 85 f0
03 00 00 movdqa XMMWORD PTR rws$21[rbp], xmm0
; 4202 : __m128i gwt = _mm_add_epi16(cb0, yws);
00213 66 0f 6f 85 60
03 00 00 movdqa xmm0, XMMWORD PTR cb0$18[rbp]
0021b 66 0f fd 85 00
03 00 00 paddw xmm0, XMMWORD PTR yws$16[rbp]
00223 66 0f 7f 85 20
04 00 00 movdqa XMMWORD PTR gwt$22[rbp], xmm0
; 4203 : __m128i bws = _mm_add_epi16(yws, cb1);
0022b 66 0f 6f 85 00
03 00 00 movdqa xmm0, XMMWORD PTR yws$16[rbp]
00233 66 0f fd 85 90
03 00 00 paddw xmm0, XMMWORD PTR cb1$19[rbp]
0023b 66 0f 7f 85 50
04 00 00 movdqa XMMWORD PTR bws$23[rbp], xmm0
; 4204 : __m128i gws = _mm_add_epi16(gwt, cr1);
00243 66 0f 6f 85 20
04 00 00 movdqa xmm0, XMMWORD PTR gwt$22[rbp]
0024b 66 0f fd 85 c0
03 00 00 paddw xmm0, XMMWORD PTR cr1$20[rbp]
00253 66 0f 7f 85 80
04 00 00 movdqa XMMWORD PTR gws$24[rbp], xmm0
; 4205 :
; 4206 : // descale
; 4207 : __m128i rw = _mm_srai_epi16(rws, 4);
0025b 66 0f 6f 85 f0
03 00 00 movdqa xmm0, XMMWORD PTR rws$21[rbp]
00263 66 0f 71 e0 04 psraw xmm0, 4
00268 66 0f 7f 85 b0
04 00 00 movdqa XMMWORD PTR rw$25[rbp], xmm0
; 4208 : __m128i bw = _mm_srai_epi16(bws, 4);
00270 66 0f 6f 85 50
04 00 00 movdqa xmm0, XMMWORD PTR bws$23[rbp]
00278 66 0f 71 e0 04 psraw xmm0, 4
0027d 66 0f 7f 85 e0
04 00 00 movdqa XMMWORD PTR bw$26[rbp], xmm0
; 4209 : __m128i gw = _mm_srai_epi16(gws, 4);
00285 66 0f 6f 85 80
04 00 00 movdqa xmm0, XMMWORD PTR gws$24[rbp]
0028d 66 0f 71 e0 04 psraw xmm0, 4
00292 66 0f 7f 85 10
05 00 00 movdqa XMMWORD PTR gw$27[rbp], xmm0
; 4210 :
; 4211 : // back to byte, set up for transpose
; 4212 : __m128i brb = _mm_packus_epi16(rw, bw);
0029a 66 0f 6f 85 b0
04 00 00 movdqa xmm0, XMMWORD PTR rw$25[rbp]
002a2 66 0f 67 85 e0
04 00 00 packuswb xmm0, XMMWORD PTR bw$26[rbp]
002aa 66 0f 7f 85 40
05 00 00 movdqa XMMWORD PTR brb$28[rbp], xmm0
; 4213 : __m128i gxb = _mm_packus_epi16(gw, xw);
002b2 66 0f 6f 85 10
05 00 00 movdqa xmm0, XMMWORD PTR gw$27[rbp]
002ba 66 0f 67 85 50
01 00 00 packuswb xmm0, XMMWORD PTR xw$7[rbp]
002c2 66 0f 7f 85 70
05 00 00 movdqa XMMWORD PTR gxb$29[rbp], xmm0
; 4214 :
; 4215 : // transpose to interleave channels
; 4216 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb);
002ca 66 0f 6f 85 40
05 00 00 movdqa xmm0, XMMWORD PTR brb$28[rbp]
002d2 66 0f 60 85 70
05 00 00 punpcklbw xmm0, XMMWORD PTR gxb$29[rbp]
002da 66 0f 7f 85 a0
05 00 00 movdqa XMMWORD PTR t0$30[rbp], xmm0
; 4217 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb);
002e2 66 0f 6f 85 40
05 00 00 movdqa xmm0, XMMWORD PTR brb$28[rbp]
002ea 66 0f 68 85 70
05 00 00 punpckhbw xmm0, XMMWORD PTR gxb$29[rbp]
002f2 66 0f 7f 85 d0
05 00 00 movdqa XMMWORD PTR t1$31[rbp], xmm0
; 4218 : __m128i o0 = _mm_unpacklo_epi16(t0, t1);
002fa 66 0f 6f 85 a0
05 00 00 movdqa xmm0, XMMWORD PTR t0$30[rbp]
00302 66 0f 61 85 d0
05 00 00 punpcklwd xmm0, XMMWORD PTR t1$31[rbp]
0030a 66 0f 7f 85 00
06 00 00 movdqa XMMWORD PTR o0$32[rbp], xmm0
; 4219 : __m128i o1 = _mm_unpackhi_epi16(t0, t1);
00312 66 0f 6f 85 a0
05 00 00 movdqa xmm0, XMMWORD PTR t0$30[rbp]
0031a 66 0f 69 85 d0
05 00 00 punpckhwd xmm0, XMMWORD PTR t1$31[rbp]
00322 66 0f 7f 85 30
06 00 00 movdqa XMMWORD PTR o1$33[rbp], xmm0
; 4220 :
; 4221 : // store
; 4222 : _mm_storeu_si128((__m128i *)(out + 0), o0);
0032a 48 8b 85 30 0a
00 00 mov rax, QWORD PTR out$[rbp]
00331 66 0f 6f 85 00
06 00 00 movdqa xmm0, XMMWORD PTR o0$32[rbp]
00339 f3 0f 7f 00 movdqu XMMWORD PTR [rax], xmm0
; 4223 : _mm_storeu_si128((__m128i *)(out + 16), o1);
0033d 48 8b 85 30 0a
00 00 mov rax, QWORD PTR out$[rbp]
00344 48 83 c0 10 add rax, 16
00348 66 0f 6f 85 30
06 00 00 movdqa xmm0, XMMWORD PTR o1$33[rbp]
00350 f3 0f 7f 00 movdqu XMMWORD PTR [rax], xmm0
; 4224 : out += 32;
00354 48 8b 85 30 0a
00 00 mov rax, QWORD PTR out$[rbp]
0035b 48 83 c0 20 add rax, 32 ; 00000020H
0035f 48 89 85 30 0a
00 00 mov QWORD PTR out$[rbp], rax
; 4225 : }
00366 e9 44 fd ff ff jmp $LN2@stbi__YCbC
$LN3@stbi__YCbC:
$LN8@stbi__YCbC:
; 4226 : }
; 4227 : #endif
; 4228 :
; 4229 : #ifdef STBI_NEON
; 4230 : // in this version, step=3 support would be easy to add. but is there demand?
; 4231 : if (step == 4) {
; 4232 : // this is a fairly straightforward implementation and not super-optimized.
; 4233 : uint8x8_t signflip = vdup_n_u8(0x80);
; 4234 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f));
; 4235 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f));
; 4236 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f));
; 4237 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f));
; 4238 :
; 4239 : for (; i + 7 < count; i += 8) {
; 4240 : // load
; 4241 : uint8x8_t y_bytes = vld1_u8(y + i);
; 4242 : uint8x8_t cr_bytes = vld1_u8(pcr + i);
; 4243 : uint8x8_t cb_bytes = vld1_u8(pcb + i);
; 4244 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip));
; 4245 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip));
; 4246 :
; 4247 : // expand to s16
; 4248 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4));
; 4249 : int16x8_t crw = vshll_n_s8(cr_biased, 7);
; 4250 : int16x8_t cbw = vshll_n_s8(cb_biased, 7);
; 4251 :
; 4252 : // color transform
; 4253 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0);
; 4254 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0);
; 4255 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1);
; 4256 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1);
; 4257 : int16x8_t rws = vaddq_s16(yws, cr0);
; 4258 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1);
; 4259 : int16x8_t bws = vaddq_s16(yws, cb1);
; 4260 :
; 4261 : // undo scaling, round, convert to byte
; 4262 : uint8x8x4_t o;
; 4263 : o.val[0] = vqrshrun_n_s16(rws, 4);
; 4264 : o.val[1] = vqrshrun_n_s16(gws, 4);
; 4265 : o.val[2] = vqrshrun_n_s16(bws, 4);
; 4266 : o.val[3] = vdup_n_u8(255);
; 4267 :
; 4268 : // store, interleaving r/g/b/a
; 4269 : vst4_u8(out, o);
; 4270 : out += 8 * 4;
; 4271 : }
; 4272 : }
; 4273 : #endif
; 4274 :
; 4275 : for (; i < count; ++i) {
0036b eb 08 jmp SHORT $LN7@stbi__YCbC
$LN5@stbi__YCbC:
0036d 8b 45 04 mov eax, DWORD PTR i$[rbp]
00370 ff c0 inc eax
00372 89 45 04 mov DWORD PTR i$[rbp], eax
$LN7@stbi__YCbC:
00375 8b 85 50 0a 00
00 mov eax, DWORD PTR count$[rbp]
0037b 39 45 04 cmp DWORD PTR i$[rbp], eax
0037e 0f 8d e1 01 00
00 jge $LN6@stbi__YCbC
; 4276 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding
00384 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00388 48 8b 8d 38 0a
00 00 mov rcx, QWORD PTR y$[rbp]
0038f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00393 c1 e0 14 shl eax, 20
00396 05 00 00 08 00 add eax, 524288 ; 00080000H
0039b 89 85 54 06 00
00 mov DWORD PTR y_fixed$34[rbp], eax
; 4277 : int r, g, b;
; 4278 : int cr = pcr[i] - 128;
003a1 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
003a5 48 8b 8d 48 0a
00 00 mov rcx, QWORD PTR pcr$[rbp]
003ac 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
003b0 2d 80 00 00 00 sub eax, 128 ; 00000080H
003b5 89 85 d4 06 00
00 mov DWORD PTR cr$38[rbp], eax
; 4279 : int cb = pcb[i] - 128;
003bb 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
003bf 48 8b 8d 40 0a
00 00 mov rcx, QWORD PTR pcb$[rbp]
003c6 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
003ca 2d 80 00 00 00 sub eax, 128 ; 00000080H
003cf 89 85 f4 06 00
00 mov DWORD PTR cb$39[rbp], eax
; 4280 : r = y_fixed + cr * stbi__float2fixed(1.40200f);
003d5 69 85 d4 06 00
00 00 6f 16 00 imul eax, DWORD PTR cr$38[rbp], 1470208 ; 00166f00H
003df 8b 8d 54 06 00
00 mov ecx, DWORD PTR y_fixed$34[rbp]
003e5 03 c8 add ecx, eax
003e7 8b c1 mov eax, ecx
003e9 89 85 74 06 00
00 mov DWORD PTR r$35[rbp], eax
; 4281 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) +
003ef 69 85 d4 06 00
00 00 93 f4 ff imul eax, DWORD PTR cr$38[rbp], -748800 ; fffffffffff49300H
003f9 8b 8d 54 06 00
00 mov ecx, DWORD PTR y_fixed$34[rbp]
003ff 03 c8 add ecx, eax
00401 8b c1 mov eax, ecx
00403 69 8d f4 06 00
00 00 7e fa ff imul ecx, DWORD PTR cb$39[rbp], -360960 ; fffffffffffa7e00H
0040d 81 e1 00 00 ff
ff and ecx, -65536 ; ffff0000H
00413 03 c1 add eax, ecx
00415 89 85 94 06 00
00 mov DWORD PTR g$36[rbp], eax
; 4282 : ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000);
; 4283 : b = y_fixed + cb * stbi__float2fixed(1.77200f);
0041b 69 85 f4 06 00
00 00 5a 1c 00 imul eax, DWORD PTR cb$39[rbp], 1858048 ; 001c5a00H
00425 8b 8d 54 06 00
00 mov ecx, DWORD PTR y_fixed$34[rbp]
0042b 03 c8 add ecx, eax
0042d 8b c1 mov eax, ecx
0042f 89 85 b4 06 00
00 mov DWORD PTR b$37[rbp], eax
; 4284 : r >>= 20;
00435 8b 85 74 06 00
00 mov eax, DWORD PTR r$35[rbp]
0043b c1 f8 14 sar eax, 20
0043e 89 85 74 06 00
00 mov DWORD PTR r$35[rbp], eax
; 4285 : g >>= 20;
00444 8b 85 94 06 00
00 mov eax, DWORD PTR g$36[rbp]
0044a c1 f8 14 sar eax, 20
0044d 89 85 94 06 00
00 mov DWORD PTR g$36[rbp], eax
; 4286 : b >>= 20;
00453 8b 85 b4 06 00
00 mov eax, DWORD PTR b$37[rbp]
00459 c1 f8 14 sar eax, 20
0045c 89 85 b4 06 00
00 mov DWORD PTR b$37[rbp], eax
; 4287 : if ((unsigned)r > 255) {
00462 81 bd 74 06 00
00 ff 00 00 00 cmp DWORD PTR r$35[rbp], 255 ; 000000ffH
0046c 76 1f jbe SHORT $LN9@stbi__YCbC
; 4288 : if (r < 0)
0046e 83 bd 74 06 00
00 00 cmp DWORD PTR r$35[rbp], 0
00475 7d 0c jge SHORT $LN10@stbi__YCbC
; 4289 : r = 0;
00477 c7 85 74 06 00
00 00 00 00 00 mov DWORD PTR r$35[rbp], 0
00481 eb 0a jmp SHORT $LN11@stbi__YCbC
$LN10@stbi__YCbC:
; 4290 : else
; 4291 : r = 255;
00483 c7 85 74 06 00
00 ff 00 00 00 mov DWORD PTR r$35[rbp], 255 ; 000000ffH
$LN11@stbi__YCbC:
$LN9@stbi__YCbC:
; 4292 : }
; 4293 : if ((unsigned)g > 255) {
0048d 81 bd 94 06 00
00 ff 00 00 00 cmp DWORD PTR g$36[rbp], 255 ; 000000ffH
00497 76 1f jbe SHORT $LN12@stbi__YCbC
; 4294 : if (g < 0)
00499 83 bd 94 06 00
00 00 cmp DWORD PTR g$36[rbp], 0
004a0 7d 0c jge SHORT $LN13@stbi__YCbC
; 4295 : g = 0;
004a2 c7 85 94 06 00
00 00 00 00 00 mov DWORD PTR g$36[rbp], 0
004ac eb 0a jmp SHORT $LN14@stbi__YCbC
$LN13@stbi__YCbC:
; 4296 : else
; 4297 : g = 255;
004ae c7 85 94 06 00
00 ff 00 00 00 mov DWORD PTR g$36[rbp], 255 ; 000000ffH
$LN14@stbi__YCbC:
$LN12@stbi__YCbC:
; 4298 : }
; 4299 : if ((unsigned)b > 255) {
004b8 81 bd b4 06 00
00 ff 00 00 00 cmp DWORD PTR b$37[rbp], 255 ; 000000ffH
004c2 76 1f jbe SHORT $LN15@stbi__YCbC
; 4300 : if (b < 0)
004c4 83 bd b4 06 00
00 00 cmp DWORD PTR b$37[rbp], 0
004cb 7d 0c jge SHORT $LN16@stbi__YCbC
; 4301 : b = 0;
004cd c7 85 b4 06 00
00 00 00 00 00 mov DWORD PTR b$37[rbp], 0
004d7 eb 0a jmp SHORT $LN17@stbi__YCbC
$LN16@stbi__YCbC:
; 4302 : else
; 4303 : b = 255;
004d9 c7 85 b4 06 00
00 ff 00 00 00 mov DWORD PTR b$37[rbp], 255 ; 000000ffH
$LN17@stbi__YCbC:
$LN15@stbi__YCbC:
; 4304 : }
; 4305 : out[0] = (stbi_uc)r;
004e3 b8 01 00 00 00 mov eax, 1
004e8 48 6b c0 00 imul rax, rax, 0
004ec 48 8b 8d 30 0a
00 00 mov rcx, QWORD PTR out$[rbp]
004f3 0f b6 95 74 06
00 00 movzx edx, BYTE PTR r$35[rbp]
004fa 88 14 01 mov BYTE PTR [rcx+rax], dl
; 4306 : out[1] = (stbi_uc)g;
004fd b8 01 00 00 00 mov eax, 1
00502 48 6b c0 01 imul rax, rax, 1
00506 48 8b 8d 30 0a
00 00 mov rcx, QWORD PTR out$[rbp]
0050d 0f b6 95 94 06
00 00 movzx edx, BYTE PTR g$36[rbp]
00514 88 14 01 mov BYTE PTR [rcx+rax], dl
; 4307 : out[2] = (stbi_uc)b;
00517 b8 01 00 00 00 mov eax, 1
0051c 48 6b c0 02 imul rax, rax, 2
00520 48 8b 8d 30 0a
00 00 mov rcx, QWORD PTR out$[rbp]
00527 0f b6 95 b4 06
00 00 movzx edx, BYTE PTR b$37[rbp]
0052e 88 14 01 mov BYTE PTR [rcx+rax], dl
; 4308 : out[3] = 255;
00531 b8 01 00 00 00 mov eax, 1
00536 48 6b c0 03 imul rax, rax, 3
0053a 48 8b 8d 30 0a
00 00 mov rcx, QWORD PTR out$[rbp]
00541 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4309 : out += step;
00545 48 63 85 58 0a
00 00 movsxd rax, DWORD PTR step$[rbp]
0054c 48 8b 8d 30 0a
00 00 mov rcx, QWORD PTR out$[rbp]
00553 48 03 c8 add rcx, rax
00556 48 8b c1 mov rax, rcx
00559 48 89 85 30 0a
00 00 mov QWORD PTR out$[rbp], rax
; 4310 : }
00560 e9 08 fe ff ff jmp $LN5@stbi__YCbC
$LN6@stbi__YCbC:
; 4311 : }
00565 48 8d a5 18 0a
00 00 lea rsp, QWORD PTR [rbp+2584]
0056c 5f pop rdi
0056d 5d pop rbp
0056e c3 ret 0
stbi__YCbCr_to_RGB_simd ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__YCbCr_to_RGB_row
_TEXT SEGMENT
i$ = 4
y_fixed$1 = 36
r$2 = 68
g$3 = 100
b$4 = 132
cr$5 = 164
cb$6 = 196
out$ = 448
y$ = 456
pcb$ = 464
pcr$ = 472
count$ = 480
step$ = 488
stbi__YCbCr_to_RGB_row PROC ; COMDAT
; 4122 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec c8 01
00 00 sub rsp, 456 ; 000001c8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 4123 : int i;
; 4124 : for (i = 0; i < count; ++i) {
0002f c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00036 eb 08 jmp SHORT $LN4@stbi__YCbC
$LN2@stbi__YCbC:
00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
0003b ff c0 inc eax
0003d 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__YCbC:
00040 8b 85 e0 01 00
00 mov eax, DWORD PTR count$[rbp]
00046 39 45 04 cmp DWORD PTR i$[rbp], eax
00049 0f 8d a5 01 00
00 jge $LN3@stbi__YCbC
; 4125 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding
0004f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00053 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR y$[rbp]
0005a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0005e c1 e0 14 shl eax, 20
00061 05 00 00 08 00 add eax, 524288 ; 00080000H
00066 89 45 24 mov DWORD PTR y_fixed$1[rbp], eax
; 4126 : int r, g, b;
; 4127 : int cr = pcr[i] - 128;
00069 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0006d 48 8b 8d d8 01
00 00 mov rcx, QWORD PTR pcr$[rbp]
00074 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00078 2d 80 00 00 00 sub eax, 128 ; 00000080H
0007d 89 85 a4 00 00
00 mov DWORD PTR cr$5[rbp], eax
; 4128 : int cb = pcb[i] - 128;
00083 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00087 48 8b 8d d0 01
00 00 mov rcx, QWORD PTR pcb$[rbp]
0008e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00092 2d 80 00 00 00 sub eax, 128 ; 00000080H
00097 89 85 c4 00 00
00 mov DWORD PTR cb$6[rbp], eax
; 4129 : r = y_fixed + cr * stbi__float2fixed(1.40200f);
0009d 69 85 a4 00 00
00 00 6f 16 00 imul eax, DWORD PTR cr$5[rbp], 1470208 ; 00166f00H
000a7 8b 4d 24 mov ecx, DWORD PTR y_fixed$1[rbp]
000aa 03 c8 add ecx, eax
000ac 8b c1 mov eax, ecx
000ae 89 45 44 mov DWORD PTR r$2[rbp], eax
; 4130 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) +
000b1 69 85 a4 00 00
00 00 93 f4 ff imul eax, DWORD PTR cr$5[rbp], -748800 ; fffffffffff49300H
000bb 8b 4d 24 mov ecx, DWORD PTR y_fixed$1[rbp]
000be 03 c8 add ecx, eax
000c0 8b c1 mov eax, ecx
000c2 69 8d c4 00 00
00 00 7e fa ff imul ecx, DWORD PTR cb$6[rbp], -360960 ; fffffffffffa7e00H
000cc 81 e1 00 00 ff
ff and ecx, -65536 ; ffff0000H
000d2 03 c1 add eax, ecx
000d4 89 45 64 mov DWORD PTR g$3[rbp], eax
; 4131 : ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000);
; 4132 : b = y_fixed + cb * stbi__float2fixed(1.77200f);
000d7 69 85 c4 00 00
00 00 5a 1c 00 imul eax, DWORD PTR cb$6[rbp], 1858048 ; 001c5a00H
000e1 8b 4d 24 mov ecx, DWORD PTR y_fixed$1[rbp]
000e4 03 c8 add ecx, eax
000e6 8b c1 mov eax, ecx
000e8 89 85 84 00 00
00 mov DWORD PTR b$4[rbp], eax
; 4133 : r >>= 20;
000ee 8b 45 44 mov eax, DWORD PTR r$2[rbp]
000f1 c1 f8 14 sar eax, 20
000f4 89 45 44 mov DWORD PTR r$2[rbp], eax
; 4134 : g >>= 20;
000f7 8b 45 64 mov eax, DWORD PTR g$3[rbp]
000fa c1 f8 14 sar eax, 20
000fd 89 45 64 mov DWORD PTR g$3[rbp], eax
; 4135 : b >>= 20;
00100 8b 85 84 00 00
00 mov eax, DWORD PTR b$4[rbp]
00106 c1 f8 14 sar eax, 20
00109 89 85 84 00 00
00 mov DWORD PTR b$4[rbp], eax
; 4136 : if ((unsigned)r > 255) {
0010f 81 7d 44 ff 00
00 00 cmp DWORD PTR r$2[rbp], 255 ; 000000ffH
00116 76 16 jbe SHORT $LN5@stbi__YCbC
; 4137 : if (r < 0)
00118 83 7d 44 00 cmp DWORD PTR r$2[rbp], 0
0011c 7d 09 jge SHORT $LN6@stbi__YCbC
; 4138 : r = 0;
0011e c7 45 44 00 00
00 00 mov DWORD PTR r$2[rbp], 0
00125 eb 07 jmp SHORT $LN7@stbi__YCbC
$LN6@stbi__YCbC:
; 4139 : else
; 4140 : r = 255;
00127 c7 45 44 ff 00
00 00 mov DWORD PTR r$2[rbp], 255 ; 000000ffH
$LN7@stbi__YCbC:
$LN5@stbi__YCbC:
; 4141 : }
; 4142 : if ((unsigned)g > 255) {
0012e 81 7d 64 ff 00
00 00 cmp DWORD PTR g$3[rbp], 255 ; 000000ffH
00135 76 16 jbe SHORT $LN8@stbi__YCbC
; 4143 : if (g < 0)
00137 83 7d 64 00 cmp DWORD PTR g$3[rbp], 0
0013b 7d 09 jge SHORT $LN9@stbi__YCbC
; 4144 : g = 0;
0013d c7 45 64 00 00
00 00 mov DWORD PTR g$3[rbp], 0
00144 eb 07 jmp SHORT $LN10@stbi__YCbC
$LN9@stbi__YCbC:
; 4145 : else
; 4146 : g = 255;
00146 c7 45 64 ff 00
00 00 mov DWORD PTR g$3[rbp], 255 ; 000000ffH
$LN10@stbi__YCbC:
$LN8@stbi__YCbC:
; 4147 : }
; 4148 : if ((unsigned)b > 255) {
0014d 81 bd 84 00 00
00 ff 00 00 00 cmp DWORD PTR b$4[rbp], 255 ; 000000ffH
00157 76 1f jbe SHORT $LN11@stbi__YCbC
; 4149 : if (b < 0)
00159 83 bd 84 00 00
00 00 cmp DWORD PTR b$4[rbp], 0
00160 7d 0c jge SHORT $LN12@stbi__YCbC
; 4150 : b = 0;
00162 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR b$4[rbp], 0
0016c eb 0a jmp SHORT $LN13@stbi__YCbC
$LN12@stbi__YCbC:
; 4151 : else
; 4152 : b = 255;
0016e c7 85 84 00 00
00 ff 00 00 00 mov DWORD PTR b$4[rbp], 255 ; 000000ffH
$LN13@stbi__YCbC:
$LN11@stbi__YCbC:
; 4153 : }
; 4154 : out[0] = (stbi_uc)r;
00178 b8 01 00 00 00 mov eax, 1
0017d 48 6b c0 00 imul rax, rax, 0
00181 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR out$[rbp]
00188 0f b6 55 44 movzx edx, BYTE PTR r$2[rbp]
0018c 88 14 01 mov BYTE PTR [rcx+rax], dl
; 4155 : out[1] = (stbi_uc)g;
0018f b8 01 00 00 00 mov eax, 1
00194 48 6b c0 01 imul rax, rax, 1
00198 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR out$[rbp]
0019f 0f b6 55 64 movzx edx, BYTE PTR g$3[rbp]
001a3 88 14 01 mov BYTE PTR [rcx+rax], dl
; 4156 : out[2] = (stbi_uc)b;
001a6 b8 01 00 00 00 mov eax, 1
001ab 48 6b c0 02 imul rax, rax, 2
001af 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR out$[rbp]
001b6 0f b6 95 84 00
00 00 movzx edx, BYTE PTR b$4[rbp]
001bd 88 14 01 mov BYTE PTR [rcx+rax], dl
; 4157 : out[3] = 255;
001c0 b8 01 00 00 00 mov eax, 1
001c5 48 6b c0 03 imul rax, rax, 3
001c9 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR out$[rbp]
001d0 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 4158 : out += step;
001d4 48 63 85 e8 01
00 00 movsxd rax, DWORD PTR step$[rbp]
001db 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR out$[rbp]
001e2 48 03 c8 add rcx, rax
001e5 48 8b c1 mov rax, rcx
001e8 48 89 85 c0 01
00 00 mov QWORD PTR out$[rbp], rax
; 4159 : }
001ef e9 44 fe ff ff jmp $LN2@stbi__YCbC
$LN3@stbi__YCbC:
; 4160 : }
001f4 48 8d a5 a8 01
00 00 lea rsp, QWORD PTR [rbp+424]
001fb 5f pop rdi
001fc 5d pop rbp
001fd c3 ret 0
stbi__YCbCr_to_RGB_row ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__resample_row_generic
_TEXT SEGMENT
i$ = 4
j$ = 36
out$ = 288
in_near$ = 296
in_far$ = 304
w$ = 312
hs$ = 320
stbi__resample_row_generic PROC ; COMDAT
; 4107 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 4108 : // resample with nearest-neighbor
; 4109 : int i, j;
; 4110 : STBI_NOTUSED(in_far);
; 4111 : for (i = 0; i < w; ++i)
0002f c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00036 eb 08 jmp SHORT $LN4@stbi__resa
$LN2@stbi__resa:
00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
0003b ff c0 inc eax
0003d 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__resa:
00040 8b 85 38 01 00
00 mov eax, DWORD PTR w$[rbp]
00046 39 45 04 cmp DWORD PTR i$[rbp], eax
00049 7d 4a jge SHORT $LN3@stbi__resa
; 4112 : for (j = 0; j < hs; ++j)
0004b c7 45 24 00 00
00 00 mov DWORD PTR j$[rbp], 0
00052 eb 08 jmp SHORT $LN7@stbi__resa
$LN5@stbi__resa:
00054 8b 45 24 mov eax, DWORD PTR j$[rbp]
00057 ff c0 inc eax
00059 89 45 24 mov DWORD PTR j$[rbp], eax
$LN7@stbi__resa:
0005c 8b 85 40 01 00
00 mov eax, DWORD PTR hs$[rbp]
00062 39 45 24 cmp DWORD PTR j$[rbp], eax
00065 7d 2c jge SHORT $LN6@stbi__resa
; 4113 : out[i * hs + j] = in_near[i];
00067 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0006b 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
0006e 0f af 8d 40 01
00 00 imul ecx, DWORD PTR hs$[rbp]
00075 03 4d 24 add ecx, DWORD PTR j$[rbp]
00078 48 63 c9 movsxd rcx, ecx
0007b 48 8b 95 20 01
00 00 mov rdx, QWORD PTR out$[rbp]
00082 4c 8b 85 28 01
00 00 mov r8, QWORD PTR in_near$[rbp]
00089 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0008e 88 04 0a mov BYTE PTR [rdx+rcx], al
00091 eb c1 jmp SHORT $LN5@stbi__resa
$LN6@stbi__resa:
00093 eb a3 jmp SHORT $LN2@stbi__resa
$LN3@stbi__resa:
; 4114 : return out;
00095 48 8b 85 20 01
00 00 mov rax, QWORD PTR out$[rbp]
; 4115 : }
0009c 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000a3 5f pop rdi
000a4 5d pop rbp
000a5 c3 ret 0
stbi__resample_row_generic ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__resample_row_hv_2_simd
_TEXT SEGMENT
i$ = 4
t0$ = 36
t1$ = 68
zero$1 = 112
farb$2 = 160
nearb$3 = 208
farw$4 = 256
nearw$5 = 304
diff$6 = 352
nears$7 = 400
curr$8 = 448
prv0$9 = 496
nxt0$10 = 544
prev$11 = 592
next$12 = 640
bias$13 = 688
curs$14 = 736
prvd$15 = 784
nxtd$16 = 832
curb$17 = 880
even$18 = 928
odd$19 = 976
int0$20 = 1024
int1$21 = 1072
de0$22 = 1120
de1$23 = 1168
outv$24 = 1216
tv78 = 1812
out$ = 1856
in_near$ = 1864
in_far$ = 1872
w$ = 1880
hs$ = 1888
stbi__resample_row_hv_2_simd PROC ; COMDAT
; 3990 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 07
00 00 sub rsp, 1864 ; 00000748H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 3991 : // need to generate 2x2 samples for every one in input
; 3992 : int i = 0, t0, t1;
0002f c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
; 3993 :
; 3994 : if (w == 1) {
00036 83 bd 58 07 00
00 01 cmp DWORD PTR w$[rbp], 1
0003d 75 78 jne SHORT $LN8@stbi__resa
; 3995 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2);
0003f b8 01 00 00 00 mov eax, 1
00044 48 6b c0 00 imul rax, rax, 0
00048 48 8b 8d 48 07
00 00 mov rcx, QWORD PTR in_near$[rbp]
0004f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00053 6b c0 03 imul eax, eax, 3
00056 b9 01 00 00 00 mov ecx, 1
0005b 48 6b c9 00 imul rcx, rcx, 0
0005f 48 8b 95 50 07
00 00 mov rdx, QWORD PTR in_far$[rbp]
00066 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0006a 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
0006e c1 f8 02 sar eax, 2
00071 89 85 14 07 00
00 mov DWORD PTR tv78[rbp], eax
00077 b8 01 00 00 00 mov eax, 1
0007c 48 6b c0 01 imul rax, rax, 1
00080 48 8b 8d 40 07
00 00 mov rcx, QWORD PTR out$[rbp]
00087 0f b6 95 14 07
00 00 movzx edx, BYTE PTR tv78[rbp]
0008e 88 14 01 mov BYTE PTR [rcx+rax], dl
00091 b8 01 00 00 00 mov eax, 1
00096 48 6b c0 00 imul rax, rax, 0
0009a 48 8b 8d 40 07
00 00 mov rcx, QWORD PTR out$[rbp]
000a1 0f b6 95 14 07
00 00 movzx edx, BYTE PTR tv78[rbp]
000a8 88 14 01 mov BYTE PTR [rcx+rax], dl
; 3996 : return out;
000ab 48 8b 85 40 07
00 00 mov rax, QWORD PTR out$[rbp]
000b2 e9 e8 03 00 00 jmp $LN1@stbi__resa
$LN8@stbi__resa:
; 3997 : }
; 3998 :
; 3999 : t1 = 3 * in_near[0] + in_far[0];
000b7 b8 01 00 00 00 mov eax, 1
000bc 48 6b c0 00 imul rax, rax, 0
000c0 48 8b 8d 48 07
00 00 mov rcx, QWORD PTR in_near$[rbp]
000c7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000cb 6b c0 03 imul eax, eax, 3
000ce b9 01 00 00 00 mov ecx, 1
000d3 48 6b c9 00 imul rcx, rcx, 0
000d7 48 8b 95 50 07
00 00 mov rdx, QWORD PTR in_far$[rbp]
000de 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000e2 03 c1 add eax, ecx
000e4 89 45 44 mov DWORD PTR t1$[rbp], eax
; 4000 : // process groups of 8 pixels for as long as we can.
; 4001 : // note we can't handle the last pixel in a row in this loop
; 4002 : // because we need to handle the filter boundary conditions.
; 4003 : for (; i < ((w - 1) & ~7); i += 8) {
000e7 eb 09 jmp SHORT $LN4@stbi__resa
$LN2@stbi__resa:
000e9 8b 45 04 mov eax, DWORD PTR i$[rbp]
000ec 83 c0 08 add eax, 8
000ef 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__resa:
000f2 8b 85 58 07 00
00 mov eax, DWORD PTR w$[rbp]
000f8 ff c8 dec eax
000fa 83 e0 f8 and eax, -8
000fd 39 45 04 cmp DWORD PTR i$[rbp], eax
00100 0f 8d 96 02 00
00 jge $LN3@stbi__resa
; 4004 : #if defined(STBI_SSE2)
; 4005 : // load and perform the vertical filtering pass
; 4006 : // this uses 3*x + y = 4*x + (y - x)
; 4007 : __m128i zero = _mm_setzero_si128();
00106 66 0f ef c0 pxor xmm0, xmm0
0010a 66 0f 7f 45 70 movdqa XMMWORD PTR zero$1[rbp], xmm0
; 4008 : __m128i farb = _mm_loadl_epi64((__m128i *)(in_far + i));
0010f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00113 48 8b 8d 50 07
00 00 mov rcx, QWORD PTR in_far$[rbp]
0011a 48 03 c8 add rcx, rax
0011d 48 8b c1 mov rax, rcx
00120 f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
00124 66 0f 7f 85 a0
00 00 00 movdqa XMMWORD PTR farb$2[rbp], xmm0
; 4009 : __m128i nearb = _mm_loadl_epi64((__m128i *)(in_near + i));
0012c 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00130 48 8b 8d 48 07
00 00 mov rcx, QWORD PTR in_near$[rbp]
00137 48 03 c8 add rcx, rax
0013a 48 8b c1 mov rax, rcx
0013d f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
00141 66 0f 7f 85 d0
00 00 00 movdqa XMMWORD PTR nearb$3[rbp], xmm0
; 4010 : __m128i farw = _mm_unpacklo_epi8(farb, zero);
00149 66 0f 6f 85 a0
00 00 00 movdqa xmm0, XMMWORD PTR farb$2[rbp]
00151 66 0f 60 45 70 punpcklbw xmm0, XMMWORD PTR zero$1[rbp]
00156 66 0f 7f 85 00
01 00 00 movdqa XMMWORD PTR farw$4[rbp], xmm0
; 4011 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero);
0015e 66 0f 6f 85 d0
00 00 00 movdqa xmm0, XMMWORD PTR nearb$3[rbp]
00166 66 0f 60 45 70 punpcklbw xmm0, XMMWORD PTR zero$1[rbp]
0016b 66 0f 7f 85 30
01 00 00 movdqa XMMWORD PTR nearw$5[rbp], xmm0
; 4012 : __m128i diff = _mm_sub_epi16(farw, nearw);
00173 66 0f 6f 85 00
01 00 00 movdqa xmm0, XMMWORD PTR farw$4[rbp]
0017b 66 0f f9 85 30
01 00 00 psubw xmm0, XMMWORD PTR nearw$5[rbp]
00183 66 0f 7f 85 60
01 00 00 movdqa XMMWORD PTR diff$6[rbp], xmm0
; 4013 : __m128i nears = _mm_slli_epi16(nearw, 2);
0018b 66 0f 6f 85 30
01 00 00 movdqa xmm0, XMMWORD PTR nearw$5[rbp]
00193 66 0f 71 f0 02 psllw xmm0, 2
00198 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR nears$7[rbp], xmm0
; 4014 : __m128i curr = _mm_add_epi16(nears, diff); // current row
001a0 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR nears$7[rbp]
001a8 66 0f fd 85 60
01 00 00 paddw xmm0, XMMWORD PTR diff$6[rbp]
001b0 66 0f 7f 85 c0
01 00 00 movdqa XMMWORD PTR curr$8[rbp], xmm0
; 4015 :
; 4016 : // horizontal filter works the same based on shifted vers of current
; 4017 : // row. "prev" is current row shifted right by 1 pixel; we need to
; 4018 : // insert the previous pixel value (from t1).
; 4019 : // "next" is current row shifted left by 1 pixel, with first pixel
; 4020 : // of next block of 8 pixels added in.
; 4021 : __m128i prv0 = _mm_slli_si128(curr, 2);
001b8 66 0f 6f 85 c0
01 00 00 movdqa xmm0, XMMWORD PTR curr$8[rbp]
001c0 66 0f 73 f8 02 pslldq xmm0, 2
001c5 66 0f 7f 85 f0
01 00 00 movdqa XMMWORD PTR prv0$9[rbp], xmm0
; 4022 : __m128i nxt0 = _mm_srli_si128(curr, 2);
001cd 66 0f 6f 85 c0
01 00 00 movdqa xmm0, XMMWORD PTR curr$8[rbp]
001d5 66 0f 73 d8 02 psrldq xmm0, 2
001da 66 0f 7f 85 20
02 00 00 movdqa XMMWORD PTR nxt0$10[rbp], xmm0
; 4023 : __m128i prev = _mm_insert_epi16(prv0, t1, 0);
001e2 66 0f 6f 85 f0
01 00 00 movdqa xmm0, XMMWORD PTR prv0$9[rbp]
001ea 66 0f c4 45 44
00 pinsrw xmm0, DWORD PTR t1$[rbp], 0
001f0 66 0f 7f 85 50
02 00 00 movdqa XMMWORD PTR prev$11[rbp], xmm0
; 4024 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7);
001f8 8b 45 04 mov eax, DWORD PTR i$[rbp]
001fb 83 c0 08 add eax, 8
001fe 48 98 cdqe
00200 48 8b 8d 48 07
00 00 mov rcx, QWORD PTR in_near$[rbp]
00207 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0020b 6b c0 03 imul eax, eax, 3
0020e 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00211 83 c1 08 add ecx, 8
00214 48 63 c9 movsxd rcx, ecx
00217 48 8b 95 50 07
00 00 mov rdx, QWORD PTR in_far$[rbp]
0021e 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00222 03 c1 add eax, ecx
00224 66 0f 6f 85 20
02 00 00 movdqa xmm0, XMMWORD PTR nxt0$10[rbp]
0022c 66 0f c4 c0 07 pinsrw xmm0, eax, 7
00231 66 0f 7f 85 80
02 00 00 movdqa XMMWORD PTR next$12[rbp], xmm0
; 4025 :
; 4026 : // horizontal filter, polyphase implementation since it's convenient:
; 4027 : // even pixels = 3*cur + prev = cur*4 + (prev - cur)
; 4028 : // odd pixels = 3*cur + next = cur*4 + (next - cur)
; 4029 : // note the shared term.
; 4030 : __m128i bias = _mm_set1_epi16(8);
00239 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00080008000800080008000800080008
00241 66 0f 7f 85 b0
02 00 00 movdqa XMMWORD PTR bias$13[rbp], xmm0
; 4031 : __m128i curs = _mm_slli_epi16(curr, 2);
00249 66 0f 6f 85 c0
01 00 00 movdqa xmm0, XMMWORD PTR curr$8[rbp]
00251 66 0f 71 f0 02 psllw xmm0, 2
00256 66 0f 7f 85 e0
02 00 00 movdqa XMMWORD PTR curs$14[rbp], xmm0
; 4032 : __m128i prvd = _mm_sub_epi16(prev, curr);
0025e 66 0f 6f 85 50
02 00 00 movdqa xmm0, XMMWORD PTR prev$11[rbp]
00266 66 0f f9 85 c0
01 00 00 psubw xmm0, XMMWORD PTR curr$8[rbp]
0026e 66 0f 7f 85 10
03 00 00 movdqa XMMWORD PTR prvd$15[rbp], xmm0
; 4033 : __m128i nxtd = _mm_sub_epi16(next, curr);
00276 66 0f 6f 85 80
02 00 00 movdqa xmm0, XMMWORD PTR next$12[rbp]
0027e 66 0f f9 85 c0
01 00 00 psubw xmm0, XMMWORD PTR curr$8[rbp]
00286 66 0f 7f 85 40
03 00 00 movdqa XMMWORD PTR nxtd$16[rbp], xmm0
; 4034 : __m128i curb = _mm_add_epi16(curs, bias);
0028e 66 0f 6f 85 e0
02 00 00 movdqa xmm0, XMMWORD PTR curs$14[rbp]
00296 66 0f fd 85 b0
02 00 00 paddw xmm0, XMMWORD PTR bias$13[rbp]
0029e 66 0f 7f 85 70
03 00 00 movdqa XMMWORD PTR curb$17[rbp], xmm0
; 4035 : __m128i even = _mm_add_epi16(prvd, curb);
002a6 66 0f 6f 85 10
03 00 00 movdqa xmm0, XMMWORD PTR prvd$15[rbp]
002ae 66 0f fd 85 70
03 00 00 paddw xmm0, XMMWORD PTR curb$17[rbp]
002b6 66 0f 7f 85 a0
03 00 00 movdqa XMMWORD PTR even$18[rbp], xmm0
; 4036 : __m128i odd = _mm_add_epi16(nxtd, curb);
002be 66 0f 6f 85 40
03 00 00 movdqa xmm0, XMMWORD PTR nxtd$16[rbp]
002c6 66 0f fd 85 70
03 00 00 paddw xmm0, XMMWORD PTR curb$17[rbp]
002ce 66 0f 7f 85 d0
03 00 00 movdqa XMMWORD PTR odd$19[rbp], xmm0
; 4037 :
; 4038 : // interleave even and odd pixels, then undo scaling.
; 4039 : __m128i int0 = _mm_unpacklo_epi16(even, odd);
002d6 66 0f 6f 85 a0
03 00 00 movdqa xmm0, XMMWORD PTR even$18[rbp]
002de 66 0f 61 85 d0
03 00 00 punpcklwd xmm0, XMMWORD PTR odd$19[rbp]
002e6 66 0f 7f 85 00
04 00 00 movdqa XMMWORD PTR int0$20[rbp], xmm0
; 4040 : __m128i int1 = _mm_unpackhi_epi16(even, odd);
002ee 66 0f 6f 85 a0
03 00 00 movdqa xmm0, XMMWORD PTR even$18[rbp]
002f6 66 0f 69 85 d0
03 00 00 punpckhwd xmm0, XMMWORD PTR odd$19[rbp]
002fe 66 0f 7f 85 30
04 00 00 movdqa XMMWORD PTR int1$21[rbp], xmm0
; 4041 : __m128i de0 = _mm_srli_epi16(int0, 4);
00306 66 0f 6f 85 00
04 00 00 movdqa xmm0, XMMWORD PTR int0$20[rbp]
0030e 66 0f 71 d0 04 psrlw xmm0, 4
00313 66 0f 7f 85 60
04 00 00 movdqa XMMWORD PTR de0$22[rbp], xmm0
; 4042 : __m128i de1 = _mm_srli_epi16(int1, 4);
0031b 66 0f 6f 85 30
04 00 00 movdqa xmm0, XMMWORD PTR int1$21[rbp]
00323 66 0f 71 d0 04 psrlw xmm0, 4
00328 66 0f 7f 85 90
04 00 00 movdqa XMMWORD PTR de1$23[rbp], xmm0
; 4043 :
; 4044 : // pack and write output
; 4045 : __m128i outv = _mm_packus_epi16(de0, de1);
00330 66 0f 6f 85 60
04 00 00 movdqa xmm0, XMMWORD PTR de0$22[rbp]
00338 66 0f 67 85 90
04 00 00 packuswb xmm0, XMMWORD PTR de1$23[rbp]
00340 66 0f 7f 85 c0
04 00 00 movdqa XMMWORD PTR outv$24[rbp], xmm0
; 4046 : _mm_storeu_si128((__m128i *)(out + i * 2), outv);
00348 8b 45 04 mov eax, DWORD PTR i$[rbp]
0034b 03 c0 add eax, eax
0034d 48 98 cdqe
0034f 48 8b 8d 40 07
00 00 mov rcx, QWORD PTR out$[rbp]
00356 48 03 c8 add rcx, rax
00359 48 8b c1 mov rax, rcx
0035c 66 0f 6f 85 c0
04 00 00 movdqa xmm0, XMMWORD PTR outv$24[rbp]
00364 f3 0f 7f 00 movdqu XMMWORD PTR [rax], xmm0
; 4047 : #elif defined(STBI_NEON)
; 4048 : // load and perform the vertical filtering pass
; 4049 : // this uses 3*x + y = 4*x + (y - x)
; 4050 : uint8x8_t farb = vld1_u8(in_far + i);
; 4051 : uint8x8_t nearb = vld1_u8(in_near + i);
; 4052 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb));
; 4053 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2));
; 4054 : int16x8_t curr = vaddq_s16(nears, diff); // current row
; 4055 :
; 4056 : // horizontal filter works the same based on shifted vers of current
; 4057 : // row. "prev" is current row shifted right by 1 pixel; we need to
; 4058 : // insert the previous pixel value (from t1).
; 4059 : // "next" is current row shifted left by 1 pixel, with first pixel
; 4060 : // of next block of 8 pixels added in.
; 4061 : int16x8_t prv0 = vextq_s16(curr, curr, 7);
; 4062 : int16x8_t nxt0 = vextq_s16(curr, curr, 1);
; 4063 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0);
; 4064 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7);
; 4065 :
; 4066 : // horizontal filter, polyphase implementation since it's convenient:
; 4067 : // even pixels = 3*cur + prev = cur*4 + (prev - cur)
; 4068 : // odd pixels = 3*cur + next = cur*4 + (next - cur)
; 4069 : // note the shared term.
; 4070 : int16x8_t curs = vshlq_n_s16(curr, 2);
; 4071 : int16x8_t prvd = vsubq_s16(prev, curr);
; 4072 : int16x8_t nxtd = vsubq_s16(next, curr);
; 4073 : int16x8_t even = vaddq_s16(curs, prvd);
; 4074 : int16x8_t odd = vaddq_s16(curs, nxtd);
; 4075 :
; 4076 : // undo scaling and round, then store with even/odd phases interleaved
; 4077 : uint8x8x2_t o;
; 4078 : o.val[0] = vqrshrun_n_s16(even, 4);
; 4079 : o.val[1] = vqrshrun_n_s16(odd, 4);
; 4080 : vst2_u8(out + i * 2, o);
; 4081 : #endif
; 4082 :
; 4083 : // "previous" value for next iter
; 4084 : t1 = 3 * in_near[i + 7] + in_far[i + 7];
00368 8b 45 04 mov eax, DWORD PTR i$[rbp]
0036b 83 c0 07 add eax, 7
0036e 48 98 cdqe
00370 48 8b 8d 48 07
00 00 mov rcx, QWORD PTR in_near$[rbp]
00377 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0037b 6b c0 03 imul eax, eax, 3
0037e 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00381 83 c1 07 add ecx, 7
00384 48 63 c9 movsxd rcx, ecx
00387 48 8b 95 50 07
00 00 mov rdx, QWORD PTR in_far$[rbp]
0038e 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00392 03 c1 add eax, ecx
00394 89 45 44 mov DWORD PTR t1$[rbp], eax
; 4085 : }
00397 e9 4d fd ff ff jmp $LN2@stbi__resa
$LN3@stbi__resa:
; 4086 :
; 4087 : t0 = t1;
0039c 8b 45 44 mov eax, DWORD PTR t1$[rbp]
0039f 89 45 24 mov DWORD PTR t0$[rbp], eax
; 4088 : t1 = 3 * in_near[i] + in_far[i];
003a2 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
003a6 48 8b 8d 48 07
00 00 mov rcx, QWORD PTR in_near$[rbp]
003ad 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
003b1 6b c0 03 imul eax, eax, 3
003b4 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
003b8 48 8b 95 50 07
00 00 mov rdx, QWORD PTR in_far$[rbp]
003bf 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
003c3 03 c1 add eax, ecx
003c5 89 45 44 mov DWORD PTR t1$[rbp], eax
; 4089 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8);
003c8 6b 45 44 03 imul eax, DWORD PTR t1$[rbp], 3
003cc 8b 4d 24 mov ecx, DWORD PTR t0$[rbp]
003cf 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
003d3 c1 f8 04 sar eax, 4
003d6 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
003d9 03 c9 add ecx, ecx
003db 48 63 c9 movsxd rcx, ecx
003de 48 8b 95 40 07
00 00 mov rdx, QWORD PTR out$[rbp]
003e5 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4090 :
; 4091 : for (++i; i < w; ++i) {
003e8 8b 45 04 mov eax, DWORD PTR i$[rbp]
003eb ff c0 inc eax
003ed 89 45 04 mov DWORD PTR i$[rbp], eax
003f0 eb 08 jmp SHORT $LN7@stbi__resa
$LN5@stbi__resa:
003f2 8b 45 04 mov eax, DWORD PTR i$[rbp]
003f5 ff c0 inc eax
003f7 89 45 04 mov DWORD PTR i$[rbp], eax
$LN7@stbi__resa:
003fa 8b 85 58 07 00
00 mov eax, DWORD PTR w$[rbp]
00400 39 45 04 cmp DWORD PTR i$[rbp], eax
00403 7d 73 jge SHORT $LN6@stbi__resa
; 4092 : t0 = t1;
00405 8b 45 44 mov eax, DWORD PTR t1$[rbp]
00408 89 45 24 mov DWORD PTR t0$[rbp], eax
; 4093 : t1 = 3 * in_near[i] + in_far[i];
0040b 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0040f 48 8b 8d 48 07
00 00 mov rcx, QWORD PTR in_near$[rbp]
00416 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0041a 6b c0 03 imul eax, eax, 3
0041d 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
00421 48 8b 95 50 07
00 00 mov rdx, QWORD PTR in_far$[rbp]
00428 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0042c 03 c1 add eax, ecx
0042e 89 45 44 mov DWORD PTR t1$[rbp], eax
; 4094 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8);
00431 6b 45 24 03 imul eax, DWORD PTR t0$[rbp], 3
00435 8b 4d 44 mov ecx, DWORD PTR t1$[rbp]
00438 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
0043c c1 f8 04 sar eax, 4
0043f 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00442 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
00446 48 63 c9 movsxd rcx, ecx
00449 48 8b 95 40 07
00 00 mov rdx, QWORD PTR out$[rbp]
00450 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4095 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8);
00453 6b 45 44 03 imul eax, DWORD PTR t1$[rbp], 3
00457 8b 4d 24 mov ecx, DWORD PTR t0$[rbp]
0045a 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
0045e c1 f8 04 sar eax, 4
00461 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00464 d1 e1 shl ecx, 1
00466 48 63 c9 movsxd rcx, ecx
00469 48 8b 95 40 07
00 00 mov rdx, QWORD PTR out$[rbp]
00470 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4096 : }
00473 e9 7a ff ff ff jmp $LN5@stbi__resa
$LN6@stbi__resa:
; 4097 : out[w * 2 - 1] = stbi__div4(t1 + 2);
00478 8b 45 44 mov eax, DWORD PTR t1$[rbp]
0047b 83 c0 02 add eax, 2
0047e c1 f8 02 sar eax, 2
00481 8b 8d 58 07 00
00 mov ecx, DWORD PTR w$[rbp]
00487 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
0048b 48 63 c9 movsxd rcx, ecx
0048e 48 8b 95 40 07
00 00 mov rdx, QWORD PTR out$[rbp]
00495 88 04 0a mov BYTE PTR [rdx+rcx], al
; 4098 :
; 4099 : STBI_NOTUSED(hs);
; 4100 :
; 4101 : return out;
00498 48 8b 85 40 07
00 00 mov rax, QWORD PTR out$[rbp]
$LN1@stbi__resa:
; 4102 : }
0049f 48 8d a5 28 07
00 00 lea rsp, QWORD PTR [rbp+1832]
004a6 5f pop rdi
004a7 5d pop rbp
004a8 c3 ret 0
stbi__resample_row_hv_2_simd ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__resample_row_hv_2
_TEXT SEGMENT
i$ = 4
t0$ = 36
t1$ = 68
tv78 = 276
out$ = 320
in_near$ = 328
in_far$ = 336
w$ = 344
hs$ = 352
stbi__resample_row_hv_2 PROC ; COMDAT
; 3964 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 3965 : // need to generate 2x2 samples for every one in input
; 3966 : int i, t0, t1;
; 3967 : if (w == 1) {
0002f 83 bd 58 01 00
00 01 cmp DWORD PTR w$[rbp], 1
00036 75 78 jne SHORT $LN5@stbi__resa
; 3968 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2);
00038 b8 01 00 00 00 mov eax, 1
0003d 48 6b c0 00 imul rax, rax, 0
00041 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR in_near$[rbp]
00048 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0004c 6b c0 03 imul eax, eax, 3
0004f b9 01 00 00 00 mov ecx, 1
00054 48 6b c9 00 imul rcx, rcx, 0
00058 48 8b 95 50 01
00 00 mov rdx, QWORD PTR in_far$[rbp]
0005f 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00063 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
00067 c1 f8 02 sar eax, 2
0006a 89 85 14 01 00
00 mov DWORD PTR tv78[rbp], eax
00070 b8 01 00 00 00 mov eax, 1
00075 48 6b c0 01 imul rax, rax, 1
00079 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR out$[rbp]
00080 0f b6 95 14 01
00 00 movzx edx, BYTE PTR tv78[rbp]
00087 88 14 01 mov BYTE PTR [rcx+rax], dl
0008a b8 01 00 00 00 mov eax, 1
0008f 48 6b c0 00 imul rax, rax, 0
00093 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR out$[rbp]
0009a 0f b6 95 14 01
00 00 movzx edx, BYTE PTR tv78[rbp]
000a1 88 14 01 mov BYTE PTR [rcx+rax], dl
; 3969 : return out;
000a4 48 8b 85 40 01
00 00 mov rax, QWORD PTR out$[rbp]
000ab e9 02 01 00 00 jmp $LN1@stbi__resa
$LN5@stbi__resa:
; 3970 : }
; 3971 :
; 3972 : t1 = 3 * in_near[0] + in_far[0];
000b0 b8 01 00 00 00 mov eax, 1
000b5 48 6b c0 00 imul rax, rax, 0
000b9 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR in_near$[rbp]
000c0 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000c4 6b c0 03 imul eax, eax, 3
000c7 b9 01 00 00 00 mov ecx, 1
000cc 48 6b c9 00 imul rcx, rcx, 0
000d0 48 8b 95 50 01
00 00 mov rdx, QWORD PTR in_far$[rbp]
000d7 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000db 03 c1 add eax, ecx
000dd 89 45 44 mov DWORD PTR t1$[rbp], eax
; 3973 : out[0] = stbi__div4(t1 + 2);
000e0 8b 45 44 mov eax, DWORD PTR t1$[rbp]
000e3 83 c0 02 add eax, 2
000e6 c1 f8 02 sar eax, 2
000e9 b9 01 00 00 00 mov ecx, 1
000ee 48 6b c9 00 imul rcx, rcx, 0
000f2 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
000f9 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3974 : for (i = 1; i < w; ++i) {
000fc c7 45 04 01 00
00 00 mov DWORD PTR i$[rbp], 1
00103 eb 08 jmp SHORT $LN4@stbi__resa
$LN2@stbi__resa:
00105 8b 45 04 mov eax, DWORD PTR i$[rbp]
00108 ff c0 inc eax
0010a 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__resa:
0010d 8b 85 58 01 00
00 mov eax, DWORD PTR w$[rbp]
00113 39 45 04 cmp DWORD PTR i$[rbp], eax
00116 7d 73 jge SHORT $LN3@stbi__resa
; 3975 : t0 = t1;
00118 8b 45 44 mov eax, DWORD PTR t1$[rbp]
0011b 89 45 24 mov DWORD PTR t0$[rbp], eax
; 3976 : t1 = 3 * in_near[i] + in_far[i];
0011e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00122 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR in_near$[rbp]
00129 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0012d 6b c0 03 imul eax, eax, 3
00130 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
00134 48 8b 95 50 01
00 00 mov rdx, QWORD PTR in_far$[rbp]
0013b 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0013f 03 c1 add eax, ecx
00141 89 45 44 mov DWORD PTR t1$[rbp], eax
; 3977 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8);
00144 6b 45 24 03 imul eax, DWORD PTR t0$[rbp], 3
00148 8b 4d 44 mov ecx, DWORD PTR t1$[rbp]
0014b 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
0014f c1 f8 04 sar eax, 4
00152 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00155 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
00159 48 63 c9 movsxd rcx, ecx
0015c 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
00163 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3978 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8);
00166 6b 45 44 03 imul eax, DWORD PTR t1$[rbp], 3
0016a 8b 4d 24 mov ecx, DWORD PTR t0$[rbp]
0016d 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
00171 c1 f8 04 sar eax, 4
00174 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00177 d1 e1 shl ecx, 1
00179 48 63 c9 movsxd rcx, ecx
0017c 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
00183 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3979 : }
00186 e9 7a ff ff ff jmp $LN2@stbi__resa
$LN3@stbi__resa:
; 3980 : out[w * 2 - 1] = stbi__div4(t1 + 2);
0018b 8b 45 44 mov eax, DWORD PTR t1$[rbp]
0018e 83 c0 02 add eax, 2
00191 c1 f8 02 sar eax, 2
00194 8b 8d 58 01 00
00 mov ecx, DWORD PTR w$[rbp]
0019a 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
0019e 48 63 c9 movsxd rcx, ecx
001a1 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
001a8 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3981 :
; 3982 : STBI_NOTUSED(hs);
; 3983 :
; 3984 : return out;
001ab 48 8b 85 40 01
00 00 mov rax, QWORD PTR out$[rbp]
$LN1@stbi__resa:
; 3985 : }
001b2 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
001b9 5f pop rdi
001ba 5d pop rbp
001bb c3 ret 0
stbi__resample_row_hv_2 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__resample_row_h_2
_TEXT SEGMENT
i$ = 4
input$ = 40
n$1 = 68
out$ = 320
in_near$ = 328
in_far$ = 336
w$ = 344
hs$ = 352
stbi__resample_row_h_2 PROC ; COMDAT
; 3933 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 3934 : // need to generate two samples horizontally for every one in input
; 3935 : int i;
; 3936 : stbi_uc *input = in_near;
0002f 48 8b 85 48 01
00 00 mov rax, QWORD PTR in_near$[rbp]
00036 48 89 45 28 mov QWORD PTR input$[rbp], rax
; 3937 :
; 3938 : if (w == 1) {
0003a 83 bd 58 01 00
00 01 cmp DWORD PTR w$[rbp], 1
00041 75 59 jne SHORT $LN5@stbi__resa
; 3939 : // if only one sample, can't do any interpolation
; 3940 : out[0] = out[1] = input[0];
00043 b8 01 00 00 00 mov eax, 1
00048 48 6b c0 00 imul rax, rax, 0
0004c b9 01 00 00 00 mov ecx, 1
00051 48 6b c9 01 imul rcx, rcx, 1
00055 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
0005c 4c 8b 45 28 mov r8, QWORD PTR input$[rbp]
00060 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00065 88 04 0a mov BYTE PTR [rdx+rcx], al
00068 b8 01 00 00 00 mov eax, 1
0006d 48 6b c0 01 imul rax, rax, 1
00071 b9 01 00 00 00 mov ecx, 1
00076 48 6b c9 00 imul rcx, rcx, 0
0007a 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
00081 4c 8b 85 40 01
00 00 mov r8, QWORD PTR out$[rbp]
00088 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0008d 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3941 : return out;
00090 48 8b 85 40 01
00 00 mov rax, QWORD PTR out$[rbp]
00097 e9 64 01 00 00 jmp $LN1@stbi__resa
$LN5@stbi__resa:
; 3942 : }
; 3943 :
; 3944 : out[0] = input[0];
0009c b8 01 00 00 00 mov eax, 1
000a1 48 6b c0 00 imul rax, rax, 0
000a5 b9 01 00 00 00 mov ecx, 1
000aa 48 6b c9 00 imul rcx, rcx, 0
000ae 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
000b5 4c 8b 45 28 mov r8, QWORD PTR input$[rbp]
000b9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
000be 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3945 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2);
000c1 b8 01 00 00 00 mov eax, 1
000c6 48 6b c0 00 imul rax, rax, 0
000ca 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
000ce 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000d2 6b c0 03 imul eax, eax, 3
000d5 b9 01 00 00 00 mov ecx, 1
000da 48 6b c9 01 imul rcx, rcx, 1
000de 48 8b 55 28 mov rdx, QWORD PTR input$[rbp]
000e2 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000e6 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
000ea c1 f8 02 sar eax, 2
000ed b9 01 00 00 00 mov ecx, 1
000f2 48 6b c9 01 imul rcx, rcx, 1
000f6 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
000fd 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3946 : for (i = 1; i < w - 1; ++i) {
00100 c7 45 04 01 00
00 00 mov DWORD PTR i$[rbp], 1
00107 eb 08 jmp SHORT $LN4@stbi__resa
$LN2@stbi__resa:
00109 8b 45 04 mov eax, DWORD PTR i$[rbp]
0010c ff c0 inc eax
0010e 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__resa:
00111 8b 85 58 01 00
00 mov eax, DWORD PTR w$[rbp]
00117 ff c8 dec eax
00119 39 45 04 cmp DWORD PTR i$[rbp], eax
0011c 7d 72 jge SHORT $LN3@stbi__resa
; 3947 : int n = 3 * input[i] + 2;
0011e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00122 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
00126 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0012a 6b c0 03 imul eax, eax, 3
0012d 83 c0 02 add eax, 2
00130 89 45 44 mov DWORD PTR n$1[rbp], eax
; 3948 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]);
00133 8b 45 04 mov eax, DWORD PTR i$[rbp]
00136 ff c8 dec eax
00138 48 98 cdqe
0013a 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
0013e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00142 8b 4d 44 mov ecx, DWORD PTR n$1[rbp]
00145 03 c8 add ecx, eax
00147 8b c1 mov eax, ecx
00149 c1 f8 02 sar eax, 2
0014c 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
0014f 03 c9 add ecx, ecx
00151 48 63 c9 movsxd rcx, ecx
00154 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
0015b 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3949 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]);
0015e 8b 45 04 mov eax, DWORD PTR i$[rbp]
00161 ff c0 inc eax
00163 48 98 cdqe
00165 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
00169 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0016d 8b 4d 44 mov ecx, DWORD PTR n$1[rbp]
00170 03 c8 add ecx, eax
00172 8b c1 mov eax, ecx
00174 c1 f8 02 sar eax, 2
00177 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
0017a 8d 4c 09 01 lea ecx, DWORD PTR [rcx+rcx+1]
0017e 48 63 c9 movsxd rcx, ecx
00181 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
00188 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3950 : }
0018b e9 79 ff ff ff jmp $LN2@stbi__resa
$LN3@stbi__resa:
; 3951 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2);
00190 8b 85 58 01 00
00 mov eax, DWORD PTR w$[rbp]
00196 83 e8 02 sub eax, 2
00199 48 98 cdqe
0019b 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
0019f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
001a3 6b c0 03 imul eax, eax, 3
001a6 8b 8d 58 01 00
00 mov ecx, DWORD PTR w$[rbp]
001ac ff c9 dec ecx
001ae 48 63 c9 movsxd rcx, ecx
001b1 48 8b 55 28 mov rdx, QWORD PTR input$[rbp]
001b5 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
001b9 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
001bd c1 f8 02 sar eax, 2
001c0 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
001c3 03 c9 add ecx, ecx
001c5 48 63 c9 movsxd rcx, ecx
001c8 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
001cf 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3952 : out[i * 2 + 1] = input[w - 1];
001d2 8b 85 58 01 00
00 mov eax, DWORD PTR w$[rbp]
001d8 ff c8 dec eax
001da 48 98 cdqe
001dc 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
001df 8d 4c 09 01 lea ecx, DWORD PTR [rcx+rcx+1]
001e3 48 63 c9 movsxd rcx, ecx
001e6 48 8b 95 40 01
00 00 mov rdx, QWORD PTR out$[rbp]
001ed 4c 8b 45 28 mov r8, QWORD PTR input$[rbp]
001f1 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
001f6 88 04 0a mov BYTE PTR [rdx+rcx], al
; 3953 :
; 3954 : STBI_NOTUSED(in_far);
; 3955 : STBI_NOTUSED(hs);
; 3956 :
; 3957 : return out;
001f9 48 8b 85 40 01
00 00 mov rax, QWORD PTR out$[rbp]
$LN1@stbi__resa:
; 3958 : }
00200 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
00207 5f pop rdi
00208 5d pop rbp
00209 c3 ret 0
stbi__resample_row_h_2 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__resample_row_v_2
_TEXT SEGMENT
i$ = 4
out$ = 256
in_near$ = 264
in_far$ = 272
w$ = 280
hs$ = 288
stbi__resample_row_v_2 PROC ; COMDAT
; 3922 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 3923 : // need to generate two samples vertically for every one in input
; 3924 : int i;
; 3925 : STBI_NOTUSED(hs);
; 3926 : for (i = 0; i < w; ++i)
0002f c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00036 eb 08 jmp SHORT $LN4@stbi__resa
$LN2@stbi__resa:
00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
0003b ff c0 inc eax
0003d 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__resa:
00040 8b 85 18 01 00
00 mov eax, DWORD PTR w$[rbp]
00046 39 45 04 cmp DWORD PTR i$[rbp], eax
00049 7d 38 jge SHORT $LN3@stbi__resa
; 3927 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2);
0004b 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0004f 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR in_near$[rbp]
00056 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0005a 6b c0 03 imul eax, eax, 3
0005d 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
00061 48 8b 95 10 01
00 00 mov rdx, QWORD PTR in_far$[rbp]
00068 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0006c 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
00070 c1 f8 02 sar eax, 2
00073 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
00077 48 8b 95 00 01
00 00 mov rdx, QWORD PTR out$[rbp]
0007e 88 04 0a mov BYTE PTR [rdx+rcx], al
00081 eb b5 jmp SHORT $LN2@stbi__resa
$LN3@stbi__resa:
; 3928 : return out;
00083 48 8b 85 00 01
00 00 mov rax, QWORD PTR out$[rbp]
; 3929 : }
0008a 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00091 5f pop rdi
00092 5d pop rbp
00093 c3 ret 0
stbi__resample_row_v_2 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT resample_row_1
_TEXT SEGMENT
out$ = 224
in_near$ = 232
in_far$ = 240
w$ = 248
hs$ = 256
resample_row_1 PROC ; COMDAT
; 3912 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 3913 : STBI_NOTUSED(out);
; 3914 : STBI_NOTUSED(in_far);
; 3915 : STBI_NOTUSED(w);
; 3916 : STBI_NOTUSED(hs);
; 3917 : return in_near;
0002f 48 8b 85 e8 00
00 00 mov rax, QWORD PTR in_near$[rbp]
; 3918 : }
00036 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0003d 5f pop rdi
0003e 5d pop rbp
0003f c3 ret 0
resample_row_1 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__decode_jpeg_image
_TEXT SEGMENT
m$ = 4
Ld$1 = 36
NL$2 = 68
j$ = 320
stbi__decode_jpeg_image PROC ; COMDAT
; 3863 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 3864 : int m;
; 3865 : for (m = 0; m < 4; m++) {
00020 c7 45 04 00 00
00 00 mov DWORD PTR m$[rbp], 0
00027 eb 08 jmp SHORT $LN4@stbi__deco
$LN2@stbi__deco:
00029 8b 45 04 mov eax, DWORD PTR m$[rbp]
0002c ff c0 inc eax
0002e 89 45 04 mov DWORD PTR m$[rbp], eax
$LN4@stbi__deco:
00031 83 7d 04 04 cmp DWORD PTR m$[rbp], 4
00035 7d 38 jge SHORT $LN3@stbi__deco
; 3866 : j->img_comp[m].raw_data = NULL;
00037 48 63 45 04 movsxd rax, DWORD PTR m$[rbp]
0003b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0003f 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
00046 48 c7 84 01 d8
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18136], 0
; 3867 : j->img_comp[m].raw_coeff = NULL;
00052 48 63 45 04 movsxd rax, DWORD PTR m$[rbp]
00056 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0005a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
00061 48 c7 84 01 e0
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18144], 0
; 3868 : }
0006d eb ba jmp SHORT $LN2@stbi__deco
$LN3@stbi__deco:
; 3869 : j->restart_interval = 0;
0006f 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
00076 c7 80 68 48 00
00 00 00 00 00 mov DWORD PTR [rax+18536], 0
; 3870 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load))
00080 33 d2 xor edx, edx
00082 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
00089 e8 00 00 00 00 call stbi__decode_jpeg_header
0008e 85 c0 test eax, eax
00090 75 07 jne SHORT $LN7@stbi__deco
; 3871 : return 0;
00092 33 c0 xor eax, eax
00094 e9 8e 01 00 00 jmp $LN1@stbi__deco
$LN7@stbi__deco:
; 3872 : m = stbi__get_marker(j);
00099 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
000a0 e8 00 00 00 00 call stbi__get_marker
000a5 0f b6 c0 movzx eax, al
000a8 89 45 04 mov DWORD PTR m$[rbp], eax
$LN5@stbi__deco:
; 3873 : while (!stbi__EOI(m)) {
000ab 81 7d 04 d9 00
00 00 cmp DWORD PTR m$[rbp], 217 ; 000000d9H
000b2 0f 84 4d 01 00
00 je $LN6@stbi__deco
; 3874 : if (stbi__SOS(m)) {
000b8 81 7d 04 da 00
00 00 cmp DWORD PTR m$[rbp], 218 ; 000000daH
000bf 0f 85 97 00 00
00 jne $LN8@stbi__deco
; 3875 : if (!stbi__process_scan_header(j))
000c5 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
000cc e8 00 00 00 00 call stbi__process_scan_header
000d1 85 c0 test eax, eax
000d3 75 07 jne SHORT $LN10@stbi__deco
; 3876 : return 0;
000d5 33 c0 xor eax, eax
000d7 e9 4b 01 00 00 jmp $LN1@stbi__deco
$LN10@stbi__deco:
; 3877 : if (!stbi__parse_entropy_coded_data(j))
000dc 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
000e3 e8 00 00 00 00 call stbi__parse_entropy_coded_data
000e8 85 c0 test eax, eax
000ea 75 07 jne SHORT $LN11@stbi__deco
; 3878 : return 0;
000ec 33 c0 xor eax, eax
000ee e9 34 01 00 00 jmp $LN1@stbi__deco
$LN11@stbi__deco:
; 3879 : if (j->marker == STBI__MARKER_none) {
000f3 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
000fa 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
00101 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
00106 75 19 jne SHORT $LN12@stbi__deco
; 3880 : j->marker = stbi__skip_jpeg_junk_at_end(j);
00108 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
0010f e8 00 00 00 00 call stbi__skip_jpeg_junk_at_end
00114 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
0011b 88 81 28 48 00
00 mov BYTE PTR [rcx+18472], al
$LN12@stbi__deco:
; 3881 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0
; 3882 : }
; 3883 : m = stbi__get_marker(j);
00121 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
00128 e8 00 00 00 00 call stbi__get_marker
0012d 0f b6 c0 movzx eax, al
00130 89 45 04 mov DWORD PTR m$[rbp], eax
; 3884 : if (STBI__RESTART(m))
00133 81 7d 04 d0 00
00 00 cmp DWORD PTR m$[rbp], 208 ; 000000d0H
0013a 7c 1b jl SHORT $LN13@stbi__deco
0013c 81 7d 04 d7 00
00 00 cmp DWORD PTR m$[rbp], 215 ; 000000d7H
00143 7f 12 jg SHORT $LN13@stbi__deco
; 3885 : m = stbi__get_marker(j);
00145 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
0014c e8 00 00 00 00 call stbi__get_marker
00151 0f b6 c0 movzx eax, al
00154 89 45 04 mov DWORD PTR m$[rbp], eax
$LN13@stbi__deco:
; 3886 : } else if (stbi__DNL(m)) {
00157 e9 a4 00 00 00 jmp $LN9@stbi__deco
$LN8@stbi__deco:
0015c 81 7d 04 dc 00
00 00 cmp DWORD PTR m$[rbp], 220 ; 000000dcH
00163 75 6f jne SHORT $LN14@stbi__deco
; 3887 : int Ld = stbi__get16be(j->s);
00165 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
0016c 48 8b 08 mov rcx, QWORD PTR [rax]
0016f e8 00 00 00 00 call stbi__get16be
00174 89 45 24 mov DWORD PTR Ld$1[rbp], eax
; 3888 : stbi__uint32 NL = stbi__get16be(j->s);
00177 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
0017e 48 8b 08 mov rcx, QWORD PTR [rax]
00181 e8 00 00 00 00 call stbi__get16be
00186 89 45 44 mov DWORD PTR NL$2[rbp], eax
; 3889 : if (Ld != 4)
00189 83 7d 24 04 cmp DWORD PTR Ld$1[rbp], 4
0018d 74 11 je SHORT $LN16@stbi__deco
; 3890 : return stbi__err("bad DNL len", "Corrupt JPEG");
0018f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@EPMOIECP@bad?5DNL?5len@
00196 e8 00 00 00 00 call stbi__err
0019b e9 87 00 00 00 jmp $LN1@stbi__deco
$LN16@stbi__deco:
; 3891 : if (NL != j->s->img_y)
001a0 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
001a7 48 8b 00 mov rax, QWORD PTR [rax]
001aa 8b 40 04 mov eax, DWORD PTR [rax+4]
001ad 39 45 44 cmp DWORD PTR NL$2[rbp], eax
001b0 74 0e je SHORT $LN17@stbi__deco
; 3892 : return stbi__err("bad DNL height", "Corrupt JPEG");
001b2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@PNCLKCLJ@bad?5DNL?5height@
001b9 e8 00 00 00 00 call stbi__err
001be eb 67 jmp SHORT $LN1@stbi__deco
$LN17@stbi__deco:
; 3893 : m = stbi__get_marker(j);
001c0 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
001c7 e8 00 00 00 00 call stbi__get_marker
001cc 0f b6 c0 movzx eax, al
001cf 89 45 04 mov DWORD PTR m$[rbp], eax
; 3894 : } else {
001d2 eb 2c jmp SHORT $LN15@stbi__deco
$LN14@stbi__deco:
; 3895 : if (!stbi__process_marker(j, m))
001d4 8b 55 04 mov edx, DWORD PTR m$[rbp]
001d7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
001de e8 00 00 00 00 call stbi__process_marker
001e3 85 c0 test eax, eax
001e5 75 07 jne SHORT $LN18@stbi__deco
; 3896 : return 1;
001e7 b8 01 00 00 00 mov eax, 1
001ec eb 39 jmp SHORT $LN1@stbi__deco
$LN18@stbi__deco:
; 3897 : m = stbi__get_marker(j);
001ee 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
001f5 e8 00 00 00 00 call stbi__get_marker
001fa 0f b6 c0 movzx eax, al
001fd 89 45 04 mov DWORD PTR m$[rbp], eax
$LN15@stbi__deco:
$LN9@stbi__deco:
; 3898 : }
; 3899 : }
00200 e9 a6 fe ff ff jmp $LN5@stbi__deco
$LN6@stbi__deco:
; 3900 : if (j->progressive)
00205 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
0020c 83 b8 30 48 00
00 00 cmp DWORD PTR [rax+18480], 0
00213 74 0d je SHORT $LN19@stbi__deco
; 3901 : stbi__jpeg_finish(j);
00215 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
0021c e8 00 00 00 00 call stbi__jpeg_finish
00221 90 npad 1
$LN19@stbi__deco:
; 3902 : return 1;
00222 b8 01 00 00 00 mov eax, 1
$LN1@stbi__deco:
; 3903 : }
00227 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
0022e 5f pop rdi
0022f 5d pop rbp
00230 c3 ret 0
stbi__decode_jpeg_image ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__skip_jpeg_junk_at_end
_TEXT SEGMENT
x$1 = 4
j$ = 256
stbi__skip_jpeg_junk_at_end PROC ; COMDAT
; 3839 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
$LN2@stbi__skip:
; 3840 : // some JPEGs have junk at end, skip over it but if we find what looks
; 3841 : // like a valid marker, resume there
; 3842 : while (!stbi__at_eof(j->s)) {
00020 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00027 48 8b 08 mov rcx, QWORD PTR [rax]
0002a e8 00 00 00 00 call stbi__at_eof
0002f 85 c0 test eax, eax
00031 75 63 jne SHORT $LN3@stbi__skip
; 3843 : stbi_uc x = stbi__get8(j->s);
00033 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0003a 48 8b 08 mov rcx, QWORD PTR [rax]
0003d e8 00 00 00 00 call stbi__get8
00042 88 45 04 mov BYTE PTR x$1[rbp], al
$LN4@stbi__skip:
; 3844 : while (x == 0xff) { // might be a marker
00045 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
00049 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
0004e 75 44 jne SHORT $LN5@stbi__skip
; 3845 : if (stbi__at_eof(j->s))
00050 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00057 48 8b 08 mov rcx, QWORD PTR [rax]
0005a e8 00 00 00 00 call stbi__at_eof
0005f 85 c0 test eax, eax
00061 74 04 je SHORT $LN6@stbi__skip
; 3846 : return STBI__MARKER_none;
00063 b0 ff mov al, 255 ; 000000ffH
00065 eb 31 jmp SHORT $LN1@stbi__skip
$LN6@stbi__skip:
; 3847 : x = stbi__get8(j->s);
00067 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0006e 48 8b 08 mov rcx, QWORD PTR [rax]
00071 e8 00 00 00 00 call stbi__get8
00076 88 45 04 mov BYTE PTR x$1[rbp], al
; 3848 : if (x != 0x00 && x != 0xff) {
00079 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
0007d 85 c0 test eax, eax
0007f 74 11 je SHORT $LN7@stbi__skip
00081 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
00085 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
0008a 74 06 je SHORT $LN7@stbi__skip
; 3849 : // not a stuffed zero or lead-in to another marker, looks
; 3850 : // like an actual marker, return it
; 3851 : return x;
0008c 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
00090 eb 06 jmp SHORT $LN1@stbi__skip
$LN7@stbi__skip:
; 3852 : }
; 3853 : // stuffed zero has x=0 now which ends the loop, meaning we go
; 3854 : // back to regular scan loop.
; 3855 : // repeated 0xff keeps trying to read the next byte of the marker.
; 3856 : }
00092 eb b1 jmp SHORT $LN4@stbi__skip
$LN5@stbi__skip:
; 3857 : }
00094 eb 8a jmp SHORT $LN2@stbi__skip
$LN3@stbi__skip:
; 3858 : return STBI__MARKER_none;
00096 b0 ff mov al, 255 ; 000000ffH
$LN1@stbi__skip:
; 3859 : }
00098 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
0009f 5f pop rdi
000a0 5d pop rbp
000a1 c3 ret 0
stbi__skip_jpeg_junk_at_end ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__decode_jpeg_header
_TEXT SEGMENT
m$ = 4
tv131 = 212
z$ = 256
scan$ = 264
stbi__decode_jpeg_header PROC ; COMDAT
; 3810 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 3811 : int m;
; 3812 : z->jfif = 0;
00024 48 8b 85 00 01
00 00 mov rax, QWORD PTR z$[rbp]
0002b c7 80 48 48 00
00 00 00 00 00 mov DWORD PTR [rax+18504], 0
; 3813 : z->app14_color_transform = -1; // valid values are 0,1,2
00035 48 8b 85 00 01
00 00 mov rax, QWORD PTR z$[rbp]
0003c c7 80 4c 48 00
00 ff ff ff ff mov DWORD PTR [rax+18508], -1
; 3814 : z->marker = STBI__MARKER_none; // initialize cached marker to empty
00046 48 8b 85 00 01
00 00 mov rax, QWORD PTR z$[rbp]
0004d c6 80 28 48 00
00 ff mov BYTE PTR [rax+18472], 255 ; 000000ffH
; 3815 : m = stbi__get_marker(z);
00054 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
0005b e8 00 00 00 00 call stbi__get_marker
00060 0f b6 c0 movzx eax, al
00063 89 45 04 mov DWORD PTR m$[rbp], eax
; 3816 : if (!stbi__SOI(m))
00066 81 7d 04 d8 00
00 00 cmp DWORD PTR m$[rbp], 216 ; 000000d8H
0006d 74 11 je SHORT $LN6@stbi__deco
; 3817 : return stbi__err("no SOI", "Corrupt JPEG");
0006f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_06CLMBLEP@no?5SOI@
00076 e8 00 00 00 00 call stbi__err
0007b e9 04 01 00 00 jmp $LN1@stbi__deco
$LN6@stbi__deco:
; 3818 : if (scan == STBI__SCAN_type)
00080 83 bd 08 01 00
00 01 cmp DWORD PTR scan$[rbp], 1
00087 75 0a jne SHORT $LN7@stbi__deco
; 3819 : return 1;
00089 b8 01 00 00 00 mov eax, 1
0008e e9 f1 00 00 00 jmp $LN1@stbi__deco
$LN7@stbi__deco:
; 3820 : m = stbi__get_marker(z);
00093 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
0009a e8 00 00 00 00 call stbi__get_marker
0009f 0f b6 c0 movzx eax, al
000a2 89 45 04 mov DWORD PTR m$[rbp], eax
$LN2@stbi__deco:
; 3821 : while (!stbi__SOF(m)) {
000a5 81 7d 04 c0 00
00 00 cmp DWORD PTR m$[rbp], 192 ; 000000c0H
000ac 0f 84 81 00 00
00 je $LN3@stbi__deco
000b2 81 7d 04 c1 00
00 00 cmp DWORD PTR m$[rbp], 193 ; 000000c1H
000b9 74 78 je SHORT $LN3@stbi__deco
000bb 81 7d 04 c2 00
00 00 cmp DWORD PTR m$[rbp], 194 ; 000000c2H
000c2 74 6f je SHORT $LN3@stbi__deco
; 3822 : if (!stbi__process_marker(z, m))
000c4 8b 55 04 mov edx, DWORD PTR m$[rbp]
000c7 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
000ce e8 00 00 00 00 call stbi__process_marker
000d3 85 c0 test eax, eax
000d5 75 07 jne SHORT $LN8@stbi__deco
; 3823 : return 0;
000d7 33 c0 xor eax, eax
000d9 e9 a6 00 00 00 jmp $LN1@stbi__deco
$LN8@stbi__deco:
; 3824 : m = stbi__get_marker(z);
000de 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
000e5 e8 00 00 00 00 call stbi__get_marker
000ea 0f b6 c0 movzx eax, al
000ed 89 45 04 mov DWORD PTR m$[rbp], eax
$LN4@stbi__deco:
; 3825 : while (m == STBI__MARKER_none) {
000f0 81 7d 04 ff 00
00 00 cmp DWORD PTR m$[rbp], 255 ; 000000ffH
000f7 75 35 jne SHORT $LN5@stbi__deco
; 3826 : // some files have extra padding after their blocks, so ok, we'll scan
; 3827 : if (stbi__at_eof(z->s))
000f9 48 8b 85 00 01
00 00 mov rax, QWORD PTR z$[rbp]
00100 48 8b 08 mov rcx, QWORD PTR [rax]
00103 e8 00 00 00 00 call stbi__at_eof
00108 85 c0 test eax, eax
0010a 74 0e je SHORT $LN9@stbi__deco
; 3828 : return stbi__err("no SOF", "Corrupt JPEG");
0010c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_06IFCEAHIA@no?5SOF@
00113 e8 00 00 00 00 call stbi__err
00118 eb 6a jmp SHORT $LN1@stbi__deco
$LN9@stbi__deco:
; 3829 : m = stbi__get_marker(z);
0011a 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00121 e8 00 00 00 00 call stbi__get_marker
00126 0f b6 c0 movzx eax, al
00129 89 45 04 mov DWORD PTR m$[rbp], eax
; 3830 : }
0012c eb c2 jmp SHORT $LN4@stbi__deco
$LN5@stbi__deco:
; 3831 : }
0012e e9 72 ff ff ff jmp $LN2@stbi__deco
$LN3@stbi__deco:
; 3832 : z->progressive = stbi__SOF_progressive(m);
00133 81 7d 04 c2 00
00 00 cmp DWORD PTR m$[rbp], 194 ; 000000c2H
0013a 75 0c jne SHORT $LN12@stbi__deco
0013c c7 85 d4 00 00
00 01 00 00 00 mov DWORD PTR tv131[rbp], 1
00146 eb 0a jmp SHORT $LN13@stbi__deco
$LN12@stbi__deco:
00148 c7 85 d4 00 00
00 00 00 00 00 mov DWORD PTR tv131[rbp], 0
$LN13@stbi__deco:
00152 48 8b 85 00 01
00 00 mov rax, QWORD PTR z$[rbp]
00159 8b 8d d4 00 00
00 mov ecx, DWORD PTR tv131[rbp]
0015f 89 88 30 48 00
00 mov DWORD PTR [rax+18480], ecx
; 3833 : if (!stbi__process_frame_header(z, scan))
00165 8b 95 08 01 00
00 mov edx, DWORD PTR scan$[rbp]
0016b 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00172 e8 00 00 00 00 call stbi__process_frame_header
00177 85 c0 test eax, eax
00179 75 04 jne SHORT $LN10@stbi__deco
; 3834 : return 0;
0017b 33 c0 xor eax, eax
0017d eb 05 jmp SHORT $LN1@stbi__deco
$LN10@stbi__deco:
; 3835 : return 1;
0017f b8 01 00 00 00 mov eax, 1
$LN1@stbi__deco:
; 3836 : }
00184 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
0018b 5f pop rdi
0018c 5d pop rbp
0018d c3 ret 0
stbi__decode_jpeg_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__process_frame_header
_TEXT SEGMENT
s$ = 8
Lf$ = 36
p$ = 68
i$ = 100
q$ = 132
h_max$ = 164
v_max$ = 196
c$ = 228
tv285 = 440
tv294 = 440
z$ = 480
scan$ = 488
stbi__process_frame_header PROC ; COMDAT
; 3677 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 3678 : stbi__context *s = z->s;
00024 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
0002b 48 8b 00 mov rax, QWORD PTR [rax]
0002e 48 89 45 08 mov QWORD PTR s$[rbp], rax
; 3679 : int Lf, p, i, q, h_max = 1, v_max = 1, c;
00032 c7 85 a4 00 00
00 01 00 00 00 mov DWORD PTR h_max$[rbp], 1
0003c c7 85 c4 00 00
00 01 00 00 00 mov DWORD PTR v_max$[rbp], 1
; 3680 : Lf = stbi__get16be(s);
00046 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
0004a e8 00 00 00 00 call stbi__get16be
0004f 89 45 24 mov DWORD PTR Lf$[rbp], eax
; 3681 : if (Lf < 11)
00052 83 7d 24 0b cmp DWORD PTR Lf$[rbp], 11
00056 7d 11 jge SHORT $LN17@stbi__proc
; 3682 : return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG
00058 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@DOFMJEMP@bad?5SOF?5len@
0005f e8 00 00 00 00 call stbi__err
00064 e9 11 09 00 00 jmp $LN1@stbi__proc
$LN17@stbi__proc:
; 3683 : p = stbi__get8(s);
00069 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
0006d e8 00 00 00 00 call stbi__get8
00072 0f b6 c0 movzx eax, al
00075 89 45 44 mov DWORD PTR p$[rbp], eax
; 3684 : if (p != 8)
00078 83 7d 44 08 cmp DWORD PTR p$[rbp], 8
0007c 74 11 je SHORT $LN18@stbi__proc
; 3685 : return stbi__err("only 8-bit",
0007e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0L@BCINMEBJ@only?58?9bit@
00085 e8 00 00 00 00 call stbi__err
0008a e9 eb 08 00 00 jmp $LN1@stbi__proc
$LN18@stbi__proc:
; 3686 : "JPEG format not supported: 8-bit only"); // JPEG baseline
; 3687 : s->img_y = stbi__get16be(s);
0008f 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00093 e8 00 00 00 00 call stbi__get16be
00098 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
0009c 89 41 04 mov DWORD PTR [rcx+4], eax
; 3688 : if (s->img_y == 0)
0009f 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
000a3 83 78 04 00 cmp DWORD PTR [rax+4], 0
000a7 75 11 jne SHORT $LN19@stbi__proc
; 3689 : return stbi__err(
000a9 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@LNEGOMA@no?5header?5height@
000b0 e8 00 00 00 00 call stbi__err
000b5 e9 c0 08 00 00 jmp $LN1@stbi__proc
$LN19@stbi__proc:
; 3690 : "no header height",
; 3691 : "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG
; 3692 : s->img_x = stbi__get16be(s);
000ba 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
000be e8 00 00 00 00 call stbi__get16be
000c3 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
000c7 89 01 mov DWORD PTR [rcx], eax
; 3693 : if (s->img_x == 0)
000c9 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
000cd 83 38 00 cmp DWORD PTR [rax], 0
000d0 75 11 jne SHORT $LN20@stbi__proc
; 3694 : return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires
000d2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07BIDACDEF@0?5width@
000d9 e8 00 00 00 00 call stbi__err
000de e9 97 08 00 00 jmp $LN1@stbi__proc
$LN20@stbi__proc:
; 3695 : if (s->img_y > STBI_MAX_DIMENSIONS)
000e3 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
000e7 81 78 04 00 00
00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
000ee 76 11 jbe SHORT $LN21@stbi__proc
; 3696 : return stbi__err("too large", "Very large image (corrupt?)");
000f0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
000f7 e8 00 00 00 00 call stbi__err
000fc e9 79 08 00 00 jmp $LN1@stbi__proc
$LN21@stbi__proc:
; 3697 : if (s->img_x > STBI_MAX_DIMENSIONS)
00101 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00105 81 38 00 00 00
01 cmp DWORD PTR [rax], 16777216 ; 01000000H
0010b 76 11 jbe SHORT $LN22@stbi__proc
; 3698 : return stbi__err("too large", "Very large image (corrupt?)");
0010d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00114 e8 00 00 00 00 call stbi__err
00119 e9 5c 08 00 00 jmp $LN1@stbi__proc
$LN22@stbi__proc:
; 3699 : c = stbi__get8(s);
0011e 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00122 e8 00 00 00 00 call stbi__get8
00127 0f b6 c0 movzx eax, al
0012a 89 85 e4 00 00
00 mov DWORD PTR c$[rbp], eax
; 3700 : if (c != 3 && c != 1 && c != 4)
00130 83 bd e4 00 00
00 03 cmp DWORD PTR c$[rbp], 3
00137 74 23 je SHORT $LN23@stbi__proc
00139 83 bd e4 00 00
00 01 cmp DWORD PTR c$[rbp], 1
00140 74 1a je SHORT $LN23@stbi__proc
00142 83 bd e4 00 00
00 04 cmp DWORD PTR c$[rbp], 4
00149 74 11 je SHORT $LN23@stbi__proc
; 3701 : return stbi__err("bad component count", "Corrupt JPEG");
0014b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BE@DAPHADHL@bad?5component?5count@
00152 e8 00 00 00 00 call stbi__err
00157 e9 1e 08 00 00 jmp $LN1@stbi__proc
$LN23@stbi__proc:
; 3702 : s->img_n = c;
0015c 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00160 8b 8d e4 00 00
00 mov ecx, DWORD PTR c$[rbp]
00166 89 48 08 mov DWORD PTR [rax+8], ecx
; 3703 : for (i = 0; i < c; ++i) {
00169 c7 45 64 00 00
00 00 mov DWORD PTR i$[rbp], 0
00170 eb 08 jmp SHORT $LN4@stbi__proc
$LN2@stbi__proc:
00172 8b 45 64 mov eax, DWORD PTR i$[rbp]
00175 ff c0 inc eax
00177 89 45 64 mov DWORD PTR i$[rbp], eax
$LN4@stbi__proc:
0017a 8b 85 e4 00 00
00 mov eax, DWORD PTR c$[rbp]
00180 39 45 64 cmp DWORD PTR i$[rbp], eax
00183 7d 38 jge SHORT $LN3@stbi__proc
; 3704 : z->img_comp[i].data = NULL;
00185 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00189 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0018d 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00194 48 c7 84 01 d0
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18128], 0
; 3705 : z->img_comp[i].linebuf = NULL;
001a0 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
001a4 48 6b c0 60 imul rax, rax, 96 ; 00000060H
001a8 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
001af 48 c7 84 01 e8
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18152], 0
; 3706 : }
001bb eb b5 jmp SHORT $LN2@stbi__proc
$LN3@stbi__proc:
; 3707 :
; 3708 : if (Lf != 8 + 3 * s->img_n)
001bd 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
001c1 6b 40 08 03 imul eax, DWORD PTR [rax+8], 3
001c5 83 c0 08 add eax, 8
001c8 39 45 24 cmp DWORD PTR Lf$[rbp], eax
001cb 74 11 je SHORT $LN24@stbi__proc
; 3709 : return stbi__err("bad SOF len", "Corrupt JPEG");
001cd 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@DOFMJEMP@bad?5SOF?5len@
001d4 e8 00 00 00 00 call stbi__err
001d9 e9 9c 07 00 00 jmp $LN1@stbi__proc
$LN24@stbi__proc:
; 3710 :
; 3711 : z->rgb = 0;
001de 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
001e5 c7 80 50 48 00
00 00 00 00 00 mov DWORD PTR [rax+18512], 0
; 3712 : for (i = 0; i < s->img_n; ++i) {
001ef c7 45 64 00 00
00 00 mov DWORD PTR i$[rbp], 0
001f6 eb 08 jmp SHORT $LN7@stbi__proc
$LN5@stbi__proc:
001f8 8b 45 64 mov eax, DWORD PTR i$[rbp]
001fb ff c0 inc eax
001fd 89 45 64 mov DWORD PTR i$[rbp], eax
$LN7@stbi__proc:
00200 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00204 8b 40 08 mov eax, DWORD PTR [rax+8]
00207 39 45 64 cmp DWORD PTR i$[rbp], eax
0020a 0f 8d 96 01 00
00 jge $LN6@stbi__proc
; 3713 : static const unsigned char rgb[3] = { 'R', 'G', 'B' };
; 3714 : z->img_comp[i].id = stbi__get8(s);
00210 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00214 e8 00 00 00 00 call stbi__get8
00219 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
0021d 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00221 0f b6 c0 movzx eax, al
00224 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0022b 89 84 0a a0 46
00 00 mov DWORD PTR [rdx+rcx+18080], eax
; 3715 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i])
00232 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00236 83 78 08 03 cmp DWORD PTR [rax+8], 3
0023a 75 43 jne SHORT $LN25@stbi__proc
0023c 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00240 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00244 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00248 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?rgb@?5??stbi__process_frame_header@@9@9
0024f 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00253 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0025a 39 8c 02 a0 46
00 00 cmp DWORD PTR [rdx+rax+18080], ecx
00261 75 1c jne SHORT $LN25@stbi__proc
; 3716 : ++z->rgb;
00263 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
0026a 8b 80 50 48 00
00 mov eax, DWORD PTR [rax+18512]
00270 ff c0 inc eax
00272 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00279 89 81 50 48 00
00 mov DWORD PTR [rcx+18512], eax
$LN25@stbi__proc:
; 3717 : q = stbi__get8(s);
0027f 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00283 e8 00 00 00 00 call stbi__get8
00288 0f b6 c0 movzx eax, al
0028b 89 85 84 00 00
00 mov DWORD PTR q$[rbp], eax
; 3718 : z->img_comp[i].h = (q >> 4);
00291 8b 85 84 00 00
00 mov eax, DWORD PTR q$[rbp]
00297 c1 f8 04 sar eax, 4
0029a 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
0029e 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
002a2 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
002a9 89 84 0a a4 46
00 00 mov DWORD PTR [rdx+rcx+18084], eax
; 3719 : if (!z->img_comp[i].h || z->img_comp[i].h > 4)
002b0 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
002b4 48 6b c0 60 imul rax, rax, 96 ; 00000060H
002b8 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
002bf 83 bc 01 a4 46
00 00 00 cmp DWORD PTR [rcx+rax+18084], 0
002c7 74 19 je SHORT $LN27@stbi__proc
002c9 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
002cd 48 6b c0 60 imul rax, rax, 96 ; 00000060H
002d1 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
002d8 83 bc 01 a4 46
00 00 04 cmp DWORD PTR [rcx+rax+18084], 4
002e0 7e 11 jle SHORT $LN26@stbi__proc
$LN27@stbi__proc:
; 3720 : return stbi__err("bad H", "Corrupt JPEG");
002e2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_05BLPKENEJ@bad?5H@
002e9 e8 00 00 00 00 call stbi__err
002ee e9 87 06 00 00 jmp $LN1@stbi__proc
$LN26@stbi__proc:
; 3721 : z->img_comp[i].v = q & 15;
002f3 8b 85 84 00 00
00 mov eax, DWORD PTR q$[rbp]
002f9 83 e0 0f and eax, 15
002fc 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00300 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00304 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0030b 89 84 0a a8 46
00 00 mov DWORD PTR [rdx+rcx+18088], eax
; 3722 : if (!z->img_comp[i].v || z->img_comp[i].v > 4)
00312 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00316 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0031a 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00321 83 bc 01 a8 46
00 00 00 cmp DWORD PTR [rcx+rax+18088], 0
00329 74 19 je SHORT $LN29@stbi__proc
0032b 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0032f 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00333 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0033a 83 bc 01 a8 46
00 00 04 cmp DWORD PTR [rcx+rax+18088], 4
00342 7e 11 jle SHORT $LN28@stbi__proc
$LN29@stbi__proc:
; 3723 : return stbi__err("bad V", "Corrupt JPEG");
00344 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_05MPLLHCJG@bad?5V@
0034b e8 00 00 00 00 call stbi__err
00350 e9 25 06 00 00 jmp $LN1@stbi__proc
$LN28@stbi__proc:
; 3724 : z->img_comp[i].tq = stbi__get8(s);
00355 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00359 e8 00 00 00 00 call stbi__get8
0035e 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00362 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00366 0f b6 c0 movzx eax, al
00369 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
00370 89 84 0a ac 46
00 00 mov DWORD PTR [rdx+rcx+18092], eax
; 3725 : if (z->img_comp[i].tq > 3)
00377 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0037b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0037f 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00386 83 bc 01 ac 46
00 00 03 cmp DWORD PTR [rcx+rax+18092], 3
0038e 7e 11 jle SHORT $LN30@stbi__proc
; 3726 : return stbi__err("bad TQ", "Corrupt JPEG");
00390 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_06LJIHDFHI@bad?5TQ@
00397 e8 00 00 00 00 call stbi__err
0039c e9 d9 05 00 00 jmp $LN1@stbi__proc
$LN30@stbi__proc:
; 3727 : }
003a1 e9 52 fe ff ff jmp $LN5@stbi__proc
$LN6@stbi__proc:
; 3728 :
; 3729 : if (scan != STBI__SCAN_load)
003a6 83 bd e8 01 00
00 00 cmp DWORD PTR scan$[rbp], 0
003ad 74 0a je SHORT $LN31@stbi__proc
; 3730 : return 1;
003af b8 01 00 00 00 mov eax, 1
003b4 e9 c1 05 00 00 jmp $LN1@stbi__proc
$LN31@stbi__proc:
; 3731 :
; 3732 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0))
003b9 45 33 c9 xor r9d, r9d
003bc 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
003c0 44 8b 40 08 mov r8d, DWORD PTR [rax+8]
003c4 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
003c8 8b 50 04 mov edx, DWORD PTR [rax+4]
003cb 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
003cf 8b 08 mov ecx, DWORD PTR [rax]
003d1 e8 00 00 00 00 call stbi__mad3sizes_valid
003d6 85 c0 test eax, eax
003d8 75 11 jne SHORT $LN32@stbi__proc
; 3733 : return stbi__err("too large", "Image too large to decode");
003da 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
003e1 e8 00 00 00 00 call stbi__err
003e6 e9 8f 05 00 00 jmp $LN1@stbi__proc
$LN32@stbi__proc:
; 3734 :
; 3735 : for (i = 0; i < s->img_n; ++i) {
003eb c7 45 64 00 00
00 00 mov DWORD PTR i$[rbp], 0
003f2 eb 08 jmp SHORT $LN10@stbi__proc
$LN8@stbi__proc:
003f4 8b 45 64 mov eax, DWORD PTR i$[rbp]
003f7 ff c0 inc eax
003f9 89 45 64 mov DWORD PTR i$[rbp], eax
$LN10@stbi__proc:
003fc 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00400 8b 40 08 mov eax, DWORD PTR [rax+8]
00403 39 45 64 cmp DWORD PTR i$[rbp], eax
00406 7d 79 jge SHORT $LN9@stbi__proc
; 3736 : if (z->img_comp[i].h > h_max)
00408 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0040c 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00410 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00417 8b 95 a4 00 00
00 mov edx, DWORD PTR h_max$[rbp]
0041d 39 94 01 a4 46
00 00 cmp DWORD PTR [rcx+rax+18084], edx
00424 7e 1c jle SHORT $LN33@stbi__proc
; 3737 : h_max = z->img_comp[i].h;
00426 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0042a 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0042e 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00435 8b 84 01 a4 46
00 00 mov eax, DWORD PTR [rcx+rax+18084]
0043c 89 85 a4 00 00
00 mov DWORD PTR h_max$[rbp], eax
$LN33@stbi__proc:
; 3738 : if (z->img_comp[i].v > v_max)
00442 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00446 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0044a 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00451 8b 95 c4 00 00
00 mov edx, DWORD PTR v_max$[rbp]
00457 39 94 01 a8 46
00 00 cmp DWORD PTR [rcx+rax+18088], edx
0045e 7e 1c jle SHORT $LN34@stbi__proc
; 3739 : v_max = z->img_comp[i].v;
00460 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00464 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00468 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0046f 8b 84 01 a8 46
00 00 mov eax, DWORD PTR [rcx+rax+18088]
00476 89 85 c4 00 00
00 mov DWORD PTR v_max$[rbp], eax
$LN34@stbi__proc:
; 3740 : }
0047c e9 73 ff ff ff jmp $LN8@stbi__proc
$LN9@stbi__proc:
; 3741 :
; 3742 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios
; 3743 : // and I've never seen a non-corrupted JPEG file actually use them
; 3744 : for (i = 0; i < s->img_n; ++i) {
00481 c7 45 64 00 00
00 00 mov DWORD PTR i$[rbp], 0
00488 eb 08 jmp SHORT $LN13@stbi__proc
$LN11@stbi__proc:
0048a 8b 45 64 mov eax, DWORD PTR i$[rbp]
0048d ff c0 inc eax
0048f 89 45 64 mov DWORD PTR i$[rbp], eax
$LN13@stbi__proc:
00492 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00496 8b 40 08 mov eax, DWORD PTR [rax+8]
00499 39 45 64 cmp DWORD PTR i$[rbp], eax
0049c 0f 8d 8b 00 00
00 jge $LN12@stbi__proc
; 3745 : if (h_max % z->img_comp[i].h != 0)
004a2 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
004a6 48 6b c0 60 imul rax, rax, 96 ; 00000060H
004aa 48 89 85 b8 01
00 00 mov QWORD PTR tv285[rbp], rax
004b1 8b 85 a4 00 00
00 mov eax, DWORD PTR h_max$[rbp]
004b7 99 cdq
004b8 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
004bf 4c 8b 85 b8 01
00 00 mov r8, QWORD PTR tv285[rbp]
004c6 42 f7 bc 01 a4
46 00 00 idiv DWORD PTR [rcx+r8+18084]
004ce 8b c2 mov eax, edx
004d0 85 c0 test eax, eax
004d2 74 11 je SHORT $LN35@stbi__proc
; 3746 : return stbi__err("bad H", "Corrupt JPEG");
004d4 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_05BLPKENEJ@bad?5H@
004db e8 00 00 00 00 call stbi__err
004e0 e9 95 04 00 00 jmp $LN1@stbi__proc
$LN35@stbi__proc:
; 3747 : if (v_max % z->img_comp[i].v != 0)
004e5 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
004e9 48 6b c0 60 imul rax, rax, 96 ; 00000060H
004ed 48 89 85 b8 01
00 00 mov QWORD PTR tv294[rbp], rax
004f4 8b 85 c4 00 00
00 mov eax, DWORD PTR v_max$[rbp]
004fa 99 cdq
004fb 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00502 4c 8b 85 b8 01
00 00 mov r8, QWORD PTR tv294[rbp]
00509 42 f7 bc 01 a8
46 00 00 idiv DWORD PTR [rcx+r8+18088]
00511 8b c2 mov eax, edx
00513 85 c0 test eax, eax
00515 74 11 je SHORT $LN36@stbi__proc
; 3748 : return stbi__err("bad V", "Corrupt JPEG");
00517 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_05MPLLHCJG@bad?5V@
0051e e8 00 00 00 00 call stbi__err
00523 e9 52 04 00 00 jmp $LN1@stbi__proc
$LN36@stbi__proc:
; 3749 : }
00528 e9 5d ff ff ff jmp $LN11@stbi__proc
$LN12@stbi__proc:
; 3750 :
; 3751 : // compute interleaved mcu info
; 3752 : z->img_h_max = h_max;
0052d 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
00534 8b 8d a4 00 00
00 mov ecx, DWORD PTR h_max$[rbp]
0053a 89 88 88 46 00
00 mov DWORD PTR [rax+18056], ecx
; 3753 : z->img_v_max = v_max;
00540 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
00547 8b 8d c4 00 00
00 mov ecx, DWORD PTR v_max$[rbp]
0054d 89 88 8c 46 00
00 mov DWORD PTR [rax+18060], ecx
; 3754 : z->img_mcu_w = h_max * 8;
00553 8b 85 a4 00 00
00 mov eax, DWORD PTR h_max$[rbp]
00559 c1 e0 03 shl eax, 3
0055c 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00563 89 81 98 46 00
00 mov DWORD PTR [rcx+18072], eax
; 3755 : z->img_mcu_h = v_max * 8;
00569 8b 85 c4 00 00
00 mov eax, DWORD PTR v_max$[rbp]
0056f c1 e0 03 shl eax, 3
00572 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00579 89 81 9c 46 00
00 mov DWORD PTR [rcx+18076], eax
; 3756 : // these sizes can't be more than 17 bits
; 3757 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w;
0057f 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
00583 8b 00 mov eax, DWORD PTR [rax]
00585 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0058c 8b 89 98 46 00
00 mov ecx, DWORD PTR [rcx+18072]
00592 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
00596 33 d2 xor edx, edx
00598 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0059f f7 b1 98 46 00
00 div DWORD PTR [rcx+18072]
005a5 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
005ac 89 81 90 46 00
00 mov DWORD PTR [rcx+18064], eax
; 3758 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h;
005b2 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
005b6 8b 40 04 mov eax, DWORD PTR [rax+4]
005b9 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
005c0 8b 89 9c 46 00
00 mov ecx, DWORD PTR [rcx+18076]
005c6 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
005ca 33 d2 xor edx, edx
005cc 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
005d3 f7 b1 9c 46 00
00 div DWORD PTR [rcx+18076]
005d9 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
005e0 89 81 94 46 00
00 mov DWORD PTR [rcx+18068], eax
; 3759 :
; 3760 : for (i = 0; i < s->img_n; ++i) {
005e6 c7 45 64 00 00
00 00 mov DWORD PTR i$[rbp], 0
005ed eb 08 jmp SHORT $LN16@stbi__proc
$LN14@stbi__proc:
005ef 8b 45 64 mov eax, DWORD PTR i$[rbp]
005f2 ff c0 inc eax
005f4 89 45 64 mov DWORD PTR i$[rbp], eax
$LN16@stbi__proc:
005f7 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
005fb 8b 40 08 mov eax, DWORD PTR [rax+8]
005fe 39 45 64 cmp DWORD PTR i$[rbp], eax
00601 0f 8d 6e 03 00
00 jge $LN15@stbi__proc
; 3761 : // number of effective pixels (e.g. for non-interleaved MCU)
; 3762 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max;
00607 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0060b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0060f 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
00613 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0061a 8b 09 mov ecx, DWORD PTR [rcx]
0061c 0f af 8c 02 a4
46 00 00 imul ecx, DWORD PTR [rdx+rax+18084]
00624 8b c1 mov eax, ecx
00626 8b 8d a4 00 00
00 mov ecx, DWORD PTR h_max$[rbp]
0062c 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
00630 33 d2 xor edx, edx
00632 f7 b5 a4 00 00
00 div DWORD PTR h_max$[rbp]
00638 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
0063c 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00640 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
00647 89 84 0a bc 46
00 00 mov DWORD PTR [rdx+rcx+18108], eax
; 3763 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max;
0064e 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00652 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00656 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
0065a 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
00661 8b 49 04 mov ecx, DWORD PTR [rcx+4]
00664 0f af 8c 02 a8
46 00 00 imul ecx, DWORD PTR [rdx+rax+18088]
0066c 8b c1 mov eax, ecx
0066e 8b 8d c4 00 00
00 mov ecx, DWORD PTR v_max$[rbp]
00674 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
00678 33 d2 xor edx, edx
0067a f7 b5 c4 00 00
00 div DWORD PTR v_max$[rbp]
00680 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00684 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00688 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0068f 89 84 0a c0 46
00 00 mov DWORD PTR [rdx+rcx+18112], eax
; 3764 : // to simplify generation, we'll allocate enough memory to decode
; 3765 : // the bogus oversized data from using interleaved MCUs and their
; 3766 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't
; 3767 : // discard the extra data until colorspace conversion
; 3768 : //
; 3769 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier)
; 3770 : // so these muls can't overflow with 32-bit ints (which we require)
; 3771 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8;
00696 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0069a 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0069e 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
006a5 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
006ac 8b 89 90 46 00
00 mov ecx, DWORD PTR [rcx+18064]
006b2 0f af 8c 02 a4
46 00 00 imul ecx, DWORD PTR [rdx+rax+18084]
006ba 8b c1 mov eax, ecx
006bc c1 e0 03 shl eax, 3
006bf 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
006c3 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
006c7 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
006ce 89 84 0a c4 46
00 00 mov DWORD PTR [rdx+rcx+18116], eax
; 3772 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8;
006d5 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
006d9 48 6b c0 60 imul rax, rax, 96 ; 00000060H
006dd 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
006e4 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
006eb 8b 89 94 46 00
00 mov ecx, DWORD PTR [rcx+18068]
006f1 0f af 8c 02 a8
46 00 00 imul ecx, DWORD PTR [rdx+rax+18088]
006f9 8b c1 mov eax, ecx
006fb c1 e0 03 shl eax, 3
006fe 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00702 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00706 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0070d 89 84 0a c8 46
00 00 mov DWORD PTR [rdx+rcx+18120], eax
; 3773 : z->img_comp[i].coeff = 0;
00714 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00718 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0071c 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00723 48 c7 84 01 f0
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18160], 0
; 3774 : z->img_comp[i].raw_coeff = 0;
0072f 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00733 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00737 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0073e 48 c7 84 01 e0
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18144], 0
; 3775 : z->img_comp[i].linebuf = NULL;
0074a 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0074e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00752 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00759 48 c7 84 01 e8
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18152], 0
; 3776 : z->img_comp[i].raw_data =
00765 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00769 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0076d 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00771 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00775 41 b8 0f 00 00
00 mov r8d, 15
0077b 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
00782 8b 94 02 c8 46
00 00 mov edx, DWORD PTR [rdx+rax+18120]
00789 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
00790 8b 8c 08 c4 46
00 00 mov ecx, DWORD PTR [rax+rcx+18116]
00797 e8 00 00 00 00 call stbi__malloc_mad2
0079c 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
007a0 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
007a4 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
007ab 48 89 84 0a d8
46 00 00 mov QWORD PTR [rdx+rcx+18136], rax
; 3777 : stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15);
; 3778 : if (z->img_comp[i].raw_data == NULL)
007b3 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
007b7 48 6b c0 60 imul rax, rax, 96 ; 00000060H
007bb 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
007c2 48 83 bc 01 d8
46 00 00 00 cmp QWORD PTR [rcx+rax+18136], 0
007cb 75 27 jne SHORT $LN37@stbi__proc
; 3779 : return stbi__free_jpeg_components(z, i + 1,
007cd 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
007d4 e8 00 00 00 00 call stbi__err
007d9 8b 4d 64 mov ecx, DWORD PTR i$[rbp]
007dc ff c1 inc ecx
007de 44 8b c0 mov r8d, eax
007e1 8b d1 mov edx, ecx
007e3 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
007ea e8 00 00 00 00 call stbi__free_jpeg_components
007ef e9 86 01 00 00 jmp $LN1@stbi__proc
$LN37@stbi__proc:
; 3780 : stbi__err("outofmem", "Out of memory"));
; 3781 : // align blocks for idct using mmx/sse
; 3782 : z->img_comp[i].data = (stbi_uc *)(((size_t)z->img_comp[i].raw_data + 15) & ~15);
007f4 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
007f8 48 6b c0 60 imul rax, rax, 96 ; 00000060H
007fc 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00803 48 8b 84 01 d8
46 00 00 mov rax, QWORD PTR [rcx+rax+18136]
0080b 48 83 c0 0f add rax, 15
0080f 48 83 e0 f0 and rax, -16
00813 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00817 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
0081b 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
00822 48 89 84 0a d0
46 00 00 mov QWORD PTR [rdx+rcx+18128], rax
; 3783 : if (z->progressive) {
0082a 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
00831 83 b8 30 48 00
00 00 cmp DWORD PTR [rax+18480], 0
00838 0f 84 32 01 00
00 je $LN38@stbi__proc
; 3784 : // w2, h2 are multiples of 8 (see above)
; 3785 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8;
0083e 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00842 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00846 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0084d 8b 84 01 c4 46
00 00 mov eax, DWORD PTR [rcx+rax+18116]
00854 99 cdq
00855 83 e2 07 and edx, 7
00858 03 c2 add eax, edx
0085a c1 f8 03 sar eax, 3
0085d 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00861 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00865 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0086c 89 84 0a f8 46
00 00 mov DWORD PTR [rdx+rcx+18168], eax
; 3786 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8;
00873 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00877 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0087b 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00882 8b 84 01 c8 46
00 00 mov eax, DWORD PTR [rcx+rax+18120]
00889 99 cdq
0088a 83 e2 07 and edx, 7
0088d 03 c2 add eax, edx
0088f c1 f8 03 sar eax, 3
00892 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
00896 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
0089a 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
008a1 89 84 0a fc 46
00 00 mov DWORD PTR [rdx+rcx+18172], eax
; 3787 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(
008a8 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
008ac 48 6b c0 60 imul rax, rax, 96 ; 00000060H
008b0 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
008b4 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
008b8 41 b9 0f 00 00
00 mov r9d, 15
008be 41 b8 02 00 00
00 mov r8d, 2
008c4 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
008cb 8b 94 02 c8 46
00 00 mov edx, DWORD PTR [rdx+rax+18120]
008d2 48 8b 85 e0 01
00 00 mov rax, QWORD PTR z$[rbp]
008d9 8b 8c 08 c4 46
00 00 mov ecx, DWORD PTR [rax+rcx+18116]
008e0 e8 00 00 00 00 call stbi__malloc_mad3
008e5 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
008e9 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
008ed 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
008f4 48 89 84 0a e0
46 00 00 mov QWORD PTR [rdx+rcx+18144], rax
; 3788 : z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15);
; 3789 : if (z->img_comp[i].raw_coeff == NULL)
008fc 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
00900 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00904 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0090b 48 83 bc 01 e0
46 00 00 00 cmp QWORD PTR [rcx+rax+18144], 0
00914 75 24 jne SHORT $LN39@stbi__proc
; 3790 : return stbi__free_jpeg_components(
00916 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0091d e8 00 00 00 00 call stbi__err
00922 8b 4d 64 mov ecx, DWORD PTR i$[rbp]
00925 ff c1 inc ecx
00927 44 8b c0 mov r8d, eax
0092a 8b d1 mov edx, ecx
0092c 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00933 e8 00 00 00 00 call stbi__free_jpeg_components
00938 eb 40 jmp SHORT $LN1@stbi__proc
$LN39@stbi__proc:
; 3791 : z, i + 1, stbi__err("outofmem", "Out of memory"));
; 3792 : z->img_comp[i].coeff =
0093a 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
0093e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00942 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00949 48 8b 84 01 e0
46 00 00 mov rax, QWORD PTR [rcx+rax+18144]
00951 48 83 c0 0f add rax, 15
00955 48 83 e0 f0 and rax, -16
00959 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
0095d 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00961 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR z$[rbp]
00968 48 89 84 0a f0
46 00 00 mov QWORD PTR [rdx+rcx+18160], rax
$LN38@stbi__proc:
; 3793 : (short *)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15);
; 3794 : }
; 3795 : }
00970 e9 7a fc ff ff jmp $LN14@stbi__proc
$LN15@stbi__proc:
; 3796 :
; 3797 : return 1;
00975 b8 01 00 00 00 mov eax, 1
$LN1@stbi__proc:
; 3798 : }
0097a 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
00981 5f pop rdi
00982 5d pop rbp
00983 c3 ret 0
stbi__process_frame_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__free_jpeg_components
_TEXT SEGMENT
i$ = 4
z$ = 256
ncomp$ = 264
why$ = 272
stbi__free_jpeg_components PROC ; COMDAT
; 3655 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00028 90 npad 1
; 3656 : int i;
; 3657 : for (i = 0; i < ncomp; ++i) {
00029 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00030 eb 08 jmp SHORT $LN4@stbi__free
$LN2@stbi__free:
00032 8b 45 04 mov eax, DWORD PTR i$[rbp]
00035 ff c0 inc eax
00037 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__free:
0003a 8b 85 08 01 00
00 mov eax, DWORD PTR ncomp$[rbp]
00040 39 45 04 cmp DWORD PTR i$[rbp], eax
00043 0f 8d 34 01 00
00 jge $LN3@stbi__free
; 3658 : if (z->img_comp[i].raw_data) {
00049 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0004d 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00051 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00058 48 83 bc 01 d8
46 00 00 00 cmp QWORD PTR [rcx+rax+18136], 0
00061 74 54 je SHORT $LN5@stbi__free
; 3659 : STBI_FREE(z->img_comp[i].raw_data);
00063 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00067 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0006b 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00072 48 8b 8c 01 d8
46 00 00 mov rcx, QWORD PTR [rcx+rax+18136]
0007a ff 15 00 00 00
00 call QWORD PTR __imp_free
00080 90 npad 1
; 3660 : z->img_comp[i].raw_data = NULL;
00081 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00085 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00089 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00090 48 c7 84 01 d8
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18136], 0
; 3661 : z->img_comp[i].data = NULL;
0009c 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000a0 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000a4 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
000ab 48 c7 84 01 d0
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18128], 0
$LN5@stbi__free:
; 3662 : }
; 3663 : if (z->img_comp[i].raw_coeff) {
000b7 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000bb 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000bf 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
000c6 48 83 bc 01 e0
46 00 00 00 cmp QWORD PTR [rcx+rax+18144], 0
000cf 74 54 je SHORT $LN6@stbi__free
; 3664 : STBI_FREE(z->img_comp[i].raw_coeff);
000d1 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000d5 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000d9 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
000e0 48 8b 8c 01 e0
46 00 00 mov rcx, QWORD PTR [rcx+rax+18144]
000e8 ff 15 00 00 00
00 call QWORD PTR __imp_free
000ee 90 npad 1
; 3665 : z->img_comp[i].raw_coeff = 0;
000ef 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000f3 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000f7 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
000fe 48 c7 84 01 e0
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18144], 0
; 3666 : z->img_comp[i].coeff = 0;
0010a 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0010e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00112 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00119 48 c7 84 01 f0
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18160], 0
$LN6@stbi__free:
; 3667 : }
; 3668 : if (z->img_comp[i].linebuf) {
00125 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00129 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0012d 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
00134 48 83 bc 01 e8
46 00 00 00 cmp QWORD PTR [rcx+rax+18152], 0
0013d 74 39 je SHORT $LN7@stbi__free
; 3669 : STBI_FREE(z->img_comp[i].linebuf);
0013f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00143 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00147 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
0014e 48 8b 8c 01 e8
46 00 00 mov rcx, QWORD PTR [rcx+rax+18152]
00156 ff 15 00 00 00
00 call QWORD PTR __imp_free
0015c 90 npad 1
; 3670 : z->img_comp[i].linebuf = NULL;
0015d 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00161 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00165 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR z$[rbp]
0016c 48 c7 84 01 e8
46 00 00 00 00
00 00 mov QWORD PTR [rcx+rax+18152], 0
$LN7@stbi__free:
; 3671 : }
; 3672 : }
00178 e9 b5 fe ff ff jmp $LN2@stbi__free
$LN3@stbi__free:
; 3673 : return why;
0017d 8b 85 10 01 00
00 mov eax, DWORD PTR why$[rbp]
; 3674 : }
00183 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
0018a 5f pop rdi
0018b 5d pop rbp
0018c c3 ret 0
stbi__free_jpeg_components ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__process_scan_header
_TEXT SEGMENT
i$ = 4
Ls$ = 36
id$1 = 68
which$2 = 100
q$3 = 132
aa$4 = 164
z$ = 416
stbi__process_scan_header PROC ; COMDAT
; 3606 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 3607 : int i;
; 3608 : int Ls = stbi__get16be(z->s);
00020 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00027 48 8b 08 mov rcx, QWORD PTR [rax]
0002a e8 00 00 00 00 call stbi__get16be
0002f 89 45 24 mov DWORD PTR Ls$[rbp], eax
; 3609 : z->scan_n = stbi__get8(z->s);
00032 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00039 48 8b 08 mov rcx, QWORD PTR [rax]
0003c e8 00 00 00 00 call stbi__get8
00041 0f b6 c0 movzx eax, al
00044 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0004b 89 81 54 48 00
00 mov DWORD PTR [rcx+18516], eax
; 3610 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n)
00051 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00058 83 b8 54 48 00
00 01 cmp DWORD PTR [rax+18516], 1
0005f 7c 2c jl SHORT $LN9@stbi__proc
00061 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00068 83 b8 54 48 00
00 04 cmp DWORD PTR [rax+18516], 4
0006f 7f 1c jg SHORT $LN9@stbi__proc
00071 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00078 48 8b 00 mov rax, QWORD PTR [rax]
0007b 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00082 8b 40 08 mov eax, DWORD PTR [rax+8]
00085 39 81 54 48 00
00 cmp DWORD PTR [rcx+18516], eax
0008b 7e 11 jle SHORT $LN8@stbi__proc
$LN9@stbi__proc:
; 3611 : return stbi__err("bad SOS component count", "Corrupt JPEG");
0008d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@
00094 e8 00 00 00 00 call stbi__err
00099 e9 e2 02 00 00 jmp $LN1@stbi__proc
$LN8@stbi__proc:
; 3612 : if (Ls != 6 + 2 * z->scan_n)
0009e 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
000a5 8b 80 54 48 00
00 mov eax, DWORD PTR [rax+18516]
000ab 8d 44 00 06 lea eax, DWORD PTR [rax+rax+6]
000af 39 45 24 cmp DWORD PTR Ls$[rbp], eax
000b2 74 11 je SHORT $LN10@stbi__proc
; 3613 : return stbi__err("bad SOS len", "Corrupt JPEG");
000b4 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@GNEHAHOH@bad?5SOS?5len@
000bb e8 00 00 00 00 call stbi__err
000c0 e9 bb 02 00 00 jmp $LN1@stbi__proc
$LN10@stbi__proc:
; 3614 : for (i = 0; i < z->scan_n; ++i) {
000c5 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
000cc eb 08 jmp SHORT $LN4@stbi__proc
$LN2@stbi__proc:
000ce 8b 45 04 mov eax, DWORD PTR i$[rbp]
000d1 ff c0 inc eax
000d3 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__proc:
000d6 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
000dd 8b 80 54 48 00
00 mov eax, DWORD PTR [rax+18516]
000e3 39 45 04 cmp DWORD PTR i$[rbp], eax
000e6 0f 8d 34 01 00
00 jge $LN3@stbi__proc
; 3615 : int id = stbi__get8(z->s), which;
000ec 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
000f3 48 8b 08 mov rcx, QWORD PTR [rax]
000f6 e8 00 00 00 00 call stbi__get8
000fb 0f b6 c0 movzx eax, al
000fe 89 45 44 mov DWORD PTR id$1[rbp], eax
; 3616 : int q = stbi__get8(z->s);
00101 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00108 48 8b 08 mov rcx, QWORD PTR [rax]
0010b e8 00 00 00 00 call stbi__get8
00110 0f b6 c0 movzx eax, al
00113 89 85 84 00 00
00 mov DWORD PTR q$3[rbp], eax
; 3617 : for (which = 0; which < z->s->img_n; ++which)
00119 c7 45 64 00 00
00 00 mov DWORD PTR which$2[rbp], 0
00120 eb 08 jmp SHORT $LN7@stbi__proc
$LN5@stbi__proc:
00122 8b 45 64 mov eax, DWORD PTR which$2[rbp]
00125 ff c0 inc eax
00127 89 45 64 mov DWORD PTR which$2[rbp], eax
$LN7@stbi__proc:
0012a 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00131 48 8b 00 mov rax, QWORD PTR [rax]
00134 8b 40 08 mov eax, DWORD PTR [rax+8]
00137 39 45 64 cmp DWORD PTR which$2[rbp], eax
0013a 7d 1f jge SHORT $LN6@stbi__proc
; 3618 : if (z->img_comp[which].id == id)
0013c 48 63 45 64 movsxd rax, DWORD PTR which$2[rbp]
00140 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00144 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0014b 8b 55 44 mov edx, DWORD PTR id$1[rbp]
0014e 39 94 01 a0 46
00 00 cmp DWORD PTR [rcx+rax+18080], edx
00155 75 02 jne SHORT $LN11@stbi__proc
; 3619 : break;
00157 eb 02 jmp SHORT $LN6@stbi__proc
$LN11@stbi__proc:
00159 eb c7 jmp SHORT $LN5@stbi__proc
$LN6@stbi__proc:
; 3620 : if (which == z->s->img_n)
0015b 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00162 48 8b 00 mov rax, QWORD PTR [rax]
00165 8b 40 08 mov eax, DWORD PTR [rax+8]
00168 39 45 64 cmp DWORD PTR which$2[rbp], eax
0016b 75 07 jne SHORT $LN12@stbi__proc
; 3621 : return 0; // no match
0016d 33 c0 xor eax, eax
0016f e9 0c 02 00 00 jmp $LN1@stbi__proc
$LN12@stbi__proc:
; 3622 : z->img_comp[which].hd = q >> 4;
00174 8b 85 84 00 00
00 mov eax, DWORD PTR q$3[rbp]
0017a c1 f8 04 sar eax, 4
0017d 48 63 4d 64 movsxd rcx, DWORD PTR which$2[rbp]
00181 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00185 48 8b 95 a0 01
00 00 mov rdx, QWORD PTR z$[rbp]
0018c 89 84 0a b0 46
00 00 mov DWORD PTR [rdx+rcx+18096], eax
; 3623 : if (z->img_comp[which].hd > 3)
00193 48 63 45 64 movsxd rax, DWORD PTR which$2[rbp]
00197 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0019b 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
001a2 83 bc 01 b0 46
00 00 03 cmp DWORD PTR [rcx+rax+18096], 3
001aa 7e 11 jle SHORT $LN13@stbi__proc
; 3624 : return stbi__err("bad DC huff", "Corrupt JPEG");
001ac 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@NOCCBFAC@bad?5DC?5huff@
001b3 e8 00 00 00 00 call stbi__err
001b8 e9 c3 01 00 00 jmp $LN1@stbi__proc
$LN13@stbi__proc:
; 3625 : z->img_comp[which].ha = q & 15;
001bd 8b 85 84 00 00
00 mov eax, DWORD PTR q$3[rbp]
001c3 83 e0 0f and eax, 15
001c6 48 63 4d 64 movsxd rcx, DWORD PTR which$2[rbp]
001ca 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
001ce 48 8b 95 a0 01
00 00 mov rdx, QWORD PTR z$[rbp]
001d5 89 84 0a b4 46
00 00 mov DWORD PTR [rdx+rcx+18100], eax
; 3626 : if (z->img_comp[which].ha > 3)
001dc 48 63 45 64 movsxd rax, DWORD PTR which$2[rbp]
001e0 48 6b c0 60 imul rax, rax, 96 ; 00000060H
001e4 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
001eb 83 bc 01 b4 46
00 00 03 cmp DWORD PTR [rcx+rax+18100], 3
001f3 7e 11 jle SHORT $LN14@stbi__proc
; 3627 : return stbi__err("bad AC huff", "Corrupt JPEG");
001f5 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@JGMCBLGG@bad?5AC?5huff@
001fc e8 00 00 00 00 call stbi__err
00201 e9 7a 01 00 00 jmp $LN1@stbi__proc
$LN14@stbi__proc:
; 3628 : z->order[i] = which;
00206 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
0020a 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00211 8b 55 64 mov edx, DWORD PTR which$2[rbp]
00214 89 94 81 58 48
00 00 mov DWORD PTR [rcx+rax*4+18520], edx
; 3629 : }
0021b e9 ae fe ff ff jmp $LN2@stbi__proc
$LN3@stbi__proc:
; 3630 :
; 3631 : {
; 3632 : int aa;
; 3633 : z->spec_start = stbi__get8(z->s);
00220 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00227 48 8b 08 mov rcx, QWORD PTR [rax]
0022a e8 00 00 00 00 call stbi__get8
0022f 0f b6 c0 movzx eax, al
00232 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00239 89 81 34 48 00
00 mov DWORD PTR [rcx+18484], eax
; 3634 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0
0023f 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00246 48 8b 08 mov rcx, QWORD PTR [rax]
00249 e8 00 00 00 00 call stbi__get8
0024e 0f b6 c0 movzx eax, al
00251 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00258 89 81 38 48 00
00 mov DWORD PTR [rcx+18488], eax
; 3635 : aa = stbi__get8(z->s);
0025e 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00265 48 8b 08 mov rcx, QWORD PTR [rax]
00268 e8 00 00 00 00 call stbi__get8
0026d 0f b6 c0 movzx eax, al
00270 89 85 a4 00 00
00 mov DWORD PTR aa$4[rbp], eax
; 3636 : z->succ_high = (aa >> 4);
00276 8b 85 a4 00 00
00 mov eax, DWORD PTR aa$4[rbp]
0027c c1 f8 04 sar eax, 4
0027f 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00286 89 81 3c 48 00
00 mov DWORD PTR [rcx+18492], eax
; 3637 : z->succ_low = (aa & 15);
0028c 8b 85 a4 00 00
00 mov eax, DWORD PTR aa$4[rbp]
00292 83 e0 0f and eax, 15
00295 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0029c 89 81 40 48 00
00 mov DWORD PTR [rcx+18496], eax
; 3638 : if (z->progressive) {
002a2 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
002a9 83 b8 30 48 00
00 00 cmp DWORD PTR [rax+18480], 0
002b0 74 6c je SHORT $LN15@stbi__proc
; 3639 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end ||
; 3640 : z->succ_high > 13 || z->succ_low > 13)
002b2 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
002b9 83 b8 34 48 00
00 3f cmp DWORD PTR [rax+18484], 63 ; 0000003fH
002c0 7f 4c jg SHORT $LN18@stbi__proc
002c2 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
002c9 83 b8 38 48 00
00 3f cmp DWORD PTR [rax+18488], 63 ; 0000003fH
002d0 7f 3c jg SHORT $LN18@stbi__proc
002d2 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
002d9 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
002e0 8b 89 38 48 00
00 mov ecx, DWORD PTR [rcx+18488]
002e6 39 88 34 48 00
00 cmp DWORD PTR [rax+18484], ecx
002ec 7f 20 jg SHORT $LN18@stbi__proc
002ee 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
002f5 83 b8 3c 48 00
00 0d cmp DWORD PTR [rax+18492], 13
002fc 7f 10 jg SHORT $LN18@stbi__proc
002fe 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00305 83 b8 40 48 00
00 0d cmp DWORD PTR [rax+18496], 13
0030c 7e 0e jle SHORT $LN17@stbi__proc
$LN18@stbi__proc:
; 3641 : return stbi__err("bad SOS", "Corrupt JPEG");
0030e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07EEJOMGGP@bad?5SOS@
00315 e8 00 00 00 00 call stbi__err
0031a eb 64 jmp SHORT $LN1@stbi__proc
$LN17@stbi__proc:
; 3642 : } else {
0031c eb 5d jmp SHORT $LN16@stbi__proc
$LN15@stbi__proc:
; 3643 : if (z->spec_start != 0)
0031e 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00325 83 b8 34 48 00
00 00 cmp DWORD PTR [rax+18484], 0
0032c 74 0e je SHORT $LN19@stbi__proc
; 3644 : return stbi__err("bad SOS", "Corrupt JPEG");
0032e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07EEJOMGGP@bad?5SOS@
00335 e8 00 00 00 00 call stbi__err
0033a eb 44 jmp SHORT $LN1@stbi__proc
$LN19@stbi__proc:
; 3645 : if (z->succ_high != 0 || z->succ_low != 0)
0033c 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00343 83 b8 3c 48 00
00 00 cmp DWORD PTR [rax+18492], 0
0034a 75 10 jne SHORT $LN21@stbi__proc
0034c 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00353 83 b8 40 48 00
00 00 cmp DWORD PTR [rax+18496], 0
0035a 74 0e je SHORT $LN20@stbi__proc
$LN21@stbi__proc:
; 3646 : return stbi__err("bad SOS", "Corrupt JPEG");
0035c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07EEJOMGGP@bad?5SOS@
00363 e8 00 00 00 00 call stbi__err
00368 eb 16 jmp SHORT $LN1@stbi__proc
$LN20@stbi__proc:
; 3647 : z->spec_end = 63;
0036a 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00371 c7 80 38 48 00
00 3f 00 00 00 mov DWORD PTR [rax+18488], 63 ; 0000003fH
$LN16@stbi__proc:
; 3648 : }
; 3649 : }
; 3650 :
; 3651 : return 1;
0037b b8 01 00 00 00 mov eax, 1
$LN1@stbi__proc:
; 3652 : }
00380 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
00387 5f pop rdi
00388 5d pop rbp
00389 c3 ret 0
stbi__process_scan_header ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__process_marker
_TEXT SEGMENT
L$ = 4
q$4 = 36
p$5 = 68
sixteen$6 = 100
t$7 = 132
i$8 = 164
v$9 = 200
sizes$10 = 240
i$11 = 324
n$12 = 356
q$13 = 388
tc$14 = 420
th$15 = 452
ok$16 = 484
i$17 = 516
ok$18 = 548
i$19 = 580
tv64 = 980
tv88 = 980
tv149 = 980
tv152 = 980
tv155 = 980
tv236 = 980
__$ArrayPad$ = 984
z$ = 1024
m$ = 1032
stbi__process_marker PROC ; COMDAT
; 3491 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 08 04
00 00 sub rsp, 1032 ; 00000408H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001c b9 9a 00 00 00 mov ecx, 154 ; 0000009aH
00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00026 f3 ab rep stosd
00028 48 8b 8c 24 28
04 00 00 mov rcx, QWORD PTR [rsp+1064]
00030 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00037 48 33 c5 xor rax, rbp
0003a 48 89 85 d8 03
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00041 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004d 90 npad 1
; 3492 : int L;
; 3493 : switch (m) {
0004e 8b 85 08 04 00
00 mov eax, DWORD PTR m$[rbp]
00054 89 85 d4 03 00
00 mov DWORD PTR tv64[rbp], eax
0005a 81 bd d4 03 00
00 c4 00 00 00 cmp DWORD PTR tv64[rbp], 196 ; 000000c4H
00064 0f 84 19 02 00
00 je $LN29@stbi__proc
0006a 81 bd d4 03 00
00 db 00 00 00 cmp DWORD PTR tv64[rbp], 219 ; 000000dbH
00074 74 79 je SHORT $LN26@stbi__proc
00076 81 bd d4 03 00
00 dd 00 00 00 cmp DWORD PTR tv64[rbp], 221 ; 000000ddH
00080 74 22 je SHORT $LN24@stbi__proc
00082 81 bd d4 03 00
00 ff 00 00 00 cmp DWORD PTR tv64[rbp], 255 ; 000000ffH
0008c 74 05 je SHORT $LN23@stbi__proc
0008e e9 8b 04 00 00 jmp $LN2@stbi__proc
$LN23@stbi__proc:
; 3494 : case STBI__MARKER_none: // no marker found
; 3495 : return stbi__err("expected marker", "Corrupt JPEG");
00093 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@KLNDOKJD@expected?5marker@
0009a e8 00 00 00 00 call stbi__err
0009f e9 a1 06 00 00 jmp $LN1@stbi__proc
$LN24@stbi__proc:
; 3496 :
; 3497 : case 0xDD: // DRI - specify restart interval
; 3498 : if (stbi__get16be(z->s) != 4)
000a4 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
000ab 48 8b 08 mov rcx, QWORD PTR [rax]
000ae e8 00 00 00 00 call stbi__get16be
000b3 83 f8 04 cmp eax, 4
000b6 74 11 je SHORT $LN25@stbi__proc
; 3499 : return stbi__err("bad DRI len", "Corrupt JPEG");
000b8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@LPHNODCG@bad?5DRI?5len@
000bf e8 00 00 00 00 call stbi__err
000c4 e9 7c 06 00 00 jmp $LN1@stbi__proc
$LN25@stbi__proc:
; 3500 : z->restart_interval = stbi__get16be(z->s);
000c9 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
000d0 48 8b 08 mov rcx, QWORD PTR [rax]
000d3 e8 00 00 00 00 call stbi__get16be
000d8 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
000df 89 81 68 48 00
00 mov DWORD PTR [rcx+18536], eax
; 3501 : return 1;
000e5 b8 01 00 00 00 mov eax, 1
000ea e9 56 06 00 00 jmp $LN1@stbi__proc
$LN26@stbi__proc:
; 3502 :
; 3503 : case 0xDB: // DQT - define quantization table
; 3504 : L = stbi__get16be(z->s) - 2;
000ef 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
000f6 48 8b 08 mov rcx, QWORD PTR [rax]
000f9 e8 00 00 00 00 call stbi__get16be
000fe 83 e8 02 sub eax, 2
00101 89 45 04 mov DWORD PTR L$[rbp], eax
$LN4@stbi__proc:
; 3505 : while (L > 0) {
00104 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
00108 0f 8e 4e 01 00
00 jle $LN5@stbi__proc
; 3506 : int q = stbi__get8(z->s);
0010e 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
00115 48 8b 08 mov rcx, QWORD PTR [rax]
00118 e8 00 00 00 00 call stbi__get8
0011d 0f b6 c0 movzx eax, al
00120 89 45 24 mov DWORD PTR q$4[rbp], eax
; 3507 : int p = q >> 4, sixteen = (p != 0);
00123 8b 45 24 mov eax, DWORD PTR q$4[rbp]
00126 c1 f8 04 sar eax, 4
00129 89 45 44 mov DWORD PTR p$5[rbp], eax
0012c 83 7d 44 00 cmp DWORD PTR p$5[rbp], 0
00130 74 0c je SHORT $LN52@stbi__proc
00132 c7 85 d4 03 00
00 01 00 00 00 mov DWORD PTR tv88[rbp], 1
0013c eb 0a jmp SHORT $LN53@stbi__proc
$LN52@stbi__proc:
0013e c7 85 d4 03 00
00 00 00 00 00 mov DWORD PTR tv88[rbp], 0
$LN53@stbi__proc:
00148 8b 85 d4 03 00
00 mov eax, DWORD PTR tv88[rbp]
0014e 89 45 64 mov DWORD PTR sixteen$6[rbp], eax
; 3508 : int t = q & 15, i;
00151 8b 45 24 mov eax, DWORD PTR q$4[rbp]
00154 83 e0 0f and eax, 15
00157 89 85 84 00 00
00 mov DWORD PTR t$7[rbp], eax
; 3509 : if (p != 0 && p != 1)
0015d 83 7d 44 00 cmp DWORD PTR p$5[rbp], 0
00161 74 17 je SHORT $LN27@stbi__proc
00163 83 7d 44 01 cmp DWORD PTR p$5[rbp], 1
00167 74 11 je SHORT $LN27@stbi__proc
; 3510 : return stbi__err("bad DQT type", "Corrupt JPEG");
00169 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0N@BOFJCHAP@bad?5DQT?5type@
00170 e8 00 00 00 00 call stbi__err
00175 e9 cb 05 00 00 jmp $LN1@stbi__proc
$LN27@stbi__proc:
; 3511 : if (t > 3)
0017a 83 bd 84 00 00
00 03 cmp DWORD PTR t$7[rbp], 3
00181 7e 11 jle SHORT $LN28@stbi__proc
; 3512 : return stbi__err("bad DQT table", "Corrupt JPEG");
00183 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@CNHKKDIM@bad?5DQT?5table@
0018a e8 00 00 00 00 call stbi__err
0018f e9 b1 05 00 00 jmp $LN1@stbi__proc
$LN28@stbi__proc:
; 3513 :
; 3514 : for (i = 0; i < 64; ++i)
00194 c7 85 a4 00 00
00 00 00 00 00 mov DWORD PTR i$8[rbp], 0
0019e eb 0e jmp SHORT $LN8@stbi__proc
$LN6@stbi__proc:
001a0 8b 85 a4 00 00
00 mov eax, DWORD PTR i$8[rbp]
001a6 ff c0 inc eax
001a8 89 85 a4 00 00
00 mov DWORD PTR i$8[rbp], eax
$LN8@stbi__proc:
001ae 83 bd a4 00 00
00 40 cmp DWORD PTR i$8[rbp], 64 ; 00000040H
001b5 7d 74 jge SHORT $LN7@stbi__proc
; 3515 : z->dequant[t][stbi__jpeg_dezigzag[i]] =
001b7 83 7d 64 00 cmp DWORD PTR sixteen$6[rbp], 0
001bb 74 17 je SHORT $LN54@stbi__proc
001bd 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
001c4 48 8b 08 mov rcx, QWORD PTR [rax]
001c7 e8 00 00 00 00 call stbi__get16be
001cc 89 85 d4 03 00
00 mov DWORD PTR tv149[rbp], eax
001d2 eb 18 jmp SHORT $LN55@stbi__proc
$LN54@stbi__proc:
001d4 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
001db 48 8b 08 mov rcx, QWORD PTR [rax]
001de e8 00 00 00 00 call stbi__get8
001e3 0f b6 c0 movzx eax, al
001e6 89 85 d4 03 00
00 mov DWORD PTR tv149[rbp], eax
$LN55@stbi__proc:
001ec 48 63 85 84 00
00 00 movsxd rax, DWORD PTR t$7[rbp]
001f3 48 69 c0 80 00
00 00 imul rax, rax, 128 ; 00000080H
001fa 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
00201 48 8d 84 01 88
34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
00209 48 63 8d a4 00
00 00 movsxd rcx, DWORD PTR i$8[rbp]
00210 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__jpeg_dezigzag
00217 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
0021b 0f b7 95 d4 03
00 00 movzx edx, WORD PTR tv149[rbp]
00222 66 89 14 48 mov WORD PTR [rax+rcx*2], dx
00226 e9 75 ff ff ff jmp $LN6@stbi__proc
$LN7@stbi__proc:
; 3516 : (stbi__uint16)(sixteen ? stbi__get16be(z->s) :
; 3517 : stbi__get8(z->s));
; 3518 : L -= (sixteen ? 129 : 65);
0022b 83 7d 64 00 cmp DWORD PTR sixteen$6[rbp], 0
0022f 74 0c je SHORT $LN56@stbi__proc
00231 c7 85 d4 03 00
00 81 00 00 00 mov DWORD PTR tv152[rbp], 129 ; 00000081H
0023b eb 0a jmp SHORT $LN57@stbi__proc
$LN56@stbi__proc:
0023d c7 85 d4 03 00
00 41 00 00 00 mov DWORD PTR tv152[rbp], 65 ; 00000041H
$LN57@stbi__proc:
00247 8b 85 d4 03 00
00 mov eax, DWORD PTR tv152[rbp]
0024d 8b 4d 04 mov ecx, DWORD PTR L$[rbp]
00250 2b c8 sub ecx, eax
00252 8b c1 mov eax, ecx
00254 89 45 04 mov DWORD PTR L$[rbp], eax
; 3519 : }
00257 e9 a8 fe ff ff jmp $LN4@stbi__proc
$LN5@stbi__proc:
; 3520 : return L == 0;
0025c 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
00260 75 0c jne SHORT $LN58@stbi__proc
00262 c7 85 d4 03 00
00 01 00 00 00 mov DWORD PTR tv155[rbp], 1
0026c eb 0a jmp SHORT $LN59@stbi__proc
$LN58@stbi__proc:
0026e c7 85 d4 03 00
00 00 00 00 00 mov DWORD PTR tv155[rbp], 0
$LN59@stbi__proc:
00278 8b 85 d4 03 00
00 mov eax, DWORD PTR tv155[rbp]
0027e e9 c2 04 00 00 jmp $LN1@stbi__proc
$LN29@stbi__proc:
; 3521 :
; 3522 : case 0xC4: // DHT - define huffman table
; 3523 : L = stbi__get16be(z->s) - 2;
00283 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
0028a 48 8b 08 mov rcx, QWORD PTR [rax]
0028d e8 00 00 00 00 call stbi__get16be
00292 83 e8 02 sub eax, 2
00295 89 45 04 mov DWORD PTR L$[rbp], eax
$LN9@stbi__proc:
; 3524 : while (L > 0) {
00298 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
0029c 0f 8e 55 02 00
00 jle $LN10@stbi__proc
; 3525 : stbi_uc *v;
; 3526 : int sizes[16], i, n = 0;
002a2 c7 85 64 01 00
00 00 00 00 00 mov DWORD PTR n$12[rbp], 0
; 3527 : int q = stbi__get8(z->s);
002ac 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
002b3 48 8b 08 mov rcx, QWORD PTR [rax]
002b6 e8 00 00 00 00 call stbi__get8
002bb 0f b6 c0 movzx eax, al
002be 89 85 84 01 00
00 mov DWORD PTR q$13[rbp], eax
; 3528 : int tc = q >> 4;
002c4 8b 85 84 01 00
00 mov eax, DWORD PTR q$13[rbp]
002ca c1 f8 04 sar eax, 4
002cd 89 85 a4 01 00
00 mov DWORD PTR tc$14[rbp], eax
; 3529 : int th = q & 15;
002d3 8b 85 84 01 00
00 mov eax, DWORD PTR q$13[rbp]
002d9 83 e0 0f and eax, 15
002dc 89 85 c4 01 00
00 mov DWORD PTR th$15[rbp], eax
; 3530 : if (tc > 1 || th > 3)
002e2 83 bd a4 01 00
00 01 cmp DWORD PTR tc$14[rbp], 1
002e9 7f 09 jg SHORT $LN31@stbi__proc
002eb 83 bd c4 01 00
00 03 cmp DWORD PTR th$15[rbp], 3
002f2 7e 11 jle SHORT $LN30@stbi__proc
$LN31@stbi__proc:
; 3531 : return stbi__err("bad DHT header", "Corrupt JPEG");
002f4 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@JLGKOCGN@bad?5DHT?5header@
002fb e8 00 00 00 00 call stbi__err
00300 e9 40 04 00 00 jmp $LN1@stbi__proc
$LN30@stbi__proc:
; 3532 : for (i = 0; i < 16; ++i) {
00305 c7 85 44 01 00
00 00 00 00 00 mov DWORD PTR i$11[rbp], 0
0030f eb 0e jmp SHORT $LN13@stbi__proc
$LN11@stbi__proc:
00311 8b 85 44 01 00
00 mov eax, DWORD PTR i$11[rbp]
00317 ff c0 inc eax
00319 89 85 44 01 00
00 mov DWORD PTR i$11[rbp], eax
$LN13@stbi__proc:
0031f 83 bd 44 01 00
00 10 cmp DWORD PTR i$11[rbp], 16
00326 7d 40 jge SHORT $LN12@stbi__proc
; 3533 : sizes[i] = stbi__get8(z->s);
00328 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
0032f 48 8b 08 mov rcx, QWORD PTR [rax]
00332 e8 00 00 00 00 call stbi__get8
00337 48 63 8d 44 01
00 00 movsxd rcx, DWORD PTR i$11[rbp]
0033e 0f b6 c0 movzx eax, al
00341 89 84 8d f0 00
00 00 mov DWORD PTR sizes$10[rbp+rcx*4], eax
; 3534 : n += sizes[i];
00348 48 63 85 44 01
00 00 movsxd rax, DWORD PTR i$11[rbp]
0034f 8b 84 85 f0 00
00 00 mov eax, DWORD PTR sizes$10[rbp+rax*4]
00356 8b 8d 64 01 00
00 mov ecx, DWORD PTR n$12[rbp]
0035c 03 c8 add ecx, eax
0035e 8b c1 mov eax, ecx
00360 89 85 64 01 00
00 mov DWORD PTR n$12[rbp], eax
; 3535 : }
00366 eb a9 jmp SHORT $LN11@stbi__proc
$LN12@stbi__proc:
; 3536 : if (n > 256)
00368 81 bd 64 01 00
00 00 01 00 00 cmp DWORD PTR n$12[rbp], 256 ; 00000100H
00372 7e 11 jle SHORT $LN32@stbi__proc
; 3537 : return stbi__err(
00374 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@JLGKOCGN@bad?5DHT?5header@
0037b e8 00 00 00 00 call stbi__err
00380 e9 c0 03 00 00 jmp $LN1@stbi__proc
$LN32@stbi__proc:
; 3538 : "bad DHT header",
; 3539 : "Corrupt JPEG"); // Loop over i < n would write past end of values!
; 3540 : L -= 17;
00385 8b 45 04 mov eax, DWORD PTR L$[rbp]
00388 83 e8 11 sub eax, 17
0038b 89 45 04 mov DWORD PTR L$[rbp], eax
; 3541 : if (tc == 0) {
0038e 83 bd a4 01 00
00 00 cmp DWORD PTR tc$14[rbp], 0
00395 75 5a jne SHORT $LN33@stbi__proc
; 3542 : if (!stbi__build_huffman(z->huff_dc + th, sizes))
00397 48 63 85 c4 01
00 00 movsxd rax, DWORD PTR th$15[rbp]
0039e 48 69 c0 90 06
00 00 imul rax, rax, 1680 ; 00000690H
003a5 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
003ac 48 8d 44 01 08 lea rax, QWORD PTR [rcx+rax+8]
003b1 48 8d 95 f0 00
00 00 lea rdx, QWORD PTR sizes$10[rbp]
003b8 48 8b c8 mov rcx, rax
003bb e8 00 00 00 00 call stbi__build_huffman
003c0 85 c0 test eax, eax
003c2 75 07 jne SHORT $LN35@stbi__proc
; 3543 : return 0;
003c4 33 c0 xor eax, eax
003c6 e9 7a 03 00 00 jmp $LN1@stbi__proc
$LN35@stbi__proc:
; 3544 : v = z->huff_dc[th].values;
003cb 48 63 85 c4 01
00 00 movsxd rax, DWORD PTR th$15[rbp]
003d2 48 69 c0 90 06
00 00 imul rax, rax, 1680 ; 00000690H
003d9 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
003e0 48 8d 84 01 08
04 00 00 lea rax, QWORD PTR [rcx+rax+1032]
003e8 48 89 85 c8 00
00 00 mov QWORD PTR v$9[rbp], rax
; 3545 : } else {
003ef eb 5b jmp SHORT $LN34@stbi__proc
$LN33@stbi__proc:
; 3546 : if (!stbi__build_huffman(z->huff_ac + th, sizes))
003f1 48 63 85 c4 01
00 00 movsxd rax, DWORD PTR th$15[rbp]
003f8 48 69 c0 90 06
00 00 imul rax, rax, 1680 ; 00000690H
003ff 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
00406 48 8d 84 01 48
1a 00 00 lea rax, QWORD PTR [rcx+rax+6728]
0040e 48 8d 95 f0 00
00 00 lea rdx, QWORD PTR sizes$10[rbp]
00415 48 8b c8 mov rcx, rax
00418 e8 00 00 00 00 call stbi__build_huffman
0041d 85 c0 test eax, eax
0041f 75 07 jne SHORT $LN36@stbi__proc
; 3547 : return 0;
00421 33 c0 xor eax, eax
00423 e9 1d 03 00 00 jmp $LN1@stbi__proc
$LN36@stbi__proc:
; 3548 : v = z->huff_ac[th].values;
00428 48 63 85 c4 01
00 00 movsxd rax, DWORD PTR th$15[rbp]
0042f 48 69 c0 90 06
00 00 imul rax, rax, 1680 ; 00000690H
00436 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
0043d 48 8d 84 01 48
1e 00 00 lea rax, QWORD PTR [rcx+rax+7752]
00445 48 89 85 c8 00
00 00 mov QWORD PTR v$9[rbp], rax
$LN34@stbi__proc:
; 3549 : }
; 3550 : for (i = 0; i < n; ++i)
0044c c7 85 44 01 00
00 00 00 00 00 mov DWORD PTR i$11[rbp], 0
00456 eb 0e jmp SHORT $LN16@stbi__proc
$LN14@stbi__proc:
00458 8b 85 44 01 00
00 mov eax, DWORD PTR i$11[rbp]
0045e ff c0 inc eax
00460 89 85 44 01 00
00 mov DWORD PTR i$11[rbp], eax
$LN16@stbi__proc:
00466 8b 85 64 01 00
00 mov eax, DWORD PTR n$12[rbp]
0046c 39 85 44 01 00
00 cmp DWORD PTR i$11[rbp], eax
00472 7d 22 jge SHORT $LN15@stbi__proc
; 3551 : v[i] = stbi__get8(z->s);
00474 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
0047b 48 8b 08 mov rcx, QWORD PTR [rax]
0047e e8 00 00 00 00 call stbi__get8
00483 48 63 8d 44 01
00 00 movsxd rcx, DWORD PTR i$11[rbp]
0048a 48 8b 95 c8 00
00 00 mov rdx, QWORD PTR v$9[rbp]
00491 88 04 0a mov BYTE PTR [rdx+rcx], al
00494 eb c2 jmp SHORT $LN14@stbi__proc
$LN15@stbi__proc:
; 3552 : if (tc != 0)
00496 83 bd a4 01 00
00 00 cmp DWORD PTR tc$14[rbp], 0
0049d 74 43 je SHORT $LN37@stbi__proc
; 3553 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th);
0049f 48 63 85 c4 01
00 00 movsxd rax, DWORD PTR th$15[rbp]
004a6 48 69 c0 90 06
00 00 imul rax, rax, 1680 ; 00000690H
004ad 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
004b4 48 8d 84 01 48
1a 00 00 lea rax, QWORD PTR [rcx+rax+6728]
004bc 48 63 8d c4 01
00 00 movsxd rcx, DWORD PTR th$15[rbp]
004c3 48 69 c9 00 04
00 00 imul rcx, rcx, 1024 ; 00000400H
004ca 48 8b 95 00 04
00 00 mov rdx, QWORD PTR z$[rbp]
004d1 48 8d 8c 0a 88
36 00 00 lea rcx, QWORD PTR [rdx+rcx+13960]
004d9 48 8b d0 mov rdx, rax
004dc e8 00 00 00 00 call stbi__build_fast_ac
004e1 90 npad 1
$LN37@stbi__proc:
; 3554 : L -= n;
004e2 8b 85 64 01 00
00 mov eax, DWORD PTR n$12[rbp]
004e8 8b 4d 04 mov ecx, DWORD PTR L$[rbp]
004eb 2b c8 sub ecx, eax
004ed 8b c1 mov eax, ecx
004ef 89 45 04 mov DWORD PTR L$[rbp], eax
; 3555 : }
004f2 e9 a1 fd ff ff jmp $LN9@stbi__proc
$LN10@stbi__proc:
; 3556 : return L == 0;
004f7 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
004fb 75 0c jne SHORT $LN60@stbi__proc
004fd c7 85 d4 03 00
00 01 00 00 00 mov DWORD PTR tv236[rbp], 1
00507 eb 0a jmp SHORT $LN61@stbi__proc
$LN60@stbi__proc:
00509 c7 85 d4 03 00
00 00 00 00 00 mov DWORD PTR tv236[rbp], 0
$LN61@stbi__proc:
00513 8b 85 d4 03 00
00 mov eax, DWORD PTR tv236[rbp]
00519 e9 27 02 00 00 jmp $LN1@stbi__proc
$LN2@stbi__proc:
; 3557 : }
; 3558 :
; 3559 : // check for comment block or APP blocks
; 3560 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) {
0051e 81 bd 08 04 00
00 e0 00 00 00 cmp DWORD PTR m$[rbp], 224 ; 000000e0H
00528 7c 0c jl SHORT $LN40@stbi__proc
0052a 81 bd 08 04 00
00 ef 00 00 00 cmp DWORD PTR m$[rbp], 239 ; 000000efH
00534 7e 10 jle SHORT $LN39@stbi__proc
$LN40@stbi__proc:
00536 81 bd 08 04 00
00 fe 00 00 00 cmp DWORD PTR m$[rbp], 254 ; 000000feH
00540 0f 85 f3 01 00
00 jne $LN38@stbi__proc
$LN39@stbi__proc:
; 3561 : L = stbi__get16be(z->s);
00546 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
0054d 48 8b 08 mov rcx, QWORD PTR [rax]
00550 e8 00 00 00 00 call stbi__get16be
00555 89 45 04 mov DWORD PTR L$[rbp], eax
; 3562 : if (L < 2) {
00558 83 7d 04 02 cmp DWORD PTR L$[rbp], 2
0055c 7d 30 jge SHORT $LN41@stbi__proc
; 3563 : if (m == 0xFE)
0055e 81 bd 08 04 00
00 fe 00 00 00 cmp DWORD PTR m$[rbp], 254 ; 000000feH
00568 75 13 jne SHORT $LN42@stbi__proc
; 3564 : return stbi__err("bad COM len", "Corrupt JPEG");
0056a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@CICAFFCH@bad?5COM?5len@
00571 e8 00 00 00 00 call stbi__err
00576 e9 ca 01 00 00 jmp $LN1@stbi__proc
0057b eb 11 jmp SHORT $LN43@stbi__proc
$LN42@stbi__proc:
; 3565 : else
; 3566 : return stbi__err("bad APP len", "Corrupt JPEG");
0057d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@EENLKPDI@bad?5APP?5len@
00584 e8 00 00 00 00 call stbi__err
00589 e9 b7 01 00 00 jmp $LN1@stbi__proc
$LN43@stbi__proc:
$LN41@stbi__proc:
; 3567 : }
; 3568 : L -= 2;
0058e 8b 45 04 mov eax, DWORD PTR L$[rbp]
00591 83 e8 02 sub eax, 2
00594 89 45 04 mov DWORD PTR L$[rbp], eax
; 3569 :
; 3570 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment
00597 81 bd 08 04 00
00 e0 00 00 00 cmp DWORD PTR m$[rbp], 224 ; 000000e0H
005a1 0f 85 93 00 00
00 jne $LN44@stbi__proc
005a7 83 7d 04 05 cmp DWORD PTR L$[rbp], 5
005ab 0f 8c 89 00 00
00 jl $LN44@stbi__proc
; 3571 : static const unsigned char tag[5] = { 'J', 'F', 'I', 'F', '\0' };
; 3572 : int ok = 1;
005b1 c7 85 e4 01 00
00 01 00 00 00 mov DWORD PTR ok$16[rbp], 1
; 3573 : int i;
; 3574 : for (i = 0; i < 5; ++i)
005bb c7 85 04 02 00
00 00 00 00 00 mov DWORD PTR i$17[rbp], 0
005c5 eb 0e jmp SHORT $LN19@stbi__proc
$LN17@stbi__proc:
005c7 8b 85 04 02 00
00 mov eax, DWORD PTR i$17[rbp]
005cd ff c0 inc eax
005cf 89 85 04 02 00
00 mov DWORD PTR i$17[rbp], eax
$LN19@stbi__proc:
005d5 83 bd 04 02 00
00 05 cmp DWORD PTR i$17[rbp], 5
005dc 7d 34 jge SHORT $LN18@stbi__proc
; 3575 : if (stbi__get8(z->s) != tag[i])
005de 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
005e5 48 8b 08 mov rcx, QWORD PTR [rax]
005e8 e8 00 00 00 00 call stbi__get8
005ed 0f b6 c0 movzx eax, al
005f0 48 63 8d 04 02
00 00 movsxd rcx, DWORD PTR i$17[rbp]
005f7 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?tag@?O@??stbi__process_marker@@9@9
005fe 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00602 3b c1 cmp eax, ecx
00604 74 0a je SHORT $LN46@stbi__proc
; 3576 : ok = 0;
00606 c7 85 e4 01 00
00 00 00 00 00 mov DWORD PTR ok$16[rbp], 0
$LN46@stbi__proc:
00610 eb b5 jmp SHORT $LN17@stbi__proc
$LN18@stbi__proc:
; 3577 : L -= 5;
00612 8b 45 04 mov eax, DWORD PTR L$[rbp]
00615 83 e8 05 sub eax, 5
00618 89 45 04 mov DWORD PTR L$[rbp], eax
; 3578 : if (ok)
0061b 83 bd e4 01 00
00 00 cmp DWORD PTR ok$16[rbp], 0
00622 74 11 je SHORT $LN47@stbi__proc
; 3579 : z->jfif = 1;
00624 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
0062b c7 80 48 48 00
00 01 00 00 00 mov DWORD PTR [rax+18504], 1
$LN47@stbi__proc:
; 3580 : } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment
00635 e9 e5 00 00 00 jmp $LN45@stbi__proc
$LN44@stbi__proc:
0063a 81 bd 08 04 00
00 ee 00 00 00 cmp DWORD PTR m$[rbp], 238 ; 000000eeH
00644 0f 85 d5 00 00
00 jne $LN48@stbi__proc
0064a 83 7d 04 0c cmp DWORD PTR L$[rbp], 12
0064e 0f 8c cb 00 00
00 jl $LN48@stbi__proc
; 3581 : static const unsigned char tag[6] = { 'A', 'd', 'o', 'b', 'e', '\0' };
; 3582 : int ok = 1;
00654 c7 85 24 02 00
00 01 00 00 00 mov DWORD PTR ok$18[rbp], 1
; 3583 : int i;
; 3584 : for (i = 0; i < 6; ++i)
0065e c7 85 44 02 00
00 00 00 00 00 mov DWORD PTR i$19[rbp], 0
00668 eb 0e jmp SHORT $LN22@stbi__proc
$LN20@stbi__proc:
0066a 8b 85 44 02 00
00 mov eax, DWORD PTR i$19[rbp]
00670 ff c0 inc eax
00672 89 85 44 02 00
00 mov DWORD PTR i$19[rbp], eax
$LN22@stbi__proc:
00678 83 bd 44 02 00
00 06 cmp DWORD PTR i$19[rbp], 6
0067f 7d 34 jge SHORT $LN21@stbi__proc
; 3585 : if (stbi__get8(z->s) != tag[i])
00681 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
00688 48 8b 08 mov rcx, QWORD PTR [rax]
0068b e8 00 00 00 00 call stbi__get8
00690 0f b6 c0 movzx eax, al
00693 48 63 8d 44 02
00 00 movsxd rcx, DWORD PTR i$19[rbp]
0069a 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:?tag@?BA@??stbi__process_marker@@9@9
006a1 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
006a5 3b c1 cmp eax, ecx
006a7 74 0a je SHORT $LN49@stbi__proc
; 3586 : ok = 0;
006a9 c7 85 24 02 00
00 00 00 00 00 mov DWORD PTR ok$18[rbp], 0
$LN49@stbi__proc:
006b3 eb b5 jmp SHORT $LN20@stbi__proc
$LN21@stbi__proc:
; 3587 : L -= 6;
006b5 8b 45 04 mov eax, DWORD PTR L$[rbp]
006b8 83 e8 06 sub eax, 6
006bb 89 45 04 mov DWORD PTR L$[rbp], eax
; 3588 : if (ok) {
006be 83 bd 24 02 00
00 00 cmp DWORD PTR ok$18[rbp], 0
006c5 74 58 je SHORT $LN50@stbi__proc
; 3589 : stbi__get8(z->s); // version
006c7 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
006ce 48 8b 08 mov rcx, QWORD PTR [rax]
006d1 e8 00 00 00 00 call stbi__get8
006d6 90 npad 1
; 3590 : stbi__get16be(z->s); // flags0
006d7 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
006de 48 8b 08 mov rcx, QWORD PTR [rax]
006e1 e8 00 00 00 00 call stbi__get16be
006e6 90 npad 1
; 3591 : stbi__get16be(z->s); // flags1
006e7 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
006ee 48 8b 08 mov rcx, QWORD PTR [rax]
006f1 e8 00 00 00 00 call stbi__get16be
006f6 90 npad 1
; 3592 : z->app14_color_transform = stbi__get8(z->s); // color transform
006f7 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
006fe 48 8b 08 mov rcx, QWORD PTR [rax]
00701 e8 00 00 00 00 call stbi__get8
00706 0f b6 c0 movzx eax, al
00709 48 8b 8d 00 04
00 00 mov rcx, QWORD PTR z$[rbp]
00710 89 81 4c 48 00
00 mov DWORD PTR [rcx+18508], eax
; 3593 : L -= 6;
00716 8b 45 04 mov eax, DWORD PTR L$[rbp]
00719 83 e8 06 sub eax, 6
0071c 89 45 04 mov DWORD PTR L$[rbp], eax
$LN50@stbi__proc:
$LN48@stbi__proc:
$LN45@stbi__proc:
; 3594 : }
; 3595 : }
; 3596 :
; 3597 : stbi__skip(z->s, L);
0071f 8b 55 04 mov edx, DWORD PTR L$[rbp]
00722 48 8b 85 00 04
00 00 mov rax, QWORD PTR z$[rbp]
00729 48 8b 08 mov rcx, QWORD PTR [rax]
0072c e8 00 00 00 00 call stbi__skip
00731 90 npad 1
; 3598 : return 1;
00732 b8 01 00 00 00 mov eax, 1
00737 eb 0c jmp SHORT $LN1@stbi__proc
$LN38@stbi__proc:
; 3599 : }
; 3600 :
; 3601 : return stbi__err("unknown marker", "Corrupt JPEG");
00739 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0P@NNGPHMMK@unknown?5marker@
00740 e8 00 00 00 00 call stbi__err
$LN1@stbi__proc:
; 3602 : }
00745 48 8b f8 mov rdi, rax
00748 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0074c 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__process_marker$rtcFrameData
00753 e8 00 00 00 00 call _RTC_CheckStackVars
00758 48 8b c7 mov rax, rdi
0075b 48 8b 8d d8 03
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00762 48 33 cd xor rcx, rbp
00765 e8 00 00 00 00 call __security_check_cookie
0076a 48 8d a5 e8 03
00 00 lea rsp, QWORD PTR [rbp+1000]
00771 5f pop rdi
00772 5d pop rbp
00773 c3 ret 0
stbi__process_marker ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_finish
_TEXT SEGMENT
i$1 = 4
j$2 = 36
n$3 = 68
w$4 = 100
h$5 = 132
data$6 = 168
z$ = 416
stbi__jpeg_finish PROC ; COMDAT
; 3468 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 3469 : if (z->progressive) {
00020 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
00027 83 b8 30 48 00
00 00 cmp DWORD PTR [rax+18480], 0
0002e 0f 84 b1 01 00
00 je $LN11@stbi__jpeg
; 3470 : // dequantize and idct the data
; 3471 : int i, j, n;
; 3472 : for (n = 0; n < z->s->img_n; ++n) {
00034 c7 45 44 00 00
00 00 mov DWORD PTR n$3[rbp], 0
0003b eb 08 jmp SHORT $LN4@stbi__jpeg
$LN2@stbi__jpeg:
0003d 8b 45 44 mov eax, DWORD PTR n$3[rbp]
00040 ff c0 inc eax
00042 89 45 44 mov DWORD PTR n$3[rbp], eax
$LN4@stbi__jpeg:
00045 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
0004c 48 8b 00 mov rax, QWORD PTR [rax]
0004f 8b 40 08 mov eax, DWORD PTR [rax+8]
00052 39 45 44 cmp DWORD PTR n$3[rbp], eax
00055 0f 8d 8a 01 00
00 jge $LN3@stbi__jpeg
; 3473 : int w = (z->img_comp[n].x + 7) >> 3;
0005b 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
0005f 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00063 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0006a 8b 84 01 bc 46
00 00 mov eax, DWORD PTR [rcx+rax+18108]
00071 83 c0 07 add eax, 7
00074 c1 f8 03 sar eax, 3
00077 89 45 64 mov DWORD PTR w$4[rbp], eax
; 3474 : int h = (z->img_comp[n].y + 7) >> 3;
0007a 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
0007e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00082 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00089 8b 84 01 c0 46
00 00 mov eax, DWORD PTR [rcx+rax+18112]
00090 83 c0 07 add eax, 7
00093 c1 f8 03 sar eax, 3
00096 89 85 84 00 00
00 mov DWORD PTR h$5[rbp], eax
; 3475 : for (j = 0; j < h; ++j) {
0009c c7 45 24 00 00
00 00 mov DWORD PTR j$2[rbp], 0
000a3 eb 08 jmp SHORT $LN7@stbi__jpeg
$LN5@stbi__jpeg:
000a5 8b 45 24 mov eax, DWORD PTR j$2[rbp]
000a8 ff c0 inc eax
000aa 89 45 24 mov DWORD PTR j$2[rbp], eax
$LN7@stbi__jpeg:
000ad 8b 85 84 00 00
00 mov eax, DWORD PTR h$5[rbp]
000b3 39 45 24 cmp DWORD PTR j$2[rbp], eax
000b6 0f 8d 24 01 00
00 jge $LN6@stbi__jpeg
; 3476 : for (i = 0; i < w; ++i) {
000bc c7 45 04 00 00
00 00 mov DWORD PTR i$1[rbp], 0
000c3 eb 08 jmp SHORT $LN10@stbi__jpeg
$LN8@stbi__jpeg:
000c5 8b 45 04 mov eax, DWORD PTR i$1[rbp]
000c8 ff c0 inc eax
000ca 89 45 04 mov DWORD PTR i$1[rbp], eax
$LN10@stbi__jpeg:
000cd 8b 45 64 mov eax, DWORD PTR w$4[rbp]
000d0 39 45 04 cmp DWORD PTR i$1[rbp], eax
000d3 0f 8d 02 01 00
00 jge $LN9@stbi__jpeg
; 3477 : short *data = z->img_comp[n].coeff +
000d9 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
000dd 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000e1 48 63 4d 44 movsxd rcx, DWORD PTR n$3[rbp]
000e5 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
000e9 48 8b 95 a0 01
00 00 mov rdx, QWORD PTR z$[rbp]
000f0 44 8b 45 24 mov r8d, DWORD PTR j$2[rbp]
000f4 44 0f af 84 0a
f8 46 00 00 imul r8d, DWORD PTR [rdx+rcx+18168]
000fd 41 8b c8 mov ecx, r8d
00100 8b 55 04 mov edx, DWORD PTR i$1[rbp]
00103 03 d1 add edx, ecx
00105 8b ca mov ecx, edx
00107 6b c9 40 imul ecx, ecx, 64 ; 00000040H
0010a 48 63 c9 movsxd rcx, ecx
0010d 48 8b 95 a0 01
00 00 mov rdx, QWORD PTR z$[rbp]
00114 48 8b 84 02 f0
46 00 00 mov rax, QWORD PTR [rdx+rax+18160]
0011c 48 8d 04 48 lea rax, QWORD PTR [rax+rcx*2]
00120 48 89 85 a8 00
00 00 mov QWORD PTR data$6[rbp], rax
; 3478 : 64 * (i + j * z->img_comp[n].coeff_w);
; 3479 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]);
00127 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
0012b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0012f 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
00136 48 63 84 01 ac
46 00 00 movsxd rax, DWORD PTR [rcx+rax+18092]
0013e 48 69 c0 80 00
00 00 imul rax, rax, 128 ; 00000080H
00145 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR z$[rbp]
0014c 48 8d 84 01 88
34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
00154 48 8b d0 mov rdx, rax
00157 48 8b 8d a8 00
00 00 mov rcx, QWORD PTR data$6[rbp]
0015e e8 00 00 00 00 call stbi__jpeg_dequantize
00163 90 npad 1
; 3480 : z->idct_block_kernel(z->img_comp[n].data +
00164 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
00168 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0016c 48 63 4d 44 movsxd rcx, DWORD PTR n$3[rbp]
00170 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00174 48 63 55 44 movsxd rdx, DWORD PTR n$3[rbp]
00178 48 6b d2 60 imul rdx, rdx, 96 ; 00000060H
0017c 4c 8b 85 a0 01
00 00 mov r8, QWORD PTR z$[rbp]
00183 41 8b 94 10 c4
46 00 00 mov edx, DWORD PTR [r8+rdx+18116]
0018b 0f af 55 24 imul edx, DWORD PTR j$2[rbp]
0018f c1 e2 03 shl edx, 3
00192 48 63 d2 movsxd rdx, edx
00195 4c 8b 85 a0 01
00 00 mov r8, QWORD PTR z$[rbp]
0019c 49 8b 8c 08 d0
46 00 00 mov rcx, QWORD PTR [r8+rcx+18128]
001a4 48 03 ca add rcx, rdx
001a7 8b 55 04 mov edx, DWORD PTR i$1[rbp]
001aa c1 e2 03 shl edx, 3
001ad 48 63 d2 movsxd rdx, edx
001b0 48 03 ca add rcx, rdx
001b3 4c 8b 85 a8 00
00 00 mov r8, QWORD PTR data$6[rbp]
001ba 48 8b 95 a0 01
00 00 mov rdx, QWORD PTR z$[rbp]
001c1 8b 94 02 c4 46
00 00 mov edx, DWORD PTR [rdx+rax+18116]
001c8 48 8b 85 a0 01
00 00 mov rax, QWORD PTR z$[rbp]
001cf ff 90 70 48 00
00 call QWORD PTR [rax+18544]
001d5 90 npad 1
; 3481 : z->img_comp[n].w2 * j * 8 +
; 3482 : i * 8,
; 3483 : z->img_comp[n].w2, data);
; 3484 : }
001d6 e9 ea fe ff ff jmp $LN8@stbi__jpeg
$LN9@stbi__jpeg:
; 3485 : }
001db e9 c5 fe ff ff jmp $LN5@stbi__jpeg
$LN6@stbi__jpeg:
; 3486 : }
001e0 e9 58 fe ff ff jmp $LN2@stbi__jpeg
$LN3@stbi__jpeg:
$LN11@stbi__jpeg:
; 3487 : }
; 3488 : }
001e5 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
001ec 5f pop rdi
001ed 5d pop rbp
001ee c3 ret 0
stbi__jpeg_finish ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_dequantize
_TEXT SEGMENT
i$ = 4
data$ = 256
dequant$ = 264
stbi__jpeg_dequantize PROC ; COMDAT
; 3461 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 3462 : int i;
; 3463 : for (i = 0; i < 64; ++i)
00025 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
0002c eb 08 jmp SHORT $LN4@stbi__jpeg
$LN2@stbi__jpeg:
0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
00031 ff c0 inc eax
00033 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__jpeg:
00036 83 7d 04 40 cmp DWORD PTR i$[rbp], 64 ; 00000040H
0003a 7d 32 jge SHORT $LN3@stbi__jpeg
; 3464 : data[i] *= dequant[i];
0003c 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00040 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
00044 48 8b 95 08 01
00 00 mov rdx, QWORD PTR dequant$[rbp]
0004b 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2]
0004f 48 8b 95 00 01
00 00 mov rdx, QWORD PTR data$[rbp]
00056 0f bf 04 42 movsx eax, WORD PTR [rdx+rax*2]
0005a 0f af c1 imul eax, ecx
0005d 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
00061 48 8b 95 00 01
00 00 mov rdx, QWORD PTR data$[rbp]
00068 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
0006c eb c0 jmp SHORT $LN2@stbi__jpeg
$LN3@stbi__jpeg:
; 3465 : }
0006e 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00075 5f pop rdi
00076 5d pop rbp
00077 c3 ret 0
stbi__jpeg_dequantize ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__parse_entropy_coded_data
_TEXT SEGMENT
i$5 = 4
j$6 = 36
data$7 = 80
n$8 = 228
w$9 = 260
h$10 = 292
ha$11 = 324
i$12 = 356
j$13 = 388
k$14 = 420
x$15 = 452
y$16 = 484
data$17 = 528
n$18 = 676
x2$19 = 708
y2$20 = 740
ha$21 = 772
i$22 = 804
j$23 = 836
n$24 = 868
w$25 = 900
h$26 = 932
data$27 = 968
ha$28 = 996
i$29 = 1028
j$30 = 1060
k$31 = 1092
x$32 = 1124
y$33 = 1156
n$34 = 1188
x2$35 = 1220
y2$36 = 1252
data$37 = 1288
tv518 = 1876
tv190 = 1876
tv311 = 1876
tv400 = 1876
__$ArrayPad$ = 1880
z$ = 1920
stbi__parse_entropy_coded_data PROC ; COMDAT
; 3291 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec a8 07
00 00 sub rsp, 1960 ; 000007a8H
0000e 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
00013 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
00018 b9 4a 01 00 00 mov ecx, 330 ; 0000014aH
0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00022 f3 ab rep stosd
00024 48 8b 8c 24 c8
07 00 00 mov rcx, QWORD PTR [rsp+1992]
0002c 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00033 48 33 c5 xor rax, rbp
00036 48 89 85 58 07
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0003d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00049 90 npad 1
; 3292 : stbi__jpeg_reset(z);
0004a 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00051 e8 00 00 00 00 call stbi__jpeg_reset
00056 90 npad 1
; 3293 : if (!z->progressive) {
00057 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0005e 83 b8 30 48 00
00 00 cmp DWORD PTR [rax+18480], 0
00065 0f 85 72 06 00
00 jne $LN44@stbi__pars
; 3294 : if (z->scan_n == 1) {
0006b 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00072 83 b8 54 48 00
00 01 cmp DWORD PTR [rax+18516], 1
00079 0f 85 af 02 00
00 jne $LN46@stbi__pars
; 3295 : int i, j;
; 3296 : STBI_SIMD_ALIGN(short, data[64]);
; 3297 : int n = z->order[0];
0007f b8 04 00 00 00 mov eax, 4
00084 48 6b c0 00 imul rax, rax, 0
00088 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0008f 8b 84 01 58 48
00 00 mov eax, DWORD PTR [rcx+rax+18520]
00096 89 85 e4 00 00
00 mov DWORD PTR n$8[rbp], eax
; 3298 : // non-interleaved data, we just need to process one block at a time,
; 3299 : // in trivial scanline order
; 3300 : // number of blocks to do just depends on how many actual "pixels" this
; 3301 : // component has, independent of interleaved MCU blocking and such
; 3302 : int w = (z->img_comp[n].x + 7) >> 3;
0009c 48 63 85 e4 00
00 00 movsxd rax, DWORD PTR n$8[rbp]
000a3 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000a7 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
000ae 8b 84 01 bc 46
00 00 mov eax, DWORD PTR [rcx+rax+18108]
000b5 83 c0 07 add eax, 7
000b8 c1 f8 03 sar eax, 3
000bb 89 85 04 01 00
00 mov DWORD PTR w$9[rbp], eax
; 3303 : int h = (z->img_comp[n].y + 7) >> 3;
000c1 48 63 85 e4 00
00 00 movsxd rax, DWORD PTR n$8[rbp]
000c8 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000cc 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
000d3 8b 84 01 c0 46
00 00 mov eax, DWORD PTR [rcx+rax+18112]
000da 83 c0 07 add eax, 7
000dd c1 f8 03 sar eax, 3
000e0 89 85 24 01 00
00 mov DWORD PTR h$10[rbp], eax
; 3304 : for (j = 0; j < h; ++j) {
000e6 c7 45 24 00 00
00 00 mov DWORD PTR j$6[rbp], 0
000ed eb 08 jmp SHORT $LN4@stbi__pars
$LN2@stbi__pars:
000ef 8b 45 24 mov eax, DWORD PTR j$6[rbp]
000f2 ff c0 inc eax
000f4 89 45 24 mov DWORD PTR j$6[rbp], eax
$LN4@stbi__pars:
000f7 8b 85 24 01 00
00 mov eax, DWORD PTR h$10[rbp]
000fd 39 45 24 cmp DWORD PTR j$6[rbp], eax
00100 0f 8d 19 02 00
00 jge $LN3@stbi__pars
; 3305 : for (i = 0; i < w; ++i) {
00106 c7 45 04 00 00
00 00 mov DWORD PTR i$5[rbp], 0
0010d eb 08 jmp SHORT $LN7@stbi__pars
$LN5@stbi__pars:
0010f 8b 45 04 mov eax, DWORD PTR i$5[rbp]
00112 ff c0 inc eax
00114 89 45 04 mov DWORD PTR i$5[rbp], eax
$LN7@stbi__pars:
00117 8b 85 04 01 00
00 mov eax, DWORD PTR w$9[rbp]
0011d 39 45 04 cmp DWORD PTR i$5[rbp], eax
00120 0f 8d f4 01 00
00 jge $LN6@stbi__pars
; 3306 : int ha = z->img_comp[n].ha;
00126 48 63 85 e4 00
00 00 movsxd rax, DWORD PTR n$8[rbp]
0012d 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00131 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00138 8b 84 01 b4 46
00 00 mov eax, DWORD PTR [rcx+rax+18100]
0013f 89 85 44 01 00
00 mov DWORD PTR ha$11[rbp], eax
; 3307 : if (!stbi__jpeg_decode_block(
00145 48 63 85 e4 00
00 00 movsxd rax, DWORD PTR n$8[rbp]
0014c 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00150 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00157 48 63 84 01 ac
46 00 00 movsxd rax, DWORD PTR [rcx+rax+18092]
0015f 48 69 c0 80 00
00 00 imul rax, rax, 128 ; 00000080H
00166 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0016d 48 8d 84 01 88
34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
00175 48 63 8d 44 01
00 00 movsxd rcx, DWORD PTR ha$11[rbp]
0017c 48 69 c9 00 04
00 00 imul rcx, rcx, 1024 ; 00000400H
00183 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
0018a 48 8d 8c 0a 88
36 00 00 lea rcx, QWORD PTR [rdx+rcx+13960]
00192 48 63 95 44 01
00 00 movsxd rdx, DWORD PTR ha$11[rbp]
00199 48 69 d2 90 06
00 00 imul rdx, rdx, 1680 ; 00000690H
001a0 4c 8b 85 80 07
00 00 mov r8, QWORD PTR z$[rbp]
001a7 49 8d 94 10 48
1a 00 00 lea rdx, QWORD PTR [r8+rdx+6728]
001af 4c 63 85 e4 00
00 00 movsxd r8, DWORD PTR n$8[rbp]
001b6 4d 6b c0 60 imul r8, r8, 96 ; 00000060H
001ba 4c 8b 8d 80 07
00 00 mov r9, QWORD PTR z$[rbp]
001c1 4f 63 84 01 b0
46 00 00 movsxd r8, DWORD PTR [r9+r8+18096]
001c9 4d 69 c0 90 06
00 00 imul r8, r8, 1680 ; 00000690H
001d0 4c 8b 8d 80 07
00 00 mov r9, QWORD PTR z$[rbp]
001d7 4f 8d 44 01 08 lea r8, QWORD PTR [r9+r8+8]
001dc 48 89 44 24 30 mov QWORD PTR [rsp+48], rax
001e1 8b 85 e4 00 00
00 mov eax, DWORD PTR n$8[rbp]
001e7 89 44 24 28 mov DWORD PTR [rsp+40], eax
001eb 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx
001f0 4c 8b ca mov r9, rdx
001f3 48 8d 55 50 lea rdx, QWORD PTR data$7[rbp]
001f7 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
001fe e8 00 00 00 00 call stbi__jpeg_decode_block
00203 85 c0 test eax, eax
00205 75 07 jne SHORT $LN48@stbi__pars
; 3308 : z, data, z->huff_dc + z->img_comp[n].hd,
; 3309 : z->huff_ac + ha, z->fast_ac[ha], n,
; 3310 : z->dequant[z->img_comp[n].tq]))
; 3311 : return 0;
00207 33 c0 xor eax, eax
00209 e9 6f 0a 00 00 jmp $LN1@stbi__pars
$LN48@stbi__pars:
; 3312 : z->idct_block_kernel(z->img_comp[n].data +
0020e 48 63 85 e4 00
00 00 movsxd rax, DWORD PTR n$8[rbp]
00215 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00219 48 63 8d e4 00
00 00 movsxd rcx, DWORD PTR n$8[rbp]
00220 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00224 48 63 95 e4 00
00 00 movsxd rdx, DWORD PTR n$8[rbp]
0022b 48 6b d2 60 imul rdx, rdx, 96 ; 00000060H
0022f 4c 8b 85 80 07
00 00 mov r8, QWORD PTR z$[rbp]
00236 41 8b 94 10 c4
46 00 00 mov edx, DWORD PTR [r8+rdx+18116]
0023e 0f af 55 24 imul edx, DWORD PTR j$6[rbp]
00242 c1 e2 03 shl edx, 3
00245 48 63 d2 movsxd rdx, edx
00248 4c 8b 85 80 07
00 00 mov r8, QWORD PTR z$[rbp]
0024f 49 8b 8c 08 d0
46 00 00 mov rcx, QWORD PTR [r8+rcx+18128]
00257 48 03 ca add rcx, rdx
0025a 8b 55 04 mov edx, DWORD PTR i$5[rbp]
0025d c1 e2 03 shl edx, 3
00260 48 63 d2 movsxd rdx, edx
00263 48 03 ca add rcx, rdx
00266 4c 8d 45 50 lea r8, QWORD PTR data$7[rbp]
0026a 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
00271 8b 94 02 c4 46
00 00 mov edx, DWORD PTR [rdx+rax+18116]
00278 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0027f ff 90 70 48 00
00 call QWORD PTR [rax+18544]
00285 90 npad 1
; 3313 : z->img_comp[n].w2 * j * 8 +
; 3314 : i * 8,
; 3315 : z->img_comp[n].w2, data);
; 3316 : // every data block is an MCU, so countdown the restart interval
; 3317 : if (--z->todo <= 0) {
00286 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0028d 8b 80 6c 48 00
00 mov eax, DWORD PTR [rax+18540]
00293 ff c8 dec eax
00295 89 85 54 07 00
00 mov DWORD PTR tv190[rbp], eax
0029b 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
002a2 8b 8d 54 07 00
00 mov ecx, DWORD PTR tv190[rbp]
002a8 89 88 6c 48 00
00 mov DWORD PTR [rax+18540], ecx
002ae 83 bd 54 07 00
00 00 cmp DWORD PTR tv190[rbp], 0
002b5 7f 5e jg SHORT $LN49@stbi__pars
; 3318 : if (z->code_bits < 24)
002b7 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
002be 83 b8 24 48 00
00 18 cmp DWORD PTR [rax+18468], 24
002c5 7d 0d jge SHORT $LN50@stbi__pars
; 3319 : stbi__grow_buffer_unsafe(z);
002c7 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
002ce e8 00 00 00 00 call stbi__grow_buffer_unsafe
002d3 90 npad 1
$LN50@stbi__pars:
; 3320 : // if it's NOT a restart, then just bail, so we get corrupt data
; 3321 : // rather than no data
; 3322 : if (!STBI__RESTART(z->marker))
002d4 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
002db 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
002e2 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
002e7 7c 15 jl SHORT $LN52@stbi__pars
002e9 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
002f0 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
002f7 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
002fc 7e 0a jle SHORT $LN51@stbi__pars
$LN52@stbi__pars:
; 3323 : return 1;
002fe b8 01 00 00 00 mov eax, 1
00303 e9 75 09 00 00 jmp $LN1@stbi__pars
$LN51@stbi__pars:
; 3324 : stbi__jpeg_reset(z);
00308 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0030f e8 00 00 00 00 call stbi__jpeg_reset
00314 90 npad 1
$LN49@stbi__pars:
; 3325 : }
; 3326 : }
00315 e9 f5 fd ff ff jmp $LN5@stbi__pars
$LN6@stbi__pars:
; 3327 : }
0031a e9 d0 fd ff ff jmp $LN2@stbi__pars
$LN3@stbi__pars:
; 3328 : return 1;
0031f b8 01 00 00 00 mov eax, 1
00324 e9 54 09 00 00 jmp $LN1@stbi__pars
; 3329 : } else { // interleaved
00329 e9 aa 03 00 00 jmp $LN47@stbi__pars
$LN46@stbi__pars:
; 3330 : int i, j, k, x, y;
; 3331 : STBI_SIMD_ALIGN(short, data[64]);
; 3332 : for (j = 0; j < z->img_mcu_y; ++j) {
0032e c7 85 84 01 00
00 00 00 00 00 mov DWORD PTR j$13[rbp], 0
00338 eb 0e jmp SHORT $LN10@stbi__pars
$LN8@stbi__pars:
0033a 8b 85 84 01 00
00 mov eax, DWORD PTR j$13[rbp]
00340 ff c0 inc eax
00342 89 85 84 01 00
00 mov DWORD PTR j$13[rbp], eax
$LN10@stbi__pars:
00348 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0034f 8b 80 94 46 00
00 mov eax, DWORD PTR [rax+18068]
00355 39 85 84 01 00
00 cmp DWORD PTR j$13[rbp], eax
0035b 0f 8d 6d 03 00
00 jge $LN9@stbi__pars
; 3333 : for (i = 0; i < z->img_mcu_x; ++i) {
00361 c7 85 64 01 00
00 00 00 00 00 mov DWORD PTR i$12[rbp], 0
0036b eb 0e jmp SHORT $LN13@stbi__pars
$LN11@stbi__pars:
0036d 8b 85 64 01 00
00 mov eax, DWORD PTR i$12[rbp]
00373 ff c0 inc eax
00375 89 85 64 01 00
00 mov DWORD PTR i$12[rbp], eax
$LN13@stbi__pars:
0037b 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00382 8b 80 90 46 00
00 mov eax, DWORD PTR [rax+18064]
00388 39 85 64 01 00
00 cmp DWORD PTR i$12[rbp], eax
0038e 0f 8d 35 03 00
00 jge $LN12@stbi__pars
; 3334 : // scan an interleaved mcu... process scan_n components in order
; 3335 : for (k = 0; k < z->scan_n; ++k) {
00394 c7 85 a4 01 00
00 00 00 00 00 mov DWORD PTR k$14[rbp], 0
0039e eb 0e jmp SHORT $LN16@stbi__pars
$LN14@stbi__pars:
003a0 8b 85 a4 01 00
00 mov eax, DWORD PTR k$14[rbp]
003a6 ff c0 inc eax
003a8 89 85 a4 01 00
00 mov DWORD PTR k$14[rbp], eax
$LN16@stbi__pars:
003ae 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
003b5 8b 80 54 48 00
00 mov eax, DWORD PTR [rax+18516]
003bb 39 85 a4 01 00
00 cmp DWORD PTR k$14[rbp], eax
003c1 0f 8d 6e 02 00
00 jge $LN15@stbi__pars
; 3336 : int n = z->order[k];
003c7 48 63 85 a4 01
00 00 movsxd rax, DWORD PTR k$14[rbp]
003ce 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
003d5 8b 84 81 58 48
00 00 mov eax, DWORD PTR [rcx+rax*4+18520]
003dc 89 85 a4 02 00
00 mov DWORD PTR n$18[rbp], eax
; 3337 : // scan out an mcu's worth of this component; that's just determined
; 3338 : // by the basic H and V specified for the component
; 3339 : for (y = 0; y < z->img_comp[n].v; ++y) {
003e2 c7 85 e4 01 00
00 00 00 00 00 mov DWORD PTR y$16[rbp], 0
003ec eb 0e jmp SHORT $LN19@stbi__pars
$LN17@stbi__pars:
003ee 8b 85 e4 01 00
00 mov eax, DWORD PTR y$16[rbp]
003f4 ff c0 inc eax
003f6 89 85 e4 01 00
00 mov DWORD PTR y$16[rbp], eax
$LN19@stbi__pars:
003fc 48 63 85 a4 02
00 00 movsxd rax, DWORD PTR n$18[rbp]
00403 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00407 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0040e 8b 84 01 a8 46
00 00 mov eax, DWORD PTR [rcx+rax+18088]
00415 39 85 e4 01 00
00 cmp DWORD PTR y$16[rbp], eax
0041b 0f 8d 0f 02 00
00 jge $LN18@stbi__pars
; 3340 : for (x = 0; x < z->img_comp[n].h; ++x) {
00421 c7 85 c4 01 00
00 00 00 00 00 mov DWORD PTR x$15[rbp], 0
0042b eb 0e jmp SHORT $LN22@stbi__pars
$LN20@stbi__pars:
0042d 8b 85 c4 01 00
00 mov eax, DWORD PTR x$15[rbp]
00433 ff c0 inc eax
00435 89 85 c4 01 00
00 mov DWORD PTR x$15[rbp], eax
$LN22@stbi__pars:
0043b 48 63 85 a4 02
00 00 movsxd rax, DWORD PTR n$18[rbp]
00442 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00446 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0044d 8b 84 01 a4 46
00 00 mov eax, DWORD PTR [rcx+rax+18084]
00454 39 85 c4 01 00
00 cmp DWORD PTR x$15[rbp], eax
0045a 0f 8d cb 01 00
00 jge $LN21@stbi__pars
; 3341 : int x2 =
00460 48 63 85 a4 02
00 00 movsxd rax, DWORD PTR n$18[rbp]
00467 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0046b 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00472 8b 95 64 01 00
00 mov edx, DWORD PTR i$12[rbp]
00478 0f af 94 01 a4
46 00 00 imul edx, DWORD PTR [rcx+rax+18084]
00480 8b c2 mov eax, edx
00482 03 85 c4 01 00
00 add eax, DWORD PTR x$15[rbp]
00488 c1 e0 03 shl eax, 3
0048b 89 85 c4 02 00
00 mov DWORD PTR x2$19[rbp], eax
; 3342 : (i * z->img_comp[n].h + x) *
; 3343 : 8;
; 3344 : int y2 =
00491 48 63 85 a4 02
00 00 movsxd rax, DWORD PTR n$18[rbp]
00498 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0049c 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
004a3 8b 95 84 01 00
00 mov edx, DWORD PTR j$13[rbp]
004a9 0f af 94 01 a8
46 00 00 imul edx, DWORD PTR [rcx+rax+18088]
004b1 8b c2 mov eax, edx
004b3 03 85 e4 01 00
00 add eax, DWORD PTR y$16[rbp]
004b9 c1 e0 03 shl eax, 3
004bc 89 85 e4 02 00
00 mov DWORD PTR y2$20[rbp], eax
; 3345 : (j * z->img_comp[n].v + y) *
; 3346 : 8;
; 3347 : int ha = z->img_comp[n].ha;
004c2 48 63 85 a4 02
00 00 movsxd rax, DWORD PTR n$18[rbp]
004c9 48 6b c0 60 imul rax, rax, 96 ; 00000060H
004cd 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
004d4 8b 84 01 b4 46
00 00 mov eax, DWORD PTR [rcx+rax+18100]
004db 89 85 04 03 00
00 mov DWORD PTR ha$21[rbp], eax
; 3348 : if (!stbi__jpeg_decode_block(
004e1 48 63 85 a4 02
00 00 movsxd rax, DWORD PTR n$18[rbp]
004e8 48 6b c0 60 imul rax, rax, 96 ; 00000060H
004ec 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
004f3 48 63 84 01 ac
46 00 00 movsxd rax, DWORD PTR [rcx+rax+18092]
004fb 48 69 c0 80 00
00 00 imul rax, rax, 128 ; 00000080H
00502 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00509 48 8d 84 01 88
34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
00511 48 63 8d 04 03
00 00 movsxd rcx, DWORD PTR ha$21[rbp]
00518 48 69 c9 00 04
00 00 imul rcx, rcx, 1024 ; 00000400H
0051f 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
00526 48 8d 8c 0a 88
36 00 00 lea rcx, QWORD PTR [rdx+rcx+13960]
0052e 48 63 95 04 03
00 00 movsxd rdx, DWORD PTR ha$21[rbp]
00535 48 69 d2 90 06
00 00 imul rdx, rdx, 1680 ; 00000690H
0053c 4c 8b 85 80 07
00 00 mov r8, QWORD PTR z$[rbp]
00543 49 8d 94 10 48
1a 00 00 lea rdx, QWORD PTR [r8+rdx+6728]
0054b 4c 63 85 a4 02
00 00 movsxd r8, DWORD PTR n$18[rbp]
00552 4d 6b c0 60 imul r8, r8, 96 ; 00000060H
00556 4c 8b 8d 80 07
00 00 mov r9, QWORD PTR z$[rbp]
0055d 4f 63 84 01 b0
46 00 00 movsxd r8, DWORD PTR [r9+r8+18096]
00565 4d 69 c0 90 06
00 00 imul r8, r8, 1680 ; 00000690H
0056c 4c 8b 8d 80 07
00 00 mov r9, QWORD PTR z$[rbp]
00573 4f 8d 44 01 08 lea r8, QWORD PTR [r9+r8+8]
00578 48 89 44 24 30 mov QWORD PTR [rsp+48], rax
0057d 8b 85 a4 02 00
00 mov eax, DWORD PTR n$18[rbp]
00583 89 44 24 28 mov DWORD PTR [rsp+40], eax
00587 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx
0058c 4c 8b ca mov r9, rdx
0058f 48 8d 95 10 02
00 00 lea rdx, QWORD PTR data$17[rbp]
00596 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0059d e8 00 00 00 00 call stbi__jpeg_decode_block
005a2 85 c0 test eax, eax
005a4 75 07 jne SHORT $LN53@stbi__pars
; 3349 : z, data,
; 3350 : z->huff_dc +
; 3351 : z->img_comp[n]
; 3352 : .hd,
; 3353 : z->huff_ac + ha,
; 3354 : z->fast_ac[ha], n,
; 3355 : z->dequant[z->img_comp[n]
; 3356 : .tq]))
; 3357 : return 0;
005a6 33 c0 xor eax, eax
005a8 e9 d0 06 00 00 jmp $LN1@stbi__pars
$LN53@stbi__pars:
; 3358 : z->idct_block_kernel(
005ad 48 63 85 a4 02
00 00 movsxd rax, DWORD PTR n$18[rbp]
005b4 48 6b c0 60 imul rax, rax, 96 ; 00000060H
005b8 48 63 8d a4 02
00 00 movsxd rcx, DWORD PTR n$18[rbp]
005bf 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
005c3 48 63 95 a4 02
00 00 movsxd rdx, DWORD PTR n$18[rbp]
005ca 48 6b d2 60 imul rdx, rdx, 96 ; 00000060H
005ce 4c 8b 85 80 07
00 00 mov r8, QWORD PTR z$[rbp]
005d5 41 8b 94 10 c4
46 00 00 mov edx, DWORD PTR [r8+rdx+18116]
005dd 0f af 95 e4 02
00 00 imul edx, DWORD PTR y2$20[rbp]
005e4 48 63 d2 movsxd rdx, edx
005e7 4c 8b 85 80 07
00 00 mov r8, QWORD PTR z$[rbp]
005ee 49 8b 8c 08 d0
46 00 00 mov rcx, QWORD PTR [r8+rcx+18128]
005f6 48 03 ca add rcx, rdx
005f9 48 63 95 c4 02
00 00 movsxd rdx, DWORD PTR x2$19[rbp]
00600 48 03 ca add rcx, rdx
00603 4c 8d 85 10 02
00 00 lea r8, QWORD PTR data$17[rbp]
0060a 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
00611 8b 94 02 c4 46
00 00 mov edx, DWORD PTR [rdx+rax+18116]
00618 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0061f ff 90 70 48 00
00 call QWORD PTR [rax+18544]
00625 90 npad 1
; 3359 : z->img_comp[n].data +
; 3360 : z->img_comp[n].w2 *
; 3361 : y2 +
; 3362 : x2,
; 3363 : z->img_comp[n].w2, data);
; 3364 : }
00626 e9 02 fe ff ff jmp $LN20@stbi__pars
$LN21@stbi__pars:
; 3365 : }
0062b e9 be fd ff ff jmp $LN17@stbi__pars
$LN18@stbi__pars:
; 3366 : }
00630 e9 6b fd ff ff jmp $LN14@stbi__pars
$LN15@stbi__pars:
; 3367 : // after all interleaved components, that's an interleaved MCU,
; 3368 : // so now count down the restart interval
; 3369 : if (--z->todo <= 0) {
00635 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0063c 8b 80 6c 48 00
00 mov eax, DWORD PTR [rax+18540]
00642 ff c8 dec eax
00644 89 85 54 07 00
00 mov DWORD PTR tv311[rbp], eax
0064a 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00651 8b 8d 54 07 00
00 mov ecx, DWORD PTR tv311[rbp]
00657 89 88 6c 48 00
00 mov DWORD PTR [rax+18540], ecx
0065d 83 bd 54 07 00
00 00 cmp DWORD PTR tv311[rbp], 0
00664 7f 5e jg SHORT $LN54@stbi__pars
; 3370 : if (z->code_bits < 24)
00666 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0066d 83 b8 24 48 00
00 18 cmp DWORD PTR [rax+18468], 24
00674 7d 0d jge SHORT $LN55@stbi__pars
; 3371 : stbi__grow_buffer_unsafe(z);
00676 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0067d e8 00 00 00 00 call stbi__grow_buffer_unsafe
00682 90 npad 1
$LN55@stbi__pars:
; 3372 : if (!STBI__RESTART(z->marker))
00683 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0068a 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
00691 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
00696 7c 15 jl SHORT $LN57@stbi__pars
00698 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0069f 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
006a6 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
006ab 7e 0a jle SHORT $LN56@stbi__pars
$LN57@stbi__pars:
; 3373 : return 1;
006ad b8 01 00 00 00 mov eax, 1
006b2 e9 c6 05 00 00 jmp $LN1@stbi__pars
$LN56@stbi__pars:
; 3374 : stbi__jpeg_reset(z);
006b7 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
006be e8 00 00 00 00 call stbi__jpeg_reset
006c3 90 npad 1
$LN54@stbi__pars:
; 3375 : }
; 3376 : }
006c4 e9 a4 fc ff ff jmp $LN11@stbi__pars
$LN12@stbi__pars:
; 3377 : }
006c9 e9 6c fc ff ff jmp $LN8@stbi__pars
$LN9@stbi__pars:
; 3378 : return 1;
006ce b8 01 00 00 00 mov eax, 1
006d3 e9 a5 05 00 00 jmp $LN1@stbi__pars
$LN47@stbi__pars:
; 3379 : }
; 3380 : } else {
006d8 e9 a0 05 00 00 jmp $LN45@stbi__pars
$LN44@stbi__pars:
; 3381 : if (z->scan_n == 1) {
006dd 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
006e4 83 b8 54 48 00
00 01 cmp DWORD PTR [rax+18516], 1
006eb 0f 85 a5 02 00
00 jne $LN58@stbi__pars
; 3382 : int i, j;
; 3383 : int n = z->order[0];
006f1 b8 04 00 00 00 mov eax, 4
006f6 48 6b c0 00 imul rax, rax, 0
006fa 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00701 8b 84 01 58 48
00 00 mov eax, DWORD PTR [rcx+rax+18520]
00708 89 85 64 03 00
00 mov DWORD PTR n$24[rbp], eax
; 3384 : // non-interleaved data, we just need to process one block at a time,
; 3385 : // in trivial scanline order
; 3386 : // number of blocks to do just depends on how many actual "pixels" this
; 3387 : // component has, independent of interleaved MCU blocking and such
; 3388 : int w = (z->img_comp[n].x + 7) >> 3;
0070e 48 63 85 64 03
00 00 movsxd rax, DWORD PTR n$24[rbp]
00715 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00719 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00720 8b 84 01 bc 46
00 00 mov eax, DWORD PTR [rcx+rax+18108]
00727 83 c0 07 add eax, 7
0072a c1 f8 03 sar eax, 3
0072d 89 85 84 03 00
00 mov DWORD PTR w$25[rbp], eax
; 3389 : int h = (z->img_comp[n].y + 7) >> 3;
00733 48 63 85 64 03
00 00 movsxd rax, DWORD PTR n$24[rbp]
0073a 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0073e 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00745 8b 84 01 c0 46
00 00 mov eax, DWORD PTR [rcx+rax+18112]
0074c 83 c0 07 add eax, 7
0074f c1 f8 03 sar eax, 3
00752 89 85 a4 03 00
00 mov DWORD PTR h$26[rbp], eax
; 3390 : for (j = 0; j < h; ++j) {
00758 c7 85 44 03 00
00 00 00 00 00 mov DWORD PTR j$23[rbp], 0
00762 eb 0e jmp SHORT $LN25@stbi__pars
$LN23@stbi__pars:
00764 8b 85 44 03 00
00 mov eax, DWORD PTR j$23[rbp]
0076a ff c0 inc eax
0076c 89 85 44 03 00
00 mov DWORD PTR j$23[rbp], eax
$LN25@stbi__pars:
00772 8b 85 a4 03 00
00 mov eax, DWORD PTR h$26[rbp]
00778 39 85 44 03 00
00 cmp DWORD PTR j$23[rbp], eax
0077e 0f 8d 03 02 00
00 jge $LN24@stbi__pars
; 3391 : for (i = 0; i < w; ++i) {
00784 c7 85 24 03 00
00 00 00 00 00 mov DWORD PTR i$22[rbp], 0
0078e eb 0e jmp SHORT $LN28@stbi__pars
$LN26@stbi__pars:
00790 8b 85 24 03 00
00 mov eax, DWORD PTR i$22[rbp]
00796 ff c0 inc eax
00798 89 85 24 03 00
00 mov DWORD PTR i$22[rbp], eax
$LN28@stbi__pars:
0079e 8b 85 84 03 00
00 mov eax, DWORD PTR w$25[rbp]
007a4 39 85 24 03 00
00 cmp DWORD PTR i$22[rbp], eax
007aa 0f 8d d2 01 00
00 jge $LN27@stbi__pars
; 3392 : short *data = z->img_comp[n].coeff +
007b0 48 63 85 64 03
00 00 movsxd rax, DWORD PTR n$24[rbp]
007b7 48 6b c0 60 imul rax, rax, 96 ; 00000060H
007bb 48 63 8d 64 03
00 00 movsxd rcx, DWORD PTR n$24[rbp]
007c2 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
007c6 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
007cd 44 8b 85 44 03
00 00 mov r8d, DWORD PTR j$23[rbp]
007d4 44 0f af 84 0a
f8 46 00 00 imul r8d, DWORD PTR [rdx+rcx+18168]
007dd 41 8b c8 mov ecx, r8d
007e0 8b 95 24 03 00
00 mov edx, DWORD PTR i$22[rbp]
007e6 03 d1 add edx, ecx
007e8 8b ca mov ecx, edx
007ea 6b c9 40 imul ecx, ecx, 64 ; 00000040H
007ed 48 63 c9 movsxd rcx, ecx
007f0 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
007f7 48 8b 84 02 f0
46 00 00 mov rax, QWORD PTR [rdx+rax+18160]
007ff 48 8d 04 48 lea rax, QWORD PTR [rax+rcx*2]
00803 48 89 85 c8 03
00 00 mov QWORD PTR data$27[rbp], rax
; 3393 : 64 * (i + j * z->img_comp[n].coeff_w);
; 3394 : if (z->spec_start == 0) {
0080a 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00811 83 b8 34 48 00
00 00 cmp DWORD PTR [rax+18484], 0
00818 75 57 jne SHORT $LN60@stbi__pars
; 3395 : if (!stbi__jpeg_decode_block_prog_dc(
0081a 48 63 85 64 03
00 00 movsxd rax, DWORD PTR n$24[rbp]
00821 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00825 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0082c 48 63 84 01 b0
46 00 00 movsxd rax, DWORD PTR [rcx+rax+18096]
00834 48 69 c0 90 06
00 00 imul rax, rax, 1680 ; 00000690H
0083b 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00842 48 8d 44 01 08 lea rax, QWORD PTR [rcx+rax+8]
00847 44 8b 8d 64 03
00 00 mov r9d, DWORD PTR n$24[rbp]
0084e 4c 8b c0 mov r8, rax
00851 48 8b 95 c8 03
00 00 mov rdx, QWORD PTR data$27[rbp]
00858 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
0085f e8 00 00 00 00 call stbi__jpeg_decode_block_prog_dc
00864 85 c0 test eax, eax
00866 75 07 jne SHORT $LN62@stbi__pars
; 3396 : z, data, &z->huff_dc[z->img_comp[n].hd],
; 3397 : n))
; 3398 : return 0;
00868 33 c0 xor eax, eax
0086a e9 0e 04 00 00 jmp $LN1@stbi__pars
$LN62@stbi__pars:
; 3399 : } else {
0086f eb 7d jmp SHORT $LN61@stbi__pars
$LN60@stbi__pars:
; 3400 : int ha = z->img_comp[n].ha;
00871 48 63 85 64 03
00 00 movsxd rax, DWORD PTR n$24[rbp]
00878 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0087c 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00883 8b 84 01 b4 46
00 00 mov eax, DWORD PTR [rcx+rax+18100]
0088a 89 85 e4 03 00
00 mov DWORD PTR ha$28[rbp], eax
; 3401 : if (!stbi__jpeg_decode_block_prog_ac(
00890 48 63 85 e4 03
00 00 movsxd rax, DWORD PTR ha$28[rbp]
00897 48 69 c0 00 04
00 00 imul rax, rax, 1024 ; 00000400H
0089e 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
008a5 48 8d 84 01 88
36 00 00 lea rax, QWORD PTR [rcx+rax+13960]
008ad 48 63 8d e4 03
00 00 movsxd rcx, DWORD PTR ha$28[rbp]
008b4 48 69 c9 90 06
00 00 imul rcx, rcx, 1680 ; 00000690H
008bb 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
008c2 48 8d 8c 0a 48
1a 00 00 lea rcx, QWORD PTR [rdx+rcx+6728]
008ca 4c 8b c8 mov r9, rax
008cd 4c 8b c1 mov r8, rcx
008d0 48 8b 95 c8 03
00 00 mov rdx, QWORD PTR data$27[rbp]
008d7 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
008de e8 00 00 00 00 call stbi__jpeg_decode_block_prog_ac
008e3 85 c0 test eax, eax
008e5 75 07 jne SHORT $LN63@stbi__pars
; 3402 : z, data, &z->huff_ac[ha],
; 3403 : z->fast_ac[ha]))
; 3404 : return 0;
008e7 33 c0 xor eax, eax
008e9 e9 8f 03 00 00 jmp $LN1@stbi__pars
$LN63@stbi__pars:
$LN61@stbi__pars:
; 3405 : }
; 3406 : // every data block is an MCU, so countdown the restart interval
; 3407 : if (--z->todo <= 0) {
008ee 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
008f5 8b 80 6c 48 00
00 mov eax, DWORD PTR [rax+18540]
008fb ff c8 dec eax
008fd 89 85 54 07 00
00 mov DWORD PTR tv400[rbp], eax
00903 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
0090a 8b 8d 54 07 00
00 mov ecx, DWORD PTR tv400[rbp]
00910 89 88 6c 48 00
00 mov DWORD PTR [rax+18540], ecx
00916 83 bd 54 07 00
00 00 cmp DWORD PTR tv400[rbp], 0
0091d 7f 5e jg SHORT $LN64@stbi__pars
; 3408 : if (z->code_bits < 24)
0091f 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00926 83 b8 24 48 00
00 18 cmp DWORD PTR [rax+18468], 24
0092d 7d 0d jge SHORT $LN65@stbi__pars
; 3409 : stbi__grow_buffer_unsafe(z);
0092f 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00936 e8 00 00 00 00 call stbi__grow_buffer_unsafe
0093b 90 npad 1
$LN65@stbi__pars:
; 3410 : if (!STBI__RESTART(z->marker))
0093c 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00943 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
0094a 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
0094f 7c 15 jl SHORT $LN67@stbi__pars
00951 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00958 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
0095f 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
00964 7e 0a jle SHORT $LN66@stbi__pars
$LN67@stbi__pars:
; 3411 : return 1;
00966 b8 01 00 00 00 mov eax, 1
0096b e9 0d 03 00 00 jmp $LN1@stbi__pars
$LN66@stbi__pars:
; 3412 : stbi__jpeg_reset(z);
00970 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00977 e8 00 00 00 00 call stbi__jpeg_reset
0097c 90 npad 1
$LN64@stbi__pars:
; 3413 : }
; 3414 : }
0097d e9 0e fe ff ff jmp $LN26@stbi__pars
$LN27@stbi__pars:
; 3415 : }
00982 e9 dd fd ff ff jmp $LN23@stbi__pars
$LN24@stbi__pars:
; 3416 : return 1;
00987 b8 01 00 00 00 mov eax, 1
0098c e9 ec 02 00 00 jmp $LN1@stbi__pars
; 3417 : } else { // interleaved
00991 e9 e7 02 00 00 jmp $LN59@stbi__pars
$LN58@stbi__pars:
; 3418 : int i, j, k, x, y;
; 3419 : for (j = 0; j < z->img_mcu_y; ++j) {
00996 c7 85 24 04 00
00 00 00 00 00 mov DWORD PTR j$30[rbp], 0
009a0 eb 0e jmp SHORT $LN31@stbi__pars
$LN29@stbi__pars:
009a2 8b 85 24 04 00
00 mov eax, DWORD PTR j$30[rbp]
009a8 ff c0 inc eax
009aa 89 85 24 04 00
00 mov DWORD PTR j$30[rbp], eax
$LN31@stbi__pars:
009b0 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
009b7 8b 80 94 46 00
00 mov eax, DWORD PTR [rax+18068]
009bd 39 85 24 04 00
00 cmp DWORD PTR j$30[rbp], eax
009c3 0f 8d af 02 00
00 jge $LN30@stbi__pars
; 3420 : for (i = 0; i < z->img_mcu_x; ++i) {
009c9 c7 85 04 04 00
00 00 00 00 00 mov DWORD PTR i$29[rbp], 0
009d3 eb 0e jmp SHORT $LN34@stbi__pars
$LN32@stbi__pars:
009d5 8b 85 04 04 00
00 mov eax, DWORD PTR i$29[rbp]
009db ff c0 inc eax
009dd 89 85 04 04 00
00 mov DWORD PTR i$29[rbp], eax
$LN34@stbi__pars:
009e3 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
009ea 8b 80 90 46 00
00 mov eax, DWORD PTR [rax+18064]
009f0 39 85 04 04 00
00 cmp DWORD PTR i$29[rbp], eax
009f6 0f 8d 77 02 00
00 jge $LN33@stbi__pars
; 3421 : // scan an interleaved mcu... process scan_n components in order
; 3422 : for (k = 0; k < z->scan_n; ++k) {
009fc c7 85 44 04 00
00 00 00 00 00 mov DWORD PTR k$31[rbp], 0
00a06 eb 0e jmp SHORT $LN37@stbi__pars
$LN35@stbi__pars:
00a08 8b 85 44 04 00
00 mov eax, DWORD PTR k$31[rbp]
00a0e ff c0 inc eax
00a10 89 85 44 04 00
00 mov DWORD PTR k$31[rbp], eax
$LN37@stbi__pars:
00a16 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00a1d 8b 80 54 48 00
00 mov eax, DWORD PTR [rax+18516]
00a23 39 85 44 04 00
00 cmp DWORD PTR k$31[rbp], eax
00a29 0f 8d b3 01 00
00 jge $LN36@stbi__pars
; 3423 : int n = z->order[k];
00a2f 48 63 85 44 04
00 00 movsxd rax, DWORD PTR k$31[rbp]
00a36 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00a3d 8b 84 81 58 48
00 00 mov eax, DWORD PTR [rcx+rax*4+18520]
00a44 89 85 a4 04 00
00 mov DWORD PTR n$34[rbp], eax
; 3424 : // scan out an mcu's worth of this component; that's just determined
; 3425 : // by the basic H and V specified for the component
; 3426 : for (y = 0; y < z->img_comp[n].v; ++y) {
00a4a c7 85 84 04 00
00 00 00 00 00 mov DWORD PTR y$33[rbp], 0
00a54 eb 0e jmp SHORT $LN40@stbi__pars
$LN38@stbi__pars:
00a56 8b 85 84 04 00
00 mov eax, DWORD PTR y$33[rbp]
00a5c ff c0 inc eax
00a5e 89 85 84 04 00
00 mov DWORD PTR y$33[rbp], eax
$LN40@stbi__pars:
00a64 48 63 85 a4 04
00 00 movsxd rax, DWORD PTR n$34[rbp]
00a6b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00a6f 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00a76 8b 84 01 a8 46
00 00 mov eax, DWORD PTR [rcx+rax+18088]
00a7d 39 85 84 04 00
00 cmp DWORD PTR y$33[rbp], eax
00a83 0f 8d 54 01 00
00 jge $LN39@stbi__pars
; 3427 : for (x = 0; x < z->img_comp[n].h; ++x) {
00a89 c7 85 64 04 00
00 00 00 00 00 mov DWORD PTR x$32[rbp], 0
00a93 eb 0e jmp SHORT $LN43@stbi__pars
$LN41@stbi__pars:
00a95 8b 85 64 04 00
00 mov eax, DWORD PTR x$32[rbp]
00a9b ff c0 inc eax
00a9d 89 85 64 04 00
00 mov DWORD PTR x$32[rbp], eax
$LN43@stbi__pars:
00aa3 48 63 85 a4 04
00 00 movsxd rax, DWORD PTR n$34[rbp]
00aaa 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00aae 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00ab5 8b 84 01 a4 46
00 00 mov eax, DWORD PTR [rcx+rax+18084]
00abc 39 85 64 04 00
00 cmp DWORD PTR x$32[rbp], eax
00ac2 0f 8d 10 01 00
00 jge $LN42@stbi__pars
; 3428 : int x2 = (i * z->img_comp[n].h + x);
00ac8 48 63 85 a4 04
00 00 movsxd rax, DWORD PTR n$34[rbp]
00acf 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00ad3 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00ada 8b 95 04 04 00
00 mov edx, DWORD PTR i$29[rbp]
00ae0 0f af 94 01 a4
46 00 00 imul edx, DWORD PTR [rcx+rax+18084]
00ae8 8b c2 mov eax, edx
00aea 03 85 64 04 00
00 add eax, DWORD PTR x$32[rbp]
00af0 89 85 c4 04 00
00 mov DWORD PTR x2$35[rbp], eax
; 3429 : int y2 = (j * z->img_comp[n].v + y);
00af6 48 63 85 a4 04
00 00 movsxd rax, DWORD PTR n$34[rbp]
00afd 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00b01 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00b08 8b 95 24 04 00
00 mov edx, DWORD PTR j$30[rbp]
00b0e 0f af 94 01 a8
46 00 00 imul edx, DWORD PTR [rcx+rax+18088]
00b16 8b c2 mov eax, edx
00b18 03 85 84 04 00
00 add eax, DWORD PTR y$33[rbp]
00b1e 89 85 e4 04 00
00 mov DWORD PTR y2$36[rbp], eax
; 3430 : short *data =
00b24 48 63 85 a4 04
00 00 movsxd rax, DWORD PTR n$34[rbp]
00b2b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00b2f 48 63 8d a4 04
00 00 movsxd rcx, DWORD PTR n$34[rbp]
00b36 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
00b3a 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
00b41 44 8b 85 e4 04
00 00 mov r8d, DWORD PTR y2$36[rbp]
00b48 44 0f af 84 0a
f8 46 00 00 imul r8d, DWORD PTR [rdx+rcx+18168]
00b51 41 8b c8 mov ecx, r8d
00b54 8b 95 c4 04 00
00 mov edx, DWORD PTR x2$35[rbp]
00b5a 03 d1 add edx, ecx
00b5c 8b ca mov ecx, edx
00b5e 6b c9 40 imul ecx, ecx, 64 ; 00000040H
00b61 48 63 c9 movsxd rcx, ecx
00b64 48 8b 95 80 07
00 00 mov rdx, QWORD PTR z$[rbp]
00b6b 48 8b 84 02 f0
46 00 00 mov rax, QWORD PTR [rdx+rax+18160]
00b73 48 8d 04 48 lea rax, QWORD PTR [rax+rcx*2]
00b77 48 89 85 08 05
00 00 mov QWORD PTR data$37[rbp], rax
; 3431 : z->img_comp[n].coeff +
; 3432 : 64 * (x2 +
; 3433 : y2 * z->img_comp[n]
; 3434 : .coeff_w);
; 3435 : if (!stbi__jpeg_decode_block_prog_dc(
00b7e 48 63 85 a4 04
00 00 movsxd rax, DWORD PTR n$34[rbp]
00b85 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00b89 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00b90 48 63 84 01 b0
46 00 00 movsxd rax, DWORD PTR [rcx+rax+18096]
00b98 48 69 c0 90 06
00 00 imul rax, rax, 1680 ; 00000690H
00b9f 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00ba6 48 8d 44 01 08 lea rax, QWORD PTR [rcx+rax+8]
00bab 44 8b 8d a4 04
00 00 mov r9d, DWORD PTR n$34[rbp]
00bb2 4c 8b c0 mov r8, rax
00bb5 48 8b 95 08 05
00 00 mov rdx, QWORD PTR data$37[rbp]
00bbc 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00bc3 e8 00 00 00 00 call stbi__jpeg_decode_block_prog_dc
00bc8 85 c0 test eax, eax
00bca 75 07 jne SHORT $LN68@stbi__pars
; 3436 : z, data,
; 3437 : &z->huff_dc[z->img_comp[n]
; 3438 : .hd],
; 3439 : n))
; 3440 : return 0;
00bcc 33 c0 xor eax, eax
00bce e9 aa 00 00 00 jmp $LN1@stbi__pars
$LN68@stbi__pars:
; 3441 : }
00bd3 e9 bd fe ff ff jmp $LN41@stbi__pars
$LN42@stbi__pars:
; 3442 : }
00bd8 e9 79 fe ff ff jmp $LN38@stbi__pars
$LN39@stbi__pars:
; 3443 : }
00bdd e9 26 fe ff ff jmp $LN35@stbi__pars
$LN36@stbi__pars:
; 3444 : // after all interleaved components, that's an interleaved MCU,
; 3445 : // so now count down the restart interval
; 3446 : if (--z->todo <= 0) {
00be2 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00be9 8b 80 6c 48 00
00 mov eax, DWORD PTR [rax+18540]
00bef ff c8 dec eax
00bf1 89 85 54 07 00
00 mov DWORD PTR tv518[rbp], eax
00bf7 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00bfe 8b 8d 54 07 00
00 mov ecx, DWORD PTR tv518[rbp]
00c04 89 88 6c 48 00
00 mov DWORD PTR [rax+18540], ecx
00c0a 83 bd 54 07 00
00 00 cmp DWORD PTR tv518[rbp], 0
00c11 7f 5b jg SHORT $LN69@stbi__pars
; 3447 : if (z->code_bits < 24)
00c13 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00c1a 83 b8 24 48 00
00 18 cmp DWORD PTR [rax+18468], 24
00c21 7d 0d jge SHORT $LN70@stbi__pars
; 3448 : stbi__grow_buffer_unsafe(z);
00c23 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00c2a e8 00 00 00 00 call stbi__grow_buffer_unsafe
00c2f 90 npad 1
$LN70@stbi__pars:
; 3449 : if (!STBI__RESTART(z->marker))
00c30 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00c37 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
00c3e 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
00c43 7c 15 jl SHORT $LN72@stbi__pars
00c45 48 8b 85 80 07
00 00 mov rax, QWORD PTR z$[rbp]
00c4c 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
00c53 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
00c58 7e 07 jle SHORT $LN71@stbi__pars
$LN72@stbi__pars:
; 3450 : return 1;
00c5a b8 01 00 00 00 mov eax, 1
00c5f eb 1c jmp SHORT $LN1@stbi__pars
$LN71@stbi__pars:
; 3451 : stbi__jpeg_reset(z);
00c61 48 8b 8d 80 07
00 00 mov rcx, QWORD PTR z$[rbp]
00c68 e8 00 00 00 00 call stbi__jpeg_reset
00c6d 90 npad 1
$LN69@stbi__pars:
; 3452 : }
; 3453 : }
00c6e e9 62 fd ff ff jmp $LN32@stbi__pars
$LN33@stbi__pars:
; 3454 : }
00c73 e9 2a fd ff ff jmp $LN29@stbi__pars
$LN30@stbi__pars:
; 3455 : return 1;
00c78 b8 01 00 00 00 mov eax, 1
$LN59@stbi__pars:
$LN45@stbi__pars:
$LN1@stbi__pars:
; 3456 : }
; 3457 : }
; 3458 : }
00c7d 48 8b f8 mov rdi, rax
00c80 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
00c84 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__parse_entropy_coded_data$rtcFrameData
00c8b e8 00 00 00 00 call _RTC_CheckStackVars
00c90 48 8b c7 mov rax, rdi
00c93 48 8b 8d 58 07
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00c9a 48 33 cd xor rcx, rbp
00c9d e8 00 00 00 00 call __security_check_cookie
00ca2 48 8d a5 68 07
00 00 lea rsp, QWORD PTR [rbp+1896]
00ca9 5f pop rdi
00caa 5d pop rbp
00cab c3 ret 0
stbi__parse_entropy_coded_data ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_reset
_TEXT SEGMENT
tv88 = 192
j$ = 240
stbi__jpeg_reset PROC ; COMDAT
; 3277 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 3278 : j->code_bits = 0;
00020 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
00027 c7 80 24 48 00
00 00 00 00 00 mov DWORD PTR [rax+18468], 0
; 3279 : j->code_buffer = 0;
00031 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
00038 c7 80 20 48 00
00 00 00 00 00 mov DWORD PTR [rax+18464], 0
; 3280 : j->nomore = 0;
00042 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
00049 c7 80 2c 48 00
00 00 00 00 00 mov DWORD PTR [rax+18476], 0
; 3281 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred =
00053 b8 60 00 00 00 mov eax, 96 ; 00000060H
00058 48 6b c0 03 imul rax, rax, 3
0005c 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR j$[rbp]
00063 c7 84 01 b8 46
00 00 00 00 00
00 mov DWORD PTR [rcx+rax+18104], 0
0006e b8 60 00 00 00 mov eax, 96 ; 00000060H
00073 48 6b c0 02 imul rax, rax, 2
00077 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR j$[rbp]
0007e c7 84 01 b8 46
00 00 00 00 00
00 mov DWORD PTR [rcx+rax+18104], 0
00089 b8 60 00 00 00 mov eax, 96 ; 00000060H
0008e 48 6b c0 01 imul rax, rax, 1
00092 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR j$[rbp]
00099 c7 84 01 b8 46
00 00 00 00 00
00 mov DWORD PTR [rcx+rax+18104], 0
000a4 b8 60 00 00 00 mov eax, 96 ; 00000060H
000a9 48 6b c0 00 imul rax, rax, 0
000ad 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR j$[rbp]
000b4 c7 84 01 b8 46
00 00 00 00 00
00 mov DWORD PTR [rcx+rax+18104], 0
; 3282 : j->img_comp[3].dc_pred = 0;
; 3283 : j->marker = STBI__MARKER_none;
000bf 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
000c6 c6 80 28 48 00
00 ff mov BYTE PTR [rax+18472], 255 ; 000000ffH
; 3284 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff;
000cd 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
000d4 83 b8 68 48 00
00 00 cmp DWORD PTR [rax+18536], 0
000db 74 15 je SHORT $LN3@stbi__jpeg
000dd 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
000e4 8b 80 68 48 00
00 mov eax, DWORD PTR [rax+18536]
000ea 89 85 c0 00 00
00 mov DWORD PTR tv88[rbp], eax
000f0 eb 0a jmp SHORT $LN4@stbi__jpeg
$LN3@stbi__jpeg:
000f2 c7 85 c0 00 00
00 ff ff ff 7f mov DWORD PTR tv88[rbp], 2147483647 ; 7fffffffH
$LN4@stbi__jpeg:
000fc 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
00103 8b 8d c0 00 00
00 mov ecx, DWORD PTR tv88[rbp]
00109 89 88 6c 48 00
00 mov DWORD PTR [rax+18540], ecx
; 3285 : j->eob_run = 0;
0010f 48 8b 85 f0 00
00 00 mov rax, QWORD PTR j$[rbp]
00116 c7 80 44 48 00
00 00 00 00 00 mov DWORD PTR [rax+18500], 0
; 3286 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe,
; 3287 : // since we don't even allow 1<<30 pixels
; 3288 : }
00120 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
00127 5f pop rdi
00128 5d pop rbp
00129 c3 ret 0
stbi__jpeg_reset ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__get_marker
_TEXT SEGMENT
x$ = 4
j$ = 256
stbi__get_marker PROC ; COMDAT
; 3255 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 3256 : stbi_uc x;
; 3257 : if (j->marker != STBI__MARKER_none) {
00020 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00027 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
0002e 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
00033 74 25 je SHORT $LN4@stbi__get_
; 3258 : x = j->marker;
00035 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0003c 0f b6 80 28 48
00 00 movzx eax, BYTE PTR [rax+18472]
00043 88 45 04 mov BYTE PTR x$[rbp], al
; 3259 : j->marker = STBI__MARKER_none;
00046 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0004d c6 80 28 48 00
00 ff mov BYTE PTR [rax+18472], 255 ; 000000ffH
; 3260 : return x;
00054 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
00058 eb 44 jmp SHORT $LN1@stbi__get_
$LN4@stbi__get_:
; 3261 : }
; 3262 : x = stbi__get8(j->s);
0005a 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00061 48 8b 08 mov rcx, QWORD PTR [rax]
00064 e8 00 00 00 00 call stbi__get8
00069 88 45 04 mov BYTE PTR x$[rbp], al
; 3263 : if (x != 0xff)
0006c 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
00070 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
00075 74 04 je SHORT $LN5@stbi__get_
; 3264 : return STBI__MARKER_none;
00077 b0 ff mov al, 255 ; 000000ffH
00079 eb 23 jmp SHORT $LN1@stbi__get_
$LN5@stbi__get_:
$LN2@stbi__get_:
; 3265 : while (x == 0xff)
0007b 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
0007f 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
00084 75 14 jne SHORT $LN3@stbi__get_
; 3266 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes
00086 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0008d 48 8b 08 mov rcx, QWORD PTR [rax]
00090 e8 00 00 00 00 call stbi__get8
00095 88 45 04 mov BYTE PTR x$[rbp], al
00098 eb e1 jmp SHORT $LN2@stbi__get_
$LN3@stbi__get_:
; 3267 : return x;
0009a 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
$LN1@stbi__get_:
; 3268 : }
0009e 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000a5 5f pop rdi
000a6 5d pop rbp
000a7 c3 ret 0
stbi__get_marker ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__idct_simd
_TEXT SEGMENT
row0$ = 16
row1$ = 64
row2$ = 112
row3$ = 160
row4$ = 208
row5$ = 256
row6$ = 304
row7$ = 352
tmp$ = 400
rot0_0$ = 448
rot0_1$ = 496
rot1_0$ = 544
rot1_1$ = 592
rot2_0$ = 640
rot2_1$ = 688
rot3_0$ = 736
rot3_1$ = 784
bias_0$ = 832
bias_1$ = 880
rot0_0lo$1 = 928
rot0_0hi$2 = 976
t2e_l$3 = 1024
t2e_h$4 = 1072
t3e_l$5 = 1120
t3e_h$6 = 1168
sum04$7 = 1216
dif04$8 = 1264
t0e_l$9 = 1312
t0e_h$10 = 1360
t1e_l$11 = 1408
t1e_h$12 = 1456
x0_l$13 = 1504
x0_h$14 = 1552
x3_l$15 = 1600
x3_h$16 = 1648
x1_l$17 = 1696
x1_h$18 = 1744
x2_l$19 = 1792
x2_h$20 = 1840
rot2_0lo$21 = 1888
rot2_0hi$22 = 1936
y0o_l$23 = 1984
y0o_h$24 = 2032
y2o_l$25 = 2080
y2o_h$26 = 2128
rot3_0lo$27 = 2176
rot3_0hi$28 = 2224
y1o_l$29 = 2272
y1o_h$30 = 2320
y3o_l$31 = 2368
y3o_h$32 = 2416
sum17$33 = 2464
sum35$34 = 2512
rot1_0lo$35 = 2560
rot1_0hi$36 = 2608
y4o_l$37 = 2656
y4o_h$38 = 2704
y5o_l$39 = 2752
y5o_h$40 = 2800
x4_l$41 = 2848
x4_h$42 = 2896
x5_l$43 = 2944
x5_h$44 = 2992
x6_l$45 = 3040
x6_h$46 = 3088
x7_l$47 = 3136
x7_h$48 = 3184
abiased_l$49 = 3232
abiased_h$50 = 3280
sum_l$51 = 3328
sum_h$52 = 3376
dif_l$53 = 3424
dif_h$54 = 3472
abiased_l$55 = 3520
abiased_h$56 = 3568
sum_l$57 = 3616
sum_h$58 = 3664
dif_l$59 = 3712
dif_h$60 = 3760
abiased_l$61 = 3808
abiased_h$62 = 3856
sum_l$63 = 3904
sum_h$64 = 3952
dif_l$65 = 4000
dif_h$66 = 4048
abiased_l$67 = 4096
abiased_h$68 = 4144
sum_l$69 = 4192
sum_h$70 = 4240
dif_l$71 = 4288
dif_h$72 = 4336
rot0_0lo$73 = 4384
rot0_0hi$74 = 4432
t2e_l$75 = 4480
t2e_h$76 = 4528
t3e_l$77 = 4576
t3e_h$78 = 4624
sum04$79 = 4672
dif04$80 = 4720
t0e_l$81 = 4768
t0e_h$82 = 4816
t1e_l$83 = 4864
t1e_h$84 = 4912
x0_l$85 = 4960
x0_h$86 = 5008
x3_l$87 = 5056
x3_h$88 = 5104
x1_l$89 = 5152
x1_h$90 = 5200
x2_l$91 = 5248
x2_h$92 = 5296
rot2_0lo$93 = 5344
rot2_0hi$94 = 5392
y0o_l$95 = 5440
y0o_h$96 = 5488
y2o_l$97 = 5536
y2o_h$98 = 5584
rot3_0lo$99 = 5632
rot3_0hi$100 = 5680
y1o_l$101 = 5728
y1o_h$102 = 5776
y3o_l$103 = 5824
y3o_h$104 = 5872
sum17$105 = 5920
sum35$106 = 5968
rot1_0lo$107 = 6016
rot1_0hi$108 = 6064
y4o_l$109 = 6112
y4o_h$110 = 6160
y5o_l$111 = 6208
y5o_h$112 = 6256
x4_l$113 = 6304
x4_h$114 = 6352
x5_l$115 = 6400
x5_h$116 = 6448
x6_l$117 = 6496
x6_h$118 = 6544
x7_l$119 = 6592
x7_h$120 = 6640
abiased_l$121 = 6688
abiased_h$122 = 6736
sum_l$123 = 6784
sum_h$124 = 6832
dif_l$125 = 6880
dif_h$126 = 6928
abiased_l$127 = 6976
abiased_h$128 = 7024
sum_l$129 = 7072
sum_h$130 = 7120
dif_l$131 = 7168
dif_h$132 = 7216
abiased_l$133 = 7264
abiased_h$134 = 7312
sum_l$135 = 7360
sum_h$136 = 7408
dif_l$137 = 7456
dif_h$138 = 7504
abiased_l$139 = 7552
abiased_h$140 = 7600
sum_l$141 = 7648
sum_h$142 = 7696
dif_l$143 = 7744
dif_h$144 = 7792
p0$145 = 7840
p1$146 = 7888
p2$147 = 7936
p3$148 = 7984
out$ = 9584
out_stride$ = 9592
data$ = 9600
stbi__idct_simd PROC ; COMDAT
; 2813 : {
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 b8 78 25 00 00 mov eax, 9592 ; 00002578H
00015 e8 00 00 00 00 call __chkstk
0001a 48 2b e0 sub rsp, rax
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 2814 : // This is constructed to match our regular (generic) integer IDCT exactly.
; 2815 : __m128i row0, row1, row2, row3, row4, row5, row6, row7;
; 2816 : __m128i tmp;
; 2817 :
; 2818 : // dot product constant: even elems=x, odd elems=y
; 2819 : #define dct_const(x, y) _mm_setr_epi16((x), (y), (x), (y), (x), (y), (x), (y))
; 2820 :
; 2821 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit)
; 2822 : // out(1) = c1[even]*x + c1[odd]*y
; 2823 : #define dct_rot(out0, out1, x, y, c0, c1) \
; 2824 : __m128i c0##lo = _mm_unpacklo_epi16((x), (y)); \
; 2825 : __m128i c0##hi = _mm_unpackhi_epi16((x), (y)); \
; 2826 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \
; 2827 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \
; 2828 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \
; 2829 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1)
; 2830 :
; 2831 : // out = in << 12 (in 16-bit, out 32-bit)
; 2832 : #define dct_widen(out, in) \
; 2833 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \
; 2834 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4)
; 2835 :
; 2836 : // wide add
; 2837 : #define dct_wadd(out, a, b) \
; 2838 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \
; 2839 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h)
; 2840 :
; 2841 : // wide sub
; 2842 : #define dct_wsub(out, a, b) \
; 2843 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \
; 2844 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h)
; 2845 :
; 2846 : // butterfly a/b, add bias, then shift by "s" and pack
; 2847 : #define dct_bfly32o(out0, out1, a, b, bias, s) \
; 2848 : { \
; 2849 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \
; 2850 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \
; 2851 : dct_wadd(sum, abiased, b); \
; 2852 : dct_wsub(dif, abiased, b); \
; 2853 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \
; 2854 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \
; 2855 : }
; 2856 :
; 2857 : // 8-bit interleave step (for transposes)
; 2858 : #define dct_interleave8(a, b) \
; 2859 : tmp = a; \
; 2860 : a = _mm_unpacklo_epi8(a, b); \
; 2861 : b = _mm_unpackhi_epi8(tmp, b)
; 2862 :
; 2863 : // 16-bit interleave step (for transposes)
; 2864 : #define dct_interleave16(a, b) \
; 2865 : tmp = a; \
; 2866 : a = _mm_unpacklo_epi16(a, b); \
; 2867 : b = _mm_unpackhi_epi16(tmp, b)
; 2868 :
; 2869 : #define dct_pass(bias, shift) \
; 2870 : { \
; 2871 : /* even part */ \
; 2872 : dct_rot(t2e, t3e, row2, row6, rot0_0, rot0_1); \
; 2873 : __m128i sum04 = _mm_add_epi16(row0, row4); \
; 2874 : __m128i dif04 = _mm_sub_epi16(row0, row4); \
; 2875 : dct_widen(t0e, sum04); \
; 2876 : dct_widen(t1e, dif04); \
; 2877 : dct_wadd(x0, t0e, t3e); \
; 2878 : dct_wsub(x3, t0e, t3e); \
; 2879 : dct_wadd(x1, t1e, t2e); \
; 2880 : dct_wsub(x2, t1e, t2e); \
; 2881 : /* odd part */ \
; 2882 : dct_rot(y0o, y2o, row7, row3, rot2_0, rot2_1); \
; 2883 : dct_rot(y1o, y3o, row5, row1, rot3_0, rot3_1); \
; 2884 : __m128i sum17 = _mm_add_epi16(row1, row7); \
; 2885 : __m128i sum35 = _mm_add_epi16(row3, row5); \
; 2886 : dct_rot(y4o, y5o, sum17, sum35, rot1_0, rot1_1); \
; 2887 : dct_wadd(x4, y0o, y4o); \
; 2888 : dct_wadd(x5, y1o, y5o); \
; 2889 : dct_wadd(x6, y2o, y5o); \
; 2890 : dct_wadd(x7, y3o, y4o); \
; 2891 : dct_bfly32o(row0, row7, x0, x7, bias, shift); \
; 2892 : dct_bfly32o(row1, row6, x1, x6, bias, shift); \
; 2893 : dct_bfly32o(row2, row5, x2, x5, bias, shift); \
; 2894 : dct_bfly32o(row3, row4, x3, x4, bias, shift); \
; 2895 : }
; 2896 :
; 2897 : __m128i rot0_0 =
0002f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9
00037 66 0f 7f 85 c0
01 00 00 movdqa XMMWORD PTR rot0_0$[rbp], xmm0
; 2898 : dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f));
; 2899 : __m128i rot0_1 =
0003f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@08a914e808a914e808a914e808a914e8
00047 66 0f 7f 85 f0
01 00 00 movdqa XMMWORD PTR rot0_1$[rbp], xmm0
; 2900 : dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f));
; 2901 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f),
0004f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@12d0046b12d0046b12d0046b12d0046b
00057 66 0f 7f 85 20
02 00 00 movdqa XMMWORD PTR rot1_0$[rbp], xmm0
; 2902 : stbi__f2f(1.175875602f));
; 2903 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f),
0005f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0
00067 66 0f 7f 85 50
02 00 00 movdqa XMMWORD PTR rot1_1$[rbp], xmm0
; 2904 : stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f));
; 2905 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f),
0006f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@e09ee565e09ee565e09ee565e09ee565
00077 66 0f 7f 85 80
02 00 00 movdqa XMMWORD PTR rot2_0$[rbp], xmm0
; 2906 : stbi__f2f(-1.961570560f));
; 2907 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f),
0007f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@11c8e09e11c8e09e11c8e09e11c8e09e
00087 66 0f 7f 85 b0
02 00 00 movdqa XMMWORD PTR rot2_1$[rbp], xmm0
; 2908 : stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f));
; 2909 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f),
0008f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d
00097 66 0f 7f 85 e0
02 00 00 movdqa XMMWORD PTR rot3_0$[rbp], xmm0
; 2910 : stbi__f2f(-0.390180644f));
; 2911 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f),
0009f 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3
000a7 66 0f 7f 85 10
03 00 00 movdqa XMMWORD PTR rot3_1$[rbp], xmm0
; 2912 : stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f));
; 2913 :
; 2914 : // rounding biases in column/row passes, see stbi__idct_block for explanation.
; 2915 : __m128i bias_0 = _mm_set1_epi32(512);
000af 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00000200000002000000020000000200
000b7 66 0f 7f 85 40
03 00 00 movdqa XMMWORD PTR bias_0$[rbp], xmm0
; 2916 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17));
000bf 66 0f 6f 05 00
00 00 00 movdqa xmm0, XMMWORD PTR __xmm@01010000010100000101000001010000
000c7 66 0f 7f 85 70
03 00 00 movdqa XMMWORD PTR bias_1$[rbp], xmm0
; 2917 :
; 2918 : // load
; 2919 : row0 = _mm_load_si128((const __m128i *)(data + 0 * 8));
000cf 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
000d6 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
000da 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
; 2920 : row1 = _mm_load_si128((const __m128i *)(data + 1 * 8));
000df 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
000e6 48 83 c0 10 add rax, 16
000ea f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
000ee 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
; 2921 : row2 = _mm_load_si128((const __m128i *)(data + 2 * 8));
000f3 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
000fa 48 83 c0 20 add rax, 32 ; 00000020H
000fe f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
00102 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
; 2922 : row3 = _mm_load_si128((const __m128i *)(data + 3 * 8));
00107 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
0010e 48 83 c0 30 add rax, 48 ; 00000030H
00112 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
00116 66 0f 7f 85 a0
00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
; 2923 : row4 = _mm_load_si128((const __m128i *)(data + 4 * 8));
0011e 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
00125 48 83 c0 40 add rax, 64 ; 00000040H
00129 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
0012d 66 0f 7f 85 d0
00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
; 2924 : row5 = _mm_load_si128((const __m128i *)(data + 5 * 8));
00135 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
0013c 48 83 c0 50 add rax, 80 ; 00000050H
00140 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
00144 66 0f 7f 85 00
01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
; 2925 : row6 = _mm_load_si128((const __m128i *)(data + 6 * 8));
0014c 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
00153 48 83 c0 60 add rax, 96 ; 00000060H
00157 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
0015b 66 0f 7f 85 30
01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
; 2926 : row7 = _mm_load_si128((const __m128i *)(data + 7 * 8));
00163 48 8b 85 80 25
00 00 mov rax, QWORD PTR data$[rbp]
0016a 48 83 c0 70 add rax, 112 ; 00000070H
0016e f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
00172 66 0f 7f 85 60
01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
; 2927 :
; 2928 : // column pass
; 2929 : dct_pass(bias_0, 10);
0017a 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
0017f 66 0f 61 85 30
01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
00187 66 0f 7f 85 a0
03 00 00 movdqa XMMWORD PTR rot0_0lo$1[rbp], xmm0
0018f 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
00194 66 0f 69 85 30
01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
0019c 66 0f 7f 85 d0
03 00 00 movdqa XMMWORD PTR rot0_0hi$2[rbp], xmm0
001a4 66 0f 6f 85 a0
03 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$1[rbp]
001ac 66 0f f5 85 c0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
001b4 66 0f 7f 85 00
04 00 00 movdqa XMMWORD PTR t2e_l$3[rbp], xmm0
001bc 66 0f 6f 85 d0
03 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$2[rbp]
001c4 66 0f f5 85 c0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
001cc 66 0f 7f 85 30
04 00 00 movdqa XMMWORD PTR t2e_h$4[rbp], xmm0
001d4 66 0f 6f 85 a0
03 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$1[rbp]
001dc 66 0f f5 85 f0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
001e4 66 0f 7f 85 60
04 00 00 movdqa XMMWORD PTR t3e_l$5[rbp], xmm0
001ec 66 0f 6f 85 d0
03 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$2[rbp]
001f4 66 0f f5 85 f0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
001fc 66 0f 7f 85 90
04 00 00 movdqa XMMWORD PTR t3e_h$6[rbp], xmm0
00204 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00209 66 0f fd 85 d0
00 00 00 paddw xmm0, XMMWORD PTR row4$[rbp]
00211 66 0f 7f 85 c0
04 00 00 movdqa XMMWORD PTR sum04$7[rbp], xmm0
00219 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
0021e 66 0f f9 85 d0
00 00 00 psubw xmm0, XMMWORD PTR row4$[rbp]
00226 66 0f 7f 85 f0
04 00 00 movdqa XMMWORD PTR dif04$8[rbp], xmm0
0022e 66 0f ef c0 pxor xmm0, xmm0
00232 66 0f 61 85 c0
04 00 00 punpcklwd xmm0, XMMWORD PTR sum04$7[rbp]
0023a 66 0f 72 e0 04 psrad xmm0, 4
0023f 66 0f 7f 85 20
05 00 00 movdqa XMMWORD PTR t0e_l$9[rbp], xmm0
00247 66 0f ef c0 pxor xmm0, xmm0
0024b 66 0f 69 85 c0
04 00 00 punpckhwd xmm0, XMMWORD PTR sum04$7[rbp]
00253 66 0f 72 e0 04 psrad xmm0, 4
00258 66 0f 7f 85 50
05 00 00 movdqa XMMWORD PTR t0e_h$10[rbp], xmm0
00260 66 0f ef c0 pxor xmm0, xmm0
00264 66 0f 61 85 f0
04 00 00 punpcklwd xmm0, XMMWORD PTR dif04$8[rbp]
0026c 66 0f 72 e0 04 psrad xmm0, 4
00271 66 0f 7f 85 80
05 00 00 movdqa XMMWORD PTR t1e_l$11[rbp], xmm0
00279 66 0f ef c0 pxor xmm0, xmm0
0027d 66 0f 69 85 f0
04 00 00 punpckhwd xmm0, XMMWORD PTR dif04$8[rbp]
00285 66 0f 72 e0 04 psrad xmm0, 4
0028a 66 0f 7f 85 b0
05 00 00 movdqa XMMWORD PTR t1e_h$12[rbp], xmm0
00292 66 0f 6f 85 20
05 00 00 movdqa xmm0, XMMWORD PTR t0e_l$9[rbp]
0029a 66 0f fe 85 60
04 00 00 paddd xmm0, XMMWORD PTR t3e_l$5[rbp]
002a2 66 0f 7f 85 e0
05 00 00 movdqa XMMWORD PTR x0_l$13[rbp], xmm0
002aa 66 0f 6f 85 50
05 00 00 movdqa xmm0, XMMWORD PTR t0e_h$10[rbp]
002b2 66 0f fe 85 90
04 00 00 paddd xmm0, XMMWORD PTR t3e_h$6[rbp]
002ba 66 0f 7f 85 10
06 00 00 movdqa XMMWORD PTR x0_h$14[rbp], xmm0
002c2 66 0f 6f 85 20
05 00 00 movdqa xmm0, XMMWORD PTR t0e_l$9[rbp]
002ca 66 0f fa 85 60
04 00 00 psubd xmm0, XMMWORD PTR t3e_l$5[rbp]
002d2 66 0f 7f 85 40
06 00 00 movdqa XMMWORD PTR x3_l$15[rbp], xmm0
002da 66 0f 6f 85 50
05 00 00 movdqa xmm0, XMMWORD PTR t0e_h$10[rbp]
002e2 66 0f fa 85 90
04 00 00 psubd xmm0, XMMWORD PTR t3e_h$6[rbp]
002ea 66 0f 7f 85 70
06 00 00 movdqa XMMWORD PTR x3_h$16[rbp], xmm0
002f2 66 0f 6f 85 80
05 00 00 movdqa xmm0, XMMWORD PTR t1e_l$11[rbp]
002fa 66 0f fe 85 00
04 00 00 paddd xmm0, XMMWORD PTR t2e_l$3[rbp]
00302 66 0f 7f 85 a0
06 00 00 movdqa XMMWORD PTR x1_l$17[rbp], xmm0
0030a 66 0f 6f 85 b0
05 00 00 movdqa xmm0, XMMWORD PTR t1e_h$12[rbp]
00312 66 0f fe 85 30
04 00 00 paddd xmm0, XMMWORD PTR t2e_h$4[rbp]
0031a 66 0f 7f 85 d0
06 00 00 movdqa XMMWORD PTR x1_h$18[rbp], xmm0
00322 66 0f 6f 85 80
05 00 00 movdqa xmm0, XMMWORD PTR t1e_l$11[rbp]
0032a 66 0f fa 85 00
04 00 00 psubd xmm0, XMMWORD PTR t2e_l$3[rbp]
00332 66 0f 7f 85 00
07 00 00 movdqa XMMWORD PTR x2_l$19[rbp], xmm0
0033a 66 0f 6f 85 b0
05 00 00 movdqa xmm0, XMMWORD PTR t1e_h$12[rbp]
00342 66 0f fa 85 30
04 00 00 psubd xmm0, XMMWORD PTR t2e_h$4[rbp]
0034a 66 0f 7f 85 30
07 00 00 movdqa XMMWORD PTR x2_h$20[rbp], xmm0
00352 66 0f 6f 85 60
01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
0035a 66 0f 61 85 a0
00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
00362 66 0f 7f 85 60
07 00 00 movdqa XMMWORD PTR rot2_0lo$21[rbp], xmm0
0036a 66 0f 6f 85 60
01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
00372 66 0f 69 85 a0
00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
0037a 66 0f 7f 85 90
07 00 00 movdqa XMMWORD PTR rot2_0hi$22[rbp], xmm0
00382 66 0f 6f 85 60
07 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$21[rbp]
0038a 66 0f f5 85 80
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
00392 66 0f 7f 85 c0
07 00 00 movdqa XMMWORD PTR y0o_l$23[rbp], xmm0
0039a 66 0f 6f 85 90
07 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$22[rbp]
003a2 66 0f f5 85 80
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
003aa 66 0f 7f 85 f0
07 00 00 movdqa XMMWORD PTR y0o_h$24[rbp], xmm0
003b2 66 0f 6f 85 60
07 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$21[rbp]
003ba 66 0f f5 85 b0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
003c2 66 0f 7f 85 20
08 00 00 movdqa XMMWORD PTR y2o_l$25[rbp], xmm0
003ca 66 0f 6f 85 90
07 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$22[rbp]
003d2 66 0f f5 85 b0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
003da 66 0f 7f 85 50
08 00 00 movdqa XMMWORD PTR y2o_h$26[rbp], xmm0
003e2 66 0f 6f 85 00
01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
003ea 66 0f 61 45 40 punpcklwd xmm0, XMMWORD PTR row1$[rbp]
003ef 66 0f 7f 85 80
08 00 00 movdqa XMMWORD PTR rot3_0lo$27[rbp], xmm0
003f7 66 0f 6f 85 00
01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
003ff 66 0f 69 45 40 punpckhwd xmm0, XMMWORD PTR row1$[rbp]
00404 66 0f 7f 85 b0
08 00 00 movdqa XMMWORD PTR rot3_0hi$28[rbp], xmm0
0040c 66 0f 6f 85 80
08 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$27[rbp]
00414 66 0f f5 85 e0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
0041c 66 0f 7f 85 e0
08 00 00 movdqa XMMWORD PTR y1o_l$29[rbp], xmm0
00424 66 0f 6f 85 b0
08 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$28[rbp]
0042c 66 0f f5 85 e0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
00434 66 0f 7f 85 10
09 00 00 movdqa XMMWORD PTR y1o_h$30[rbp], xmm0
0043c 66 0f 6f 85 80
08 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$27[rbp]
00444 66 0f f5 85 10
03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
0044c 66 0f 7f 85 40
09 00 00 movdqa XMMWORD PTR y3o_l$31[rbp], xmm0
00454 66 0f 6f 85 b0
08 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$28[rbp]
0045c 66 0f f5 85 10
03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
00464 66 0f 7f 85 70
09 00 00 movdqa XMMWORD PTR y3o_h$32[rbp], xmm0
0046c 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
00471 66 0f fd 85 60
01 00 00 paddw xmm0, XMMWORD PTR row7$[rbp]
00479 66 0f 7f 85 a0
09 00 00 movdqa XMMWORD PTR sum17$33[rbp], xmm0
00481 66 0f 6f 85 a0
00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
00489 66 0f fd 85 00
01 00 00 paddw xmm0, XMMWORD PTR row5$[rbp]
00491 66 0f 7f 85 d0
09 00 00 movdqa XMMWORD PTR sum35$34[rbp], xmm0
00499 66 0f 6f 85 a0
09 00 00 movdqa xmm0, XMMWORD PTR sum17$33[rbp]
004a1 66 0f 61 85 d0
09 00 00 punpcklwd xmm0, XMMWORD PTR sum35$34[rbp]
004a9 66 0f 7f 85 00
0a 00 00 movdqa XMMWORD PTR rot1_0lo$35[rbp], xmm0
004b1 66 0f 6f 85 a0
09 00 00 movdqa xmm0, XMMWORD PTR sum17$33[rbp]
004b9 66 0f 69 85 d0
09 00 00 punpckhwd xmm0, XMMWORD PTR sum35$34[rbp]
004c1 66 0f 7f 85 30
0a 00 00 movdqa XMMWORD PTR rot1_0hi$36[rbp], xmm0
004c9 66 0f 6f 85 00
0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$35[rbp]
004d1 66 0f f5 85 20
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
004d9 66 0f 7f 85 60
0a 00 00 movdqa XMMWORD PTR y4o_l$37[rbp], xmm0
004e1 66 0f 6f 85 30
0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$36[rbp]
004e9 66 0f f5 85 20
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
004f1 66 0f 7f 85 90
0a 00 00 movdqa XMMWORD PTR y4o_h$38[rbp], xmm0
004f9 66 0f 6f 85 00
0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$35[rbp]
00501 66 0f f5 85 50
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
00509 66 0f 7f 85 c0
0a 00 00 movdqa XMMWORD PTR y5o_l$39[rbp], xmm0
00511 66 0f 6f 85 30
0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$36[rbp]
00519 66 0f f5 85 50
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
00521 66 0f 7f 85 f0
0a 00 00 movdqa XMMWORD PTR y5o_h$40[rbp], xmm0
00529 66 0f 6f 85 c0
07 00 00 movdqa xmm0, XMMWORD PTR y0o_l$23[rbp]
00531 66 0f fe 85 60
0a 00 00 paddd xmm0, XMMWORD PTR y4o_l$37[rbp]
00539 66 0f 7f 85 20
0b 00 00 movdqa XMMWORD PTR x4_l$41[rbp], xmm0
00541 66 0f 6f 85 f0
07 00 00 movdqa xmm0, XMMWORD PTR y0o_h$24[rbp]
00549 66 0f fe 85 90
0a 00 00 paddd xmm0, XMMWORD PTR y4o_h$38[rbp]
00551 66 0f 7f 85 50
0b 00 00 movdqa XMMWORD PTR x4_h$42[rbp], xmm0
00559 66 0f 6f 85 e0
08 00 00 movdqa xmm0, XMMWORD PTR y1o_l$29[rbp]
00561 66 0f fe 85 c0
0a 00 00 paddd xmm0, XMMWORD PTR y5o_l$39[rbp]
00569 66 0f 7f 85 80
0b 00 00 movdqa XMMWORD PTR x5_l$43[rbp], xmm0
00571 66 0f 6f 85 10
09 00 00 movdqa xmm0, XMMWORD PTR y1o_h$30[rbp]
00579 66 0f fe 85 f0
0a 00 00 paddd xmm0, XMMWORD PTR y5o_h$40[rbp]
00581 66 0f 7f 85 b0
0b 00 00 movdqa XMMWORD PTR x5_h$44[rbp], xmm0
00589 66 0f 6f 85 20
08 00 00 movdqa xmm0, XMMWORD PTR y2o_l$25[rbp]
00591 66 0f fe 85 c0
0a 00 00 paddd xmm0, XMMWORD PTR y5o_l$39[rbp]
00599 66 0f 7f 85 e0
0b 00 00 movdqa XMMWORD PTR x6_l$45[rbp], xmm0
005a1 66 0f 6f 85 50
08 00 00 movdqa xmm0, XMMWORD PTR y2o_h$26[rbp]
005a9 66 0f fe 85 f0
0a 00 00 paddd xmm0, XMMWORD PTR y5o_h$40[rbp]
005b1 66 0f 7f 85 10
0c 00 00 movdqa XMMWORD PTR x6_h$46[rbp], xmm0
005b9 66 0f 6f 85 40
09 00 00 movdqa xmm0, XMMWORD PTR y3o_l$31[rbp]
005c1 66 0f fe 85 60
0a 00 00 paddd xmm0, XMMWORD PTR y4o_l$37[rbp]
005c9 66 0f 7f 85 40
0c 00 00 movdqa XMMWORD PTR x7_l$47[rbp], xmm0
005d1 66 0f 6f 85 70
09 00 00 movdqa xmm0, XMMWORD PTR y3o_h$32[rbp]
005d9 66 0f fe 85 90
0a 00 00 paddd xmm0, XMMWORD PTR y4o_h$38[rbp]
005e1 66 0f 7f 85 70
0c 00 00 movdqa XMMWORD PTR x7_h$48[rbp], xmm0
005e9 66 0f 6f 85 e0
05 00 00 movdqa xmm0, XMMWORD PTR x0_l$13[rbp]
005f1 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
005f9 66 0f 7f 85 a0
0c 00 00 movdqa XMMWORD PTR abiased_l$49[rbp], xmm0
00601 66 0f 6f 85 10
06 00 00 movdqa xmm0, XMMWORD PTR x0_h$14[rbp]
00609 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
00611 66 0f 7f 85 d0
0c 00 00 movdqa XMMWORD PTR abiased_h$50[rbp], xmm0
00619 66 0f 6f 85 a0
0c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$49[rbp]
00621 66 0f fe 85 40
0c 00 00 paddd xmm0, XMMWORD PTR x7_l$47[rbp]
00629 66 0f 7f 85 00
0d 00 00 movdqa XMMWORD PTR sum_l$51[rbp], xmm0
00631 66 0f 6f 85 d0
0c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$50[rbp]
00639 66 0f fe 85 70
0c 00 00 paddd xmm0, XMMWORD PTR x7_h$48[rbp]
00641 66 0f 7f 85 30
0d 00 00 movdqa XMMWORD PTR sum_h$52[rbp], xmm0
00649 66 0f 6f 85 a0
0c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$49[rbp]
00651 66 0f fa 85 40
0c 00 00 psubd xmm0, XMMWORD PTR x7_l$47[rbp]
00659 66 0f 7f 85 60
0d 00 00 movdqa XMMWORD PTR dif_l$53[rbp], xmm0
00661 66 0f 6f 85 d0
0c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$50[rbp]
00669 66 0f fa 85 70
0c 00 00 psubd xmm0, XMMWORD PTR x7_h$48[rbp]
00671 66 0f 7f 85 90
0d 00 00 movdqa XMMWORD PTR dif_h$54[rbp], xmm0
00679 66 0f 6f 85 30
0d 00 00 movdqa xmm0, XMMWORD PTR sum_h$52[rbp]
00681 66 0f 72 e0 0a psrad xmm0, 10
00686 66 0f 6f 8d 00
0d 00 00 movdqa xmm1, XMMWORD PTR sum_l$51[rbp]
0068e 66 0f 72 e1 0a psrad xmm1, 10
00693 66 0f 6b c8 packssdw xmm1, xmm0
00697 66 0f 6f c1 movdqa xmm0, xmm1
0069b 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
006a0 66 0f 6f 85 90
0d 00 00 movdqa xmm0, XMMWORD PTR dif_h$54[rbp]
006a8 66 0f 72 e0 0a psrad xmm0, 10
006ad 66 0f 6f 8d 60
0d 00 00 movdqa xmm1, XMMWORD PTR dif_l$53[rbp]
006b5 66 0f 72 e1 0a psrad xmm1, 10
006ba 66 0f 6b c8 packssdw xmm1, xmm0
006be 66 0f 6f c1 movdqa xmm0, xmm1
006c2 66 0f 7f 85 60
01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
006ca 66 0f 6f 85 a0
06 00 00 movdqa xmm0, XMMWORD PTR x1_l$17[rbp]
006d2 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
006da 66 0f 7f 85 c0
0d 00 00 movdqa XMMWORD PTR abiased_l$55[rbp], xmm0
006e2 66 0f 6f 85 d0
06 00 00 movdqa xmm0, XMMWORD PTR x1_h$18[rbp]
006ea 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
006f2 66 0f 7f 85 f0
0d 00 00 movdqa XMMWORD PTR abiased_h$56[rbp], xmm0
006fa 66 0f 6f 85 c0
0d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$55[rbp]
00702 66 0f fe 85 e0
0b 00 00 paddd xmm0, XMMWORD PTR x6_l$45[rbp]
0070a 66 0f 7f 85 20
0e 00 00 movdqa XMMWORD PTR sum_l$57[rbp], xmm0
00712 66 0f 6f 85 f0
0d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$56[rbp]
0071a 66 0f fe 85 10
0c 00 00 paddd xmm0, XMMWORD PTR x6_h$46[rbp]
00722 66 0f 7f 85 50
0e 00 00 movdqa XMMWORD PTR sum_h$58[rbp], xmm0
0072a 66 0f 6f 85 c0
0d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$55[rbp]
00732 66 0f fa 85 e0
0b 00 00 psubd xmm0, XMMWORD PTR x6_l$45[rbp]
0073a 66 0f 7f 85 80
0e 00 00 movdqa XMMWORD PTR dif_l$59[rbp], xmm0
00742 66 0f 6f 85 f0
0d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$56[rbp]
0074a 66 0f fa 85 10
0c 00 00 psubd xmm0, XMMWORD PTR x6_h$46[rbp]
00752 66 0f 7f 85 b0
0e 00 00 movdqa XMMWORD PTR dif_h$60[rbp], xmm0
0075a 66 0f 6f 85 50
0e 00 00 movdqa xmm0, XMMWORD PTR sum_h$58[rbp]
00762 66 0f 72 e0 0a psrad xmm0, 10
00767 66 0f 6f 8d 20
0e 00 00 movdqa xmm1, XMMWORD PTR sum_l$57[rbp]
0076f 66 0f 72 e1 0a psrad xmm1, 10
00774 66 0f 6b c8 packssdw xmm1, xmm0
00778 66 0f 6f c1 movdqa xmm0, xmm1
0077c 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
00781 66 0f 6f 85 b0
0e 00 00 movdqa xmm0, XMMWORD PTR dif_h$60[rbp]
00789 66 0f 72 e0 0a psrad xmm0, 10
0078e 66 0f 6f 8d 80
0e 00 00 movdqa xmm1, XMMWORD PTR dif_l$59[rbp]
00796 66 0f 72 e1 0a psrad xmm1, 10
0079b 66 0f 6b c8 packssdw xmm1, xmm0
0079f 66 0f 6f c1 movdqa xmm0, xmm1
007a3 66 0f 7f 85 30
01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
007ab 66 0f 6f 85 00
07 00 00 movdqa xmm0, XMMWORD PTR x2_l$19[rbp]
007b3 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
007bb 66 0f 7f 85 e0
0e 00 00 movdqa XMMWORD PTR abiased_l$61[rbp], xmm0
007c3 66 0f 6f 85 30
07 00 00 movdqa xmm0, XMMWORD PTR x2_h$20[rbp]
007cb 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
007d3 66 0f 7f 85 10
0f 00 00 movdqa XMMWORD PTR abiased_h$62[rbp], xmm0
007db 66 0f 6f 85 e0
0e 00 00 movdqa xmm0, XMMWORD PTR abiased_l$61[rbp]
007e3 66 0f fe 85 80
0b 00 00 paddd xmm0, XMMWORD PTR x5_l$43[rbp]
007eb 66 0f 7f 85 40
0f 00 00 movdqa XMMWORD PTR sum_l$63[rbp], xmm0
007f3 66 0f 6f 85 10
0f 00 00 movdqa xmm0, XMMWORD PTR abiased_h$62[rbp]
007fb 66 0f fe 85 b0
0b 00 00 paddd xmm0, XMMWORD PTR x5_h$44[rbp]
00803 66 0f 7f 85 70
0f 00 00 movdqa XMMWORD PTR sum_h$64[rbp], xmm0
0080b 66 0f 6f 85 e0
0e 00 00 movdqa xmm0, XMMWORD PTR abiased_l$61[rbp]
00813 66 0f fa 85 80
0b 00 00 psubd xmm0, XMMWORD PTR x5_l$43[rbp]
0081b 66 0f 7f 85 a0
0f 00 00 movdqa XMMWORD PTR dif_l$65[rbp], xmm0
00823 66 0f 6f 85 10
0f 00 00 movdqa xmm0, XMMWORD PTR abiased_h$62[rbp]
0082b 66 0f fa 85 b0
0b 00 00 psubd xmm0, XMMWORD PTR x5_h$44[rbp]
00833 66 0f 7f 85 d0
0f 00 00 movdqa XMMWORD PTR dif_h$66[rbp], xmm0
0083b 66 0f 6f 85 70
0f 00 00 movdqa xmm0, XMMWORD PTR sum_h$64[rbp]
00843 66 0f 72 e0 0a psrad xmm0, 10
00848 66 0f 6f 8d 40
0f 00 00 movdqa xmm1, XMMWORD PTR sum_l$63[rbp]
00850 66 0f 72 e1 0a psrad xmm1, 10
00855 66 0f 6b c8 packssdw xmm1, xmm0
00859 66 0f 6f c1 movdqa xmm0, xmm1
0085d 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
00862 66 0f 6f 85 d0
0f 00 00 movdqa xmm0, XMMWORD PTR dif_h$66[rbp]
0086a 66 0f 72 e0 0a psrad xmm0, 10
0086f 66 0f 6f 8d a0
0f 00 00 movdqa xmm1, XMMWORD PTR dif_l$65[rbp]
00877 66 0f 72 e1 0a psrad xmm1, 10
0087c 66 0f 6b c8 packssdw xmm1, xmm0
00880 66 0f 6f c1 movdqa xmm0, xmm1
00884 66 0f 7f 85 00
01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
0088c 66 0f 6f 85 40
06 00 00 movdqa xmm0, XMMWORD PTR x3_l$15[rbp]
00894 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
0089c 66 0f 7f 85 00
10 00 00 movdqa XMMWORD PTR abiased_l$67[rbp], xmm0
008a4 66 0f 6f 85 70
06 00 00 movdqa xmm0, XMMWORD PTR x3_h$16[rbp]
008ac 66 0f fe 85 40
03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
008b4 66 0f 7f 85 30
10 00 00 movdqa XMMWORD PTR abiased_h$68[rbp], xmm0
008bc 66 0f 6f 85 00
10 00 00 movdqa xmm0, XMMWORD PTR abiased_l$67[rbp]
008c4 66 0f fe 85 20
0b 00 00 paddd xmm0, XMMWORD PTR x4_l$41[rbp]
008cc 66 0f 7f 85 60
10 00 00 movdqa XMMWORD PTR sum_l$69[rbp], xmm0
008d4 66 0f 6f 85 30
10 00 00 movdqa xmm0, XMMWORD PTR abiased_h$68[rbp]
008dc 66 0f fe 85 50
0b 00 00 paddd xmm0, XMMWORD PTR x4_h$42[rbp]
008e4 66 0f 7f 85 90
10 00 00 movdqa XMMWORD PTR sum_h$70[rbp], xmm0
008ec 66 0f 6f 85 00
10 00 00 movdqa xmm0, XMMWORD PTR abiased_l$67[rbp]
008f4 66 0f fa 85 20
0b 00 00 psubd xmm0, XMMWORD PTR x4_l$41[rbp]
008fc 66 0f 7f 85 c0
10 00 00 movdqa XMMWORD PTR dif_l$71[rbp], xmm0
00904 66 0f 6f 85 30
10 00 00 movdqa xmm0, XMMWORD PTR abiased_h$68[rbp]
0090c 66 0f fa 85 50
0b 00 00 psubd xmm0, XMMWORD PTR x4_h$42[rbp]
00914 66 0f 7f 85 f0
10 00 00 movdqa XMMWORD PTR dif_h$72[rbp], xmm0
0091c 66 0f 6f 85 90
10 00 00 movdqa xmm0, XMMWORD PTR sum_h$70[rbp]
00924 66 0f 72 e0 0a psrad xmm0, 10
00929 66 0f 6f 8d 60
10 00 00 movdqa xmm1, XMMWORD PTR sum_l$69[rbp]
00931 66 0f 72 e1 0a psrad xmm1, 10
00936 66 0f 6b c8 packssdw xmm1, xmm0
0093a 66 0f 6f c1 movdqa xmm0, xmm1
0093e 66 0f 7f 85 a0
00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
00946 66 0f 6f 85 f0
10 00 00 movdqa xmm0, XMMWORD PTR dif_h$72[rbp]
0094e 66 0f 72 e0 0a psrad xmm0, 10
00953 66 0f 6f 8d c0
10 00 00 movdqa xmm1, XMMWORD PTR dif_l$71[rbp]
0095b 66 0f 72 e1 0a psrad xmm1, 10
00960 66 0f 6b c8 packssdw xmm1, xmm0
00964 66 0f 6f c1 movdqa xmm0, xmm1
00968 66 0f 7f 85 d0
00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
; 2930 :
; 2931 : {
; 2932 : // 16bit 8x8 transpose pass 1
; 2933 : dct_interleave16(row0, row4);
00970 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00975 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
0097d 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00982 66 0f 61 85 d0
00 00 00 punpcklwd xmm0, XMMWORD PTR row4$[rbp]
0098a 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
0098f 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00997 66 0f 69 85 d0
00 00 00 punpckhwd xmm0, XMMWORD PTR row4$[rbp]
0099f 66 0f 7f 85 d0
00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
; 2934 : dct_interleave16(row1, row5);
009a7 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
009ac 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
009b4 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
009b9 66 0f 61 85 00
01 00 00 punpcklwd xmm0, XMMWORD PTR row5$[rbp]
009c1 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
009c6 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
009ce 66 0f 69 85 00
01 00 00 punpckhwd xmm0, XMMWORD PTR row5$[rbp]
009d6 66 0f 7f 85 00
01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
; 2935 : dct_interleave16(row2, row6);
009de 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
009e3 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
009eb 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
009f0 66 0f 61 85 30
01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
009f8 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
009fd 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00a05 66 0f 69 85 30
01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
00a0d 66 0f 7f 85 30
01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
; 2936 : dct_interleave16(row3, row7);
00a15 66 0f 6f 85 a0
00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
00a1d 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00a25 66 0f 6f 85 a0
00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
00a2d 66 0f 61 85 60
01 00 00 punpcklwd xmm0, XMMWORD PTR row7$[rbp]
00a35 66 0f 7f 85 a0
00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
00a3d 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00a45 66 0f 69 85 60
01 00 00 punpckhwd xmm0, XMMWORD PTR row7$[rbp]
00a4d 66 0f 7f 85 60
01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
; 2937 :
; 2938 : // transpose pass 2
; 2939 : dct_interleave16(row0, row2);
00a55 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00a5a 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00a62 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00a67 66 0f 61 45 70 punpcklwd xmm0, XMMWORD PTR row2$[rbp]
00a6c 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
00a71 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00a79 66 0f 69 45 70 punpckhwd xmm0, XMMWORD PTR row2$[rbp]
00a7e 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
; 2940 : dct_interleave16(row1, row3);
00a83 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
00a88 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00a90 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
00a95 66 0f 61 85 a0
00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
00a9d 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
00aa2 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00aaa 66 0f 69 85 a0
00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
00ab2 66 0f 7f 85 a0
00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
; 2941 : dct_interleave16(row4, row6);
00aba 66 0f 6f 85 d0
00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
00ac2 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00aca 66 0f 6f 85 d0
00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
00ad2 66 0f 61 85 30
01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
00ada 66 0f 7f 85 d0
00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
00ae2 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00aea 66 0f 69 85 30
01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
00af2 66 0f 7f 85 30
01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
; 2942 : dct_interleave16(row5, row7);
00afa 66 0f 6f 85 00
01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
00b02 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00b0a 66 0f 6f 85 00
01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
00b12 66 0f 61 85 60
01 00 00 punpcklwd xmm0, XMMWORD PTR row7$[rbp]
00b1a 66 0f 7f 85 00
01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
00b22 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00b2a 66 0f 69 85 60
01 00 00 punpckhwd xmm0, XMMWORD PTR row7$[rbp]
00b32 66 0f 7f 85 60
01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
; 2943 :
; 2944 : // transpose pass 3
; 2945 : dct_interleave16(row0, row1);
00b3a 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00b3f 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00b47 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00b4c 66 0f 61 45 40 punpcklwd xmm0, XMMWORD PTR row1$[rbp]
00b51 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
00b56 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00b5e 66 0f 69 45 40 punpckhwd xmm0, XMMWORD PTR row1$[rbp]
00b63 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
; 2946 : dct_interleave16(row2, row3);
00b68 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
00b6d 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00b75 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
00b7a 66 0f 61 85 a0
00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
00b82 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
00b87 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00b8f 66 0f 69 85 a0
00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
00b97 66 0f 7f 85 a0
00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
; 2947 : dct_interleave16(row4, row5);
00b9f 66 0f 6f 85 d0
00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
00ba7 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00baf 66 0f 6f 85 d0
00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
00bb7 66 0f 61 85 00
01 00 00 punpcklwd xmm0, XMMWORD PTR row5$[rbp]
00bbf 66 0f 7f 85 d0
00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
00bc7 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00bcf 66 0f 69 85 00
01 00 00 punpckhwd xmm0, XMMWORD PTR row5$[rbp]
00bd7 66 0f 7f 85 00
01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
; 2948 : dct_interleave16(row6, row7);
00bdf 66 0f 6f 85 30
01 00 00 movdqa xmm0, XMMWORD PTR row6$[rbp]
00be7 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
00bef 66 0f 6f 85 30
01 00 00 movdqa xmm0, XMMWORD PTR row6$[rbp]
00bf7 66 0f 61 85 60
01 00 00 punpcklwd xmm0, XMMWORD PTR row7$[rbp]
00bff 66 0f 7f 85 30
01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
00c07 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
00c0f 66 0f 69 85 60
01 00 00 punpckhwd xmm0, XMMWORD PTR row7$[rbp]
00c17 66 0f 7f 85 60
01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
; 2949 : }
; 2950 :
; 2951 : // row pass
; 2952 : dct_pass(bias_1, 17);
00c1f 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
00c24 66 0f 61 85 30
01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
00c2c 66 0f 7f 85 20
11 00 00 movdqa XMMWORD PTR rot0_0lo$73[rbp], xmm0
00c34 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
00c39 66 0f 69 85 30
01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
00c41 66 0f 7f 85 50
11 00 00 movdqa XMMWORD PTR rot0_0hi$74[rbp], xmm0
00c49 66 0f 6f 85 20
11 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$73[rbp]
00c51 66 0f f5 85 c0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
00c59 66 0f 7f 85 80
11 00 00 movdqa XMMWORD PTR t2e_l$75[rbp], xmm0
00c61 66 0f 6f 85 50
11 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$74[rbp]
00c69 66 0f f5 85 c0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
00c71 66 0f 7f 85 b0
11 00 00 movdqa XMMWORD PTR t2e_h$76[rbp], xmm0
00c79 66 0f 6f 85 20
11 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$73[rbp]
00c81 66 0f f5 85 f0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
00c89 66 0f 7f 85 e0
11 00 00 movdqa XMMWORD PTR t3e_l$77[rbp], xmm0
00c91 66 0f 6f 85 50
11 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$74[rbp]
00c99 66 0f f5 85 f0
01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
00ca1 66 0f 7f 85 10
12 00 00 movdqa XMMWORD PTR t3e_h$78[rbp], xmm0
00ca9 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00cae 66 0f fd 85 d0
00 00 00 paddw xmm0, XMMWORD PTR row4$[rbp]
00cb6 66 0f 7f 85 40
12 00 00 movdqa XMMWORD PTR sum04$79[rbp], xmm0
00cbe 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
00cc3 66 0f f9 85 d0
00 00 00 psubw xmm0, XMMWORD PTR row4$[rbp]
00ccb 66 0f 7f 85 70
12 00 00 movdqa XMMWORD PTR dif04$80[rbp], xmm0
00cd3 66 0f ef c0 pxor xmm0, xmm0
00cd7 66 0f 61 85 40
12 00 00 punpcklwd xmm0, XMMWORD PTR sum04$79[rbp]
00cdf 66 0f 72 e0 04 psrad xmm0, 4
00ce4 66 0f 7f 85 a0
12 00 00 movdqa XMMWORD PTR t0e_l$81[rbp], xmm0
00cec 66 0f ef c0 pxor xmm0, xmm0
00cf0 66 0f 69 85 40
12 00 00 punpckhwd xmm0, XMMWORD PTR sum04$79[rbp]
00cf8 66 0f 72 e0 04 psrad xmm0, 4
00cfd 66 0f 7f 85 d0
12 00 00 movdqa XMMWORD PTR t0e_h$82[rbp], xmm0
00d05 66 0f ef c0 pxor xmm0, xmm0
00d09 66 0f 61 85 70
12 00 00 punpcklwd xmm0, XMMWORD PTR dif04$80[rbp]
00d11 66 0f 72 e0 04 psrad xmm0, 4
00d16 66 0f 7f 85 00
13 00 00 movdqa XMMWORD PTR t1e_l$83[rbp], xmm0
00d1e 66 0f ef c0 pxor xmm0, xmm0
00d22 66 0f 69 85 70
12 00 00 punpckhwd xmm0, XMMWORD PTR dif04$80[rbp]
00d2a 66 0f 72 e0 04 psrad xmm0, 4
00d2f 66 0f 7f 85 30
13 00 00 movdqa XMMWORD PTR t1e_h$84[rbp], xmm0
00d37 66 0f 6f 85 a0
12 00 00 movdqa xmm0, XMMWORD PTR t0e_l$81[rbp]
00d3f 66 0f fe 85 e0
11 00 00 paddd xmm0, XMMWORD PTR t3e_l$77[rbp]
00d47 66 0f 7f 85 60
13 00 00 movdqa XMMWORD PTR x0_l$85[rbp], xmm0
00d4f 66 0f 6f 85 d0
12 00 00 movdqa xmm0, XMMWORD PTR t0e_h$82[rbp]
00d57 66 0f fe 85 10
12 00 00 paddd xmm0, XMMWORD PTR t3e_h$78[rbp]
00d5f 66 0f 7f 85 90
13 00 00 movdqa XMMWORD PTR x0_h$86[rbp], xmm0
00d67 66 0f 6f 85 a0
12 00 00 movdqa xmm0, XMMWORD PTR t0e_l$81[rbp]
00d6f 66 0f fa 85 e0
11 00 00 psubd xmm0, XMMWORD PTR t3e_l$77[rbp]
00d77 66 0f 7f 85 c0
13 00 00 movdqa XMMWORD PTR x3_l$87[rbp], xmm0
00d7f 66 0f 6f 85 d0
12 00 00 movdqa xmm0, XMMWORD PTR t0e_h$82[rbp]
00d87 66 0f fa 85 10
12 00 00 psubd xmm0, XMMWORD PTR t3e_h$78[rbp]
00d8f 66 0f 7f 85 f0
13 00 00 movdqa XMMWORD PTR x3_h$88[rbp], xmm0
00d97 66 0f 6f 85 00
13 00 00 movdqa xmm0, XMMWORD PTR t1e_l$83[rbp]
00d9f 66 0f fe 85 80
11 00 00 paddd xmm0, XMMWORD PTR t2e_l$75[rbp]
00da7 66 0f 7f 85 20
14 00 00 movdqa XMMWORD PTR x1_l$89[rbp], xmm0
00daf 66 0f 6f 85 30
13 00 00 movdqa xmm0, XMMWORD PTR t1e_h$84[rbp]
00db7 66 0f fe 85 b0
11 00 00 paddd xmm0, XMMWORD PTR t2e_h$76[rbp]
00dbf 66 0f 7f 85 50
14 00 00 movdqa XMMWORD PTR x1_h$90[rbp], xmm0
00dc7 66 0f 6f 85 00
13 00 00 movdqa xmm0, XMMWORD PTR t1e_l$83[rbp]
00dcf 66 0f fa 85 80
11 00 00 psubd xmm0, XMMWORD PTR t2e_l$75[rbp]
00dd7 66 0f 7f 85 80
14 00 00 movdqa XMMWORD PTR x2_l$91[rbp], xmm0
00ddf 66 0f 6f 85 30
13 00 00 movdqa xmm0, XMMWORD PTR t1e_h$84[rbp]
00de7 66 0f fa 85 b0
11 00 00 psubd xmm0, XMMWORD PTR t2e_h$76[rbp]
00def 66 0f 7f 85 b0
14 00 00 movdqa XMMWORD PTR x2_h$92[rbp], xmm0
00df7 66 0f 6f 85 60
01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
00dff 66 0f 61 85 a0
00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
00e07 66 0f 7f 85 e0
14 00 00 movdqa XMMWORD PTR rot2_0lo$93[rbp], xmm0
00e0f 66 0f 6f 85 60
01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
00e17 66 0f 69 85 a0
00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
00e1f 66 0f 7f 85 10
15 00 00 movdqa XMMWORD PTR rot2_0hi$94[rbp], xmm0
00e27 66 0f 6f 85 e0
14 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$93[rbp]
00e2f 66 0f f5 85 80
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
00e37 66 0f 7f 85 40
15 00 00 movdqa XMMWORD PTR y0o_l$95[rbp], xmm0
00e3f 66 0f 6f 85 10
15 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$94[rbp]
00e47 66 0f f5 85 80
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
00e4f 66 0f 7f 85 70
15 00 00 movdqa XMMWORD PTR y0o_h$96[rbp], xmm0
00e57 66 0f 6f 85 e0
14 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$93[rbp]
00e5f 66 0f f5 85 b0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
00e67 66 0f 7f 85 a0
15 00 00 movdqa XMMWORD PTR y2o_l$97[rbp], xmm0
00e6f 66 0f 6f 85 10
15 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$94[rbp]
00e77 66 0f f5 85 b0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
00e7f 66 0f 7f 85 d0
15 00 00 movdqa XMMWORD PTR y2o_h$98[rbp], xmm0
00e87 66 0f 6f 85 00
01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
00e8f 66 0f 61 45 40 punpcklwd xmm0, XMMWORD PTR row1$[rbp]
00e94 66 0f 7f 85 00
16 00 00 movdqa XMMWORD PTR rot3_0lo$99[rbp], xmm0
00e9c 66 0f 6f 85 00
01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
00ea4 66 0f 69 45 40 punpckhwd xmm0, XMMWORD PTR row1$[rbp]
00ea9 66 0f 7f 85 30
16 00 00 movdqa XMMWORD PTR rot3_0hi$100[rbp], xmm0
00eb1 66 0f 6f 85 00
16 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$99[rbp]
00eb9 66 0f f5 85 e0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
00ec1 66 0f 7f 85 60
16 00 00 movdqa XMMWORD PTR y1o_l$101[rbp], xmm0
00ec9 66 0f 6f 85 30
16 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$100[rbp]
00ed1 66 0f f5 85 e0
02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
00ed9 66 0f 7f 85 90
16 00 00 movdqa XMMWORD PTR y1o_h$102[rbp], xmm0
00ee1 66 0f 6f 85 00
16 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$99[rbp]
00ee9 66 0f f5 85 10
03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
00ef1 66 0f 7f 85 c0
16 00 00 movdqa XMMWORD PTR y3o_l$103[rbp], xmm0
00ef9 66 0f 6f 85 30
16 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$100[rbp]
00f01 66 0f f5 85 10
03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
00f09 66 0f 7f 85 f0
16 00 00 movdqa XMMWORD PTR y3o_h$104[rbp], xmm0
00f11 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
00f16 66 0f fd 85 60
01 00 00 paddw xmm0, XMMWORD PTR row7$[rbp]
00f1e 66 0f 7f 85 20
17 00 00 movdqa XMMWORD PTR sum17$105[rbp], xmm0
00f26 66 0f 6f 85 a0
00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
00f2e 66 0f fd 85 00
01 00 00 paddw xmm0, XMMWORD PTR row5$[rbp]
00f36 66 0f 7f 85 50
17 00 00 movdqa XMMWORD PTR sum35$106[rbp], xmm0
00f3e 66 0f 6f 85 20
17 00 00 movdqa xmm0, XMMWORD PTR sum17$105[rbp]
00f46 66 0f 61 85 50
17 00 00 punpcklwd xmm0, XMMWORD PTR sum35$106[rbp]
00f4e 66 0f 7f 85 80
17 00 00 movdqa XMMWORD PTR rot1_0lo$107[rbp], xmm0
00f56 66 0f 6f 85 20
17 00 00 movdqa xmm0, XMMWORD PTR sum17$105[rbp]
00f5e 66 0f 69 85 50
17 00 00 punpckhwd xmm0, XMMWORD PTR sum35$106[rbp]
00f66 66 0f 7f 85 b0
17 00 00 movdqa XMMWORD PTR rot1_0hi$108[rbp], xmm0
00f6e 66 0f 6f 85 80
17 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$107[rbp]
00f76 66 0f f5 85 20
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
00f7e 66 0f 7f 85 e0
17 00 00 movdqa XMMWORD PTR y4o_l$109[rbp], xmm0
00f86 66 0f 6f 85 b0
17 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$108[rbp]
00f8e 66 0f f5 85 20
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
00f96 66 0f 7f 85 10
18 00 00 movdqa XMMWORD PTR y4o_h$110[rbp], xmm0
00f9e 66 0f 6f 85 80
17 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$107[rbp]
00fa6 66 0f f5 85 50
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
00fae 66 0f 7f 85 40
18 00 00 movdqa XMMWORD PTR y5o_l$111[rbp], xmm0
00fb6 66 0f 6f 85 b0
17 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$108[rbp]
00fbe 66 0f f5 85 50
02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
00fc6 66 0f 7f 85 70
18 00 00 movdqa XMMWORD PTR y5o_h$112[rbp], xmm0
00fce 66 0f 6f 85 40
15 00 00 movdqa xmm0, XMMWORD PTR y0o_l$95[rbp]
00fd6 66 0f fe 85 e0
17 00 00 paddd xmm0, XMMWORD PTR y4o_l$109[rbp]
00fde 66 0f 7f 85 a0
18 00 00 movdqa XMMWORD PTR x4_l$113[rbp], xmm0
00fe6 66 0f 6f 85 70
15 00 00 movdqa xmm0, XMMWORD PTR y0o_h$96[rbp]
00fee 66 0f fe 85 10
18 00 00 paddd xmm0, XMMWORD PTR y4o_h$110[rbp]
00ff6 66 0f 7f 85 d0
18 00 00 movdqa XMMWORD PTR x4_h$114[rbp], xmm0
00ffe 66 0f 6f 85 60
16 00 00 movdqa xmm0, XMMWORD PTR y1o_l$101[rbp]
01006 66 0f fe 85 40
18 00 00 paddd xmm0, XMMWORD PTR y5o_l$111[rbp]
0100e 66 0f 7f 85 00
19 00 00 movdqa XMMWORD PTR x5_l$115[rbp], xmm0
01016 66 0f 6f 85 90
16 00 00 movdqa xmm0, XMMWORD PTR y1o_h$102[rbp]
0101e 66 0f fe 85 70
18 00 00 paddd xmm0, XMMWORD PTR y5o_h$112[rbp]
01026 66 0f 7f 85 30
19 00 00 movdqa XMMWORD PTR x5_h$116[rbp], xmm0
0102e 66 0f 6f 85 a0
15 00 00 movdqa xmm0, XMMWORD PTR y2o_l$97[rbp]
01036 66 0f fe 85 40
18 00 00 paddd xmm0, XMMWORD PTR y5o_l$111[rbp]
0103e 66 0f 7f 85 60
19 00 00 movdqa XMMWORD PTR x6_l$117[rbp], xmm0
01046 66 0f 6f 85 d0
15 00 00 movdqa xmm0, XMMWORD PTR y2o_h$98[rbp]
0104e 66 0f fe 85 70
18 00 00 paddd xmm0, XMMWORD PTR y5o_h$112[rbp]
01056 66 0f 7f 85 90
19 00 00 movdqa XMMWORD PTR x6_h$118[rbp], xmm0
0105e 66 0f 6f 85 c0
16 00 00 movdqa xmm0, XMMWORD PTR y3o_l$103[rbp]
01066 66 0f fe 85 e0
17 00 00 paddd xmm0, XMMWORD PTR y4o_l$109[rbp]
0106e 66 0f 7f 85 c0
19 00 00 movdqa XMMWORD PTR x7_l$119[rbp], xmm0
01076 66 0f 6f 85 f0
16 00 00 movdqa xmm0, XMMWORD PTR y3o_h$104[rbp]
0107e 66 0f fe 85 10
18 00 00 paddd xmm0, XMMWORD PTR y4o_h$110[rbp]
01086 66 0f 7f 85 f0
19 00 00 movdqa XMMWORD PTR x7_h$120[rbp], xmm0
0108e 66 0f 6f 85 60
13 00 00 movdqa xmm0, XMMWORD PTR x0_l$85[rbp]
01096 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
0109e 66 0f 7f 85 20
1a 00 00 movdqa XMMWORD PTR abiased_l$121[rbp], xmm0
010a6 66 0f 6f 85 90
13 00 00 movdqa xmm0, XMMWORD PTR x0_h$86[rbp]
010ae 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
010b6 66 0f 7f 85 50
1a 00 00 movdqa XMMWORD PTR abiased_h$122[rbp], xmm0
010be 66 0f 6f 85 20
1a 00 00 movdqa xmm0, XMMWORD PTR abiased_l$121[rbp]
010c6 66 0f fe 85 c0
19 00 00 paddd xmm0, XMMWORD PTR x7_l$119[rbp]
010ce 66 0f 7f 85 80
1a 00 00 movdqa XMMWORD PTR sum_l$123[rbp], xmm0
010d6 66 0f 6f 85 50
1a 00 00 movdqa xmm0, XMMWORD PTR abiased_h$122[rbp]
010de 66 0f fe 85 f0
19 00 00 paddd xmm0, XMMWORD PTR x7_h$120[rbp]
010e6 66 0f 7f 85 b0
1a 00 00 movdqa XMMWORD PTR sum_h$124[rbp], xmm0
010ee 66 0f 6f 85 20
1a 00 00 movdqa xmm0, XMMWORD PTR abiased_l$121[rbp]
010f6 66 0f fa 85 c0
19 00 00 psubd xmm0, XMMWORD PTR x7_l$119[rbp]
010fe 66 0f 7f 85 e0
1a 00 00 movdqa XMMWORD PTR dif_l$125[rbp], xmm0
01106 66 0f 6f 85 50
1a 00 00 movdqa xmm0, XMMWORD PTR abiased_h$122[rbp]
0110e 66 0f fa 85 f0
19 00 00 psubd xmm0, XMMWORD PTR x7_h$120[rbp]
01116 66 0f 7f 85 10
1b 00 00 movdqa XMMWORD PTR dif_h$126[rbp], xmm0
0111e 66 0f 6f 85 b0
1a 00 00 movdqa xmm0, XMMWORD PTR sum_h$124[rbp]
01126 66 0f 72 e0 11 psrad xmm0, 17
0112b 66 0f 6f 8d 80
1a 00 00 movdqa xmm1, XMMWORD PTR sum_l$123[rbp]
01133 66 0f 72 e1 11 psrad xmm1, 17
01138 66 0f 6b c8 packssdw xmm1, xmm0
0113c 66 0f 6f c1 movdqa xmm0, xmm1
01140 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
01145 66 0f 6f 85 10
1b 00 00 movdqa xmm0, XMMWORD PTR dif_h$126[rbp]
0114d 66 0f 72 e0 11 psrad xmm0, 17
01152 66 0f 6f 8d e0
1a 00 00 movdqa xmm1, XMMWORD PTR dif_l$125[rbp]
0115a 66 0f 72 e1 11 psrad xmm1, 17
0115f 66 0f 6b c8 packssdw xmm1, xmm0
01163 66 0f 6f c1 movdqa xmm0, xmm1
01167 66 0f 7f 85 60
01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
0116f 66 0f 6f 85 20
14 00 00 movdqa xmm0, XMMWORD PTR x1_l$89[rbp]
01177 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
0117f 66 0f 7f 85 40
1b 00 00 movdqa XMMWORD PTR abiased_l$127[rbp], xmm0
01187 66 0f 6f 85 50
14 00 00 movdqa xmm0, XMMWORD PTR x1_h$90[rbp]
0118f 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
01197 66 0f 7f 85 70
1b 00 00 movdqa XMMWORD PTR abiased_h$128[rbp], xmm0
0119f 66 0f 6f 85 40
1b 00 00 movdqa xmm0, XMMWORD PTR abiased_l$127[rbp]
011a7 66 0f fe 85 60
19 00 00 paddd xmm0, XMMWORD PTR x6_l$117[rbp]
011af 66 0f 7f 85 a0
1b 00 00 movdqa XMMWORD PTR sum_l$129[rbp], xmm0
011b7 66 0f 6f 85 70
1b 00 00 movdqa xmm0, XMMWORD PTR abiased_h$128[rbp]
011bf 66 0f fe 85 90
19 00 00 paddd xmm0, XMMWORD PTR x6_h$118[rbp]
011c7 66 0f 7f 85 d0
1b 00 00 movdqa XMMWORD PTR sum_h$130[rbp], xmm0
011cf 66 0f 6f 85 40
1b 00 00 movdqa xmm0, XMMWORD PTR abiased_l$127[rbp]
011d7 66 0f fa 85 60
19 00 00 psubd xmm0, XMMWORD PTR x6_l$117[rbp]
011df 66 0f 7f 85 00
1c 00 00 movdqa XMMWORD PTR dif_l$131[rbp], xmm0
011e7 66 0f 6f 85 70
1b 00 00 movdqa xmm0, XMMWORD PTR abiased_h$128[rbp]
011ef 66 0f fa 85 90
19 00 00 psubd xmm0, XMMWORD PTR x6_h$118[rbp]
011f7 66 0f 7f 85 30
1c 00 00 movdqa XMMWORD PTR dif_h$132[rbp], xmm0
011ff 66 0f 6f 85 d0
1b 00 00 movdqa xmm0, XMMWORD PTR sum_h$130[rbp]
01207 66 0f 72 e0 11 psrad xmm0, 17
0120c 66 0f 6f 8d a0
1b 00 00 movdqa xmm1, XMMWORD PTR sum_l$129[rbp]
01214 66 0f 72 e1 11 psrad xmm1, 17
01219 66 0f 6b c8 packssdw xmm1, xmm0
0121d 66 0f 6f c1 movdqa xmm0, xmm1
01221 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
01226 66 0f 6f 85 30
1c 00 00 movdqa xmm0, XMMWORD PTR dif_h$132[rbp]
0122e 66 0f 72 e0 11 psrad xmm0, 17
01233 66 0f 6f 8d 00
1c 00 00 movdqa xmm1, XMMWORD PTR dif_l$131[rbp]
0123b 66 0f 72 e1 11 psrad xmm1, 17
01240 66 0f 6b c8 packssdw xmm1, xmm0
01244 66 0f 6f c1 movdqa xmm0, xmm1
01248 66 0f 7f 85 30
01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
01250 66 0f 6f 85 80
14 00 00 movdqa xmm0, XMMWORD PTR x2_l$91[rbp]
01258 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
01260 66 0f 7f 85 60
1c 00 00 movdqa XMMWORD PTR abiased_l$133[rbp], xmm0
01268 66 0f 6f 85 b0
14 00 00 movdqa xmm0, XMMWORD PTR x2_h$92[rbp]
01270 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
01278 66 0f 7f 85 90
1c 00 00 movdqa XMMWORD PTR abiased_h$134[rbp], xmm0
01280 66 0f 6f 85 60
1c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$133[rbp]
01288 66 0f fe 85 00
19 00 00 paddd xmm0, XMMWORD PTR x5_l$115[rbp]
01290 66 0f 7f 85 c0
1c 00 00 movdqa XMMWORD PTR sum_l$135[rbp], xmm0
01298 66 0f 6f 85 90
1c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$134[rbp]
012a0 66 0f fe 85 30
19 00 00 paddd xmm0, XMMWORD PTR x5_h$116[rbp]
012a8 66 0f 7f 85 f0
1c 00 00 movdqa XMMWORD PTR sum_h$136[rbp], xmm0
012b0 66 0f 6f 85 60
1c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$133[rbp]
012b8 66 0f fa 85 00
19 00 00 psubd xmm0, XMMWORD PTR x5_l$115[rbp]
012c0 66 0f 7f 85 20
1d 00 00 movdqa XMMWORD PTR dif_l$137[rbp], xmm0
012c8 66 0f 6f 85 90
1c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$134[rbp]
012d0 66 0f fa 85 30
19 00 00 psubd xmm0, XMMWORD PTR x5_h$116[rbp]
012d8 66 0f 7f 85 50
1d 00 00 movdqa XMMWORD PTR dif_h$138[rbp], xmm0
012e0 66 0f 6f 85 f0
1c 00 00 movdqa xmm0, XMMWORD PTR sum_h$136[rbp]
012e8 66 0f 72 e0 11 psrad xmm0, 17
012ed 66 0f 6f 8d c0
1c 00 00 movdqa xmm1, XMMWORD PTR sum_l$135[rbp]
012f5 66 0f 72 e1 11 psrad xmm1, 17
012fa 66 0f 6b c8 packssdw xmm1, xmm0
012fe 66 0f 6f c1 movdqa xmm0, xmm1
01302 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
01307 66 0f 6f 85 50
1d 00 00 movdqa xmm0, XMMWORD PTR dif_h$138[rbp]
0130f 66 0f 72 e0 11 psrad xmm0, 17
01314 66 0f 6f 8d 20
1d 00 00 movdqa xmm1, XMMWORD PTR dif_l$137[rbp]
0131c 66 0f 72 e1 11 psrad xmm1, 17
01321 66 0f 6b c8 packssdw xmm1, xmm0
01325 66 0f 6f c1 movdqa xmm0, xmm1
01329 66 0f 7f 85 00
01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
01331 66 0f 6f 85 c0
13 00 00 movdqa xmm0, XMMWORD PTR x3_l$87[rbp]
01339 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
01341 66 0f 7f 85 80
1d 00 00 movdqa XMMWORD PTR abiased_l$139[rbp], xmm0
01349 66 0f 6f 85 f0
13 00 00 movdqa xmm0, XMMWORD PTR x3_h$88[rbp]
01351 66 0f fe 85 70
03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
01359 66 0f 7f 85 b0
1d 00 00 movdqa XMMWORD PTR abiased_h$140[rbp], xmm0
01361 66 0f 6f 85 80
1d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$139[rbp]
01369 66 0f fe 85 a0
18 00 00 paddd xmm0, XMMWORD PTR x4_l$113[rbp]
01371 66 0f 7f 85 e0
1d 00 00 movdqa XMMWORD PTR sum_l$141[rbp], xmm0
01379 66 0f 6f 85 b0
1d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$140[rbp]
01381 66 0f fe 85 d0
18 00 00 paddd xmm0, XMMWORD PTR x4_h$114[rbp]
01389 66 0f 7f 85 10
1e 00 00 movdqa XMMWORD PTR sum_h$142[rbp], xmm0
01391 66 0f 6f 85 80
1d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$139[rbp]
01399 66 0f fa 85 a0
18 00 00 psubd xmm0, XMMWORD PTR x4_l$113[rbp]
013a1 66 0f 7f 85 40
1e 00 00 movdqa XMMWORD PTR dif_l$143[rbp], xmm0
013a9 66 0f 6f 85 b0
1d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$140[rbp]
013b1 66 0f fa 85 d0
18 00 00 psubd xmm0, XMMWORD PTR x4_h$114[rbp]
013b9 66 0f 7f 85 70
1e 00 00 movdqa XMMWORD PTR dif_h$144[rbp], xmm0
013c1 66 0f 6f 85 10
1e 00 00 movdqa xmm0, XMMWORD PTR sum_h$142[rbp]
013c9 66 0f 72 e0 11 psrad xmm0, 17
013ce 66 0f 6f 8d e0
1d 00 00 movdqa xmm1, XMMWORD PTR sum_l$141[rbp]
013d6 66 0f 72 e1 11 psrad xmm1, 17
013db 66 0f 6b c8 packssdw xmm1, xmm0
013df 66 0f 6f c1 movdqa xmm0, xmm1
013e3 66 0f 7f 85 a0
00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
013eb 66 0f 6f 85 70
1e 00 00 movdqa xmm0, XMMWORD PTR dif_h$144[rbp]
013f3 66 0f 72 e0 11 psrad xmm0, 17
013f8 66 0f 6f 8d 40
1e 00 00 movdqa xmm1, XMMWORD PTR dif_l$143[rbp]
01400 66 0f 72 e1 11 psrad xmm1, 17
01405 66 0f 6b c8 packssdw xmm1, xmm0
01409 66 0f 6f c1 movdqa xmm0, xmm1
0140d 66 0f 7f 85 d0
00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
; 2953 :
; 2954 : {
; 2955 : // pack
; 2956 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7
01415 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
0141a 66 0f 67 45 40 packuswb xmm0, XMMWORD PTR row1$[rbp]
0141f 66 0f 7f 85 a0
1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
; 2957 : __m128i p1 = _mm_packus_epi16(row2, row3);
01427 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
0142c 66 0f 67 85 a0
00 00 00 packuswb xmm0, XMMWORD PTR row3$[rbp]
01434 66 0f 7f 85 d0
1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
; 2958 : __m128i p2 = _mm_packus_epi16(row4, row5);
0143c 66 0f 6f 85 d0
00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
01444 66 0f 67 85 00
01 00 00 packuswb xmm0, XMMWORD PTR row5$[rbp]
0144c 66 0f 7f 85 00
1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
; 2959 : __m128i p3 = _mm_packus_epi16(row6, row7);
01454 66 0f 6f 85 30
01 00 00 movdqa xmm0, XMMWORD PTR row6$[rbp]
0145c 66 0f 67 85 60
01 00 00 packuswb xmm0, XMMWORD PTR row7$[rbp]
01464 66 0f 7f 85 30
1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
; 2960 :
; 2961 : // 8bit 8x8 transpose pass 1
; 2962 : dct_interleave8(p0, p2); // a0e0a1e1...
0146c 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
01474 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
0147c 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
01484 66 0f 60 85 00
1f 00 00 punpcklbw xmm0, XMMWORD PTR p2$147[rbp]
0148c 66 0f 7f 85 a0
1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
01494 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
0149c 66 0f 68 85 00
1f 00 00 punpckhbw xmm0, XMMWORD PTR p2$147[rbp]
014a4 66 0f 7f 85 00
1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
; 2963 : dct_interleave8(p1, p3); // c0g0c1g1...
014ac 66 0f 6f 85 d0
1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
014b4 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
014bc 66 0f 6f 85 d0
1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
014c4 66 0f 60 85 30
1f 00 00 punpcklbw xmm0, XMMWORD PTR p3$148[rbp]
014cc 66 0f 7f 85 d0
1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
014d4 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
014dc 66 0f 68 85 30
1f 00 00 punpckhbw xmm0, XMMWORD PTR p3$148[rbp]
014e4 66 0f 7f 85 30
1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
; 2964 :
; 2965 : // transpose pass 2
; 2966 : dct_interleave8(p0, p1); // a0c0e0g0...
014ec 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
014f4 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
014fc 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
01504 66 0f 60 85 d0
1e 00 00 punpcklbw xmm0, XMMWORD PTR p1$146[rbp]
0150c 66 0f 7f 85 a0
1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
01514 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
0151c 66 0f 68 85 d0
1e 00 00 punpckhbw xmm0, XMMWORD PTR p1$146[rbp]
01524 66 0f 7f 85 d0
1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
; 2967 : dct_interleave8(p2, p3); // b0d0f0h0...
0152c 66 0f 6f 85 00
1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
01534 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
0153c 66 0f 6f 85 00
1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
01544 66 0f 60 85 30
1f 00 00 punpcklbw xmm0, XMMWORD PTR p3$148[rbp]
0154c 66 0f 7f 85 00
1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
01554 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
0155c 66 0f 68 85 30
1f 00 00 punpckhbw xmm0, XMMWORD PTR p3$148[rbp]
01564 66 0f 7f 85 30
1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
; 2968 :
; 2969 : // transpose pass 3
; 2970 : dct_interleave8(p0, p2); // a0b0c0d0...
0156c 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
01574 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
0157c 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
01584 66 0f 60 85 00
1f 00 00 punpcklbw xmm0, XMMWORD PTR p2$147[rbp]
0158c 66 0f 7f 85 a0
1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
01594 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
0159c 66 0f 68 85 00
1f 00 00 punpckhbw xmm0, XMMWORD PTR p2$147[rbp]
015a4 66 0f 7f 85 00
1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
; 2971 : dct_interleave8(p1, p3); // a4b4c4d4...
015ac 66 0f 6f 85 d0
1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
015b4 66 0f 7f 85 90
01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
015bc 66 0f 6f 85 d0
1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
015c4 66 0f 60 85 30
1f 00 00 punpcklbw xmm0, XMMWORD PTR p3$148[rbp]
015cc 66 0f 7f 85 d0
1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
015d4 66 0f 6f 85 90
01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
015dc 66 0f 68 85 30
1f 00 00 punpckhbw xmm0, XMMWORD PTR p3$148[rbp]
015e4 66 0f 7f 85 30
1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
; 2972 :
; 2973 : // store
; 2974 : _mm_storel_epi64((__m128i *)out, p0);
015ec 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
015f3 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
015fb 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2975 : out += out_stride;
015ff 48 63 85 78 25
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
01606 48 8b 8d 70 25
00 00 mov rcx, QWORD PTR out$[rbp]
0160d 48 03 c8 add rcx, rax
01610 48 8b c1 mov rax, rcx
01613 48 89 85 70 25
00 00 mov QWORD PTR out$[rbp], rax
; 2976 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p0, 0x4e));
0161a 66 0f 6f 85 a0
1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
01622 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
01627 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
0162e 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2977 : out += out_stride;
01632 48 63 85 78 25
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
01639 48 8b 8d 70 25
00 00 mov rcx, QWORD PTR out$[rbp]
01640 48 03 c8 add rcx, rax
01643 48 8b c1 mov rax, rcx
01646 48 89 85 70 25
00 00 mov QWORD PTR out$[rbp], rax
; 2978 : _mm_storel_epi64((__m128i *)out, p2);
0164d 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
01654 66 0f 6f 85 00
1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
0165c 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2979 : out += out_stride;
01660 48 63 85 78 25
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
01667 48 8b 8d 70 25
00 00 mov rcx, QWORD PTR out$[rbp]
0166e 48 03 c8 add rcx, rax
01671 48 8b c1 mov rax, rcx
01674 48 89 85 70 25
00 00 mov QWORD PTR out$[rbp], rax
; 2980 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p2, 0x4e));
0167b 66 0f 6f 85 00
1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
01683 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
01688 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
0168f 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2981 : out += out_stride;
01693 48 63 85 78 25
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
0169a 48 8b 8d 70 25
00 00 mov rcx, QWORD PTR out$[rbp]
016a1 48 03 c8 add rcx, rax
016a4 48 8b c1 mov rax, rcx
016a7 48 89 85 70 25
00 00 mov QWORD PTR out$[rbp], rax
; 2982 : _mm_storel_epi64((__m128i *)out, p1);
016ae 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
016b5 66 0f 6f 85 d0
1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
016bd 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2983 : out += out_stride;
016c1 48 63 85 78 25
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
016c8 48 8b 8d 70 25
00 00 mov rcx, QWORD PTR out$[rbp]
016cf 48 03 c8 add rcx, rax
016d2 48 8b c1 mov rax, rcx
016d5 48 89 85 70 25
00 00 mov QWORD PTR out$[rbp], rax
; 2984 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p1, 0x4e));
016dc 66 0f 6f 85 d0
1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
016e4 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
016e9 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
016f0 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2985 : out += out_stride;
016f4 48 63 85 78 25
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
016fb 48 8b 8d 70 25
00 00 mov rcx, QWORD PTR out$[rbp]
01702 48 03 c8 add rcx, rax
01705 48 8b c1 mov rax, rcx
01708 48 89 85 70 25
00 00 mov QWORD PTR out$[rbp], rax
; 2986 : _mm_storel_epi64((__m128i *)out, p3);
0170f 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
01716 66 0f 6f 85 30
1f 00 00 movdqa xmm0, XMMWORD PTR p3$148[rbp]
0171e 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2987 : out += out_stride;
01722 48 63 85 78 25
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
01729 48 8b 8d 70 25
00 00 mov rcx, QWORD PTR out$[rbp]
01730 48 03 c8 add rcx, rax
01733 48 8b c1 mov rax, rcx
01736 48 89 85 70 25
00 00 mov QWORD PTR out$[rbp], rax
; 2988 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p3, 0x4e));
0173d 66 0f 6f 85 30
1f 00 00 movdqa xmm0, XMMWORD PTR p3$148[rbp]
01745 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
0174a 48 8b 85 70 25
00 00 mov rax, QWORD PTR out$[rbp]
01751 66 0f d6 00 movq QWORD PTR [rax], xmm0
; 2989 : }
; 2990 :
; 2991 : #undef dct_const
; 2992 : #undef dct_rot
; 2993 : #undef dct_widen
; 2994 : #undef dct_wadd
; 2995 : #undef dct_wsub
; 2996 : #undef dct_bfly32o
; 2997 : #undef dct_interleave8
; 2998 : #undef dct_interleave16
; 2999 : #undef dct_pass
; 3000 : }
01755 48 8d a5 58 25
00 00 lea rsp, QWORD PTR [rbp+9560]
0175c 5f pop rdi
0175d 5d pop rbp
0175e c3 ret 0
stbi__idct_simd ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__idct_block
_TEXT SEGMENT
i$ = 4
val$ = 48
v$ = 328
o$ = 360
d$ = 392
dcterm$4 = 420
t0$5 = 452
t1$6 = 484
t2$7 = 516
t3$8 = 548
p1$9 = 580
p2$10 = 612
p3$11 = 644
p4$12 = 676
p5$13 = 708
x0$14 = 740
x1$15 = 772
x2$16 = 804
x3$17 = 836
t0$18 = 868
t1$19 = 900
t2$20 = 932
t3$21 = 964
p1$22 = 996
p2$23 = 1028
p3$24 = 1060
p4$25 = 1092
p5$26 = 1124
x0$27 = 1156
x1$28 = 1188
x2$29 = 1220
x3$30 = 1252
__$ArrayPad$ = 1848
out$ = 1888
out_stride$ = 1896
data$ = 1904
stbi__idct_block PROC ; COMDAT
; 2747 : {
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 48 81 ec 68 07
00 00 sub rsp, 1896 ; 00000768H
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001c 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00021 b9 42 01 00 00 mov ecx, 322 ; 00000142H
00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
0002b f3 ab rep stosd
0002d 48 8b 8c 24 88
07 00 00 mov rcx, QWORD PTR [rsp+1928]
00035 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
0003c 48 33 c5 xor rax, rbp
0003f 48 89 85 38 07
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00046 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0004d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00052 90 npad 1
; 2748 : int i, val[64], *v = val;
00053 48 8d 45 30 lea rax, QWORD PTR val$[rbp]
00057 48 89 85 48 01
00 00 mov QWORD PTR v$[rbp], rax
; 2749 : stbi_uc *o;
; 2750 : short *d = data;
0005e 48 8b 85 70 07
00 00 mov rax, QWORD PTR data$[rbp]
00065 48 89 85 88 01
00 00 mov QWORD PTR d$[rbp], rax
; 2751 :
; 2752 : // columns
; 2753 : for (i = 0; i < 8; ++i, ++d, ++v) {
0006c c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00073 eb 2c jmp SHORT $LN4@stbi__idct
$LN2@stbi__idct:
00075 8b 45 04 mov eax, DWORD PTR i$[rbp]
00078 ff c0 inc eax
0007a 89 45 04 mov DWORD PTR i$[rbp], eax
0007d 48 8b 85 88 01
00 00 mov rax, QWORD PTR d$[rbp]
00084 48 83 c0 02 add rax, 2
00088 48 89 85 88 01
00 00 mov QWORD PTR d$[rbp], rax
0008f 48 8b 85 48 01
00 00 mov rax, QWORD PTR v$[rbp]
00096 48 83 c0 04 add rax, 4
0009a 48 89 85 48 01
00 00 mov QWORD PTR v$[rbp], rax
$LN4@stbi__idct:
000a1 83 7d 04 08 cmp DWORD PTR i$[rbp], 8
000a5 0f 8d 5f 06 00
00 jge $LN3@stbi__idct
; 2754 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing
; 2755 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 && d[40] == 0 &&
; 2756 : d[48] == 0 && d[56] == 0) {
000ab b8 02 00 00 00 mov eax, 2
000b0 48 6b c0 08 imul rax, rax, 8
000b4 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
000bb 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
000bf 85 c0 test eax, eax
000c1 0f 85 92 01 00
00 jne $LN8@stbi__idct
000c7 b8 02 00 00 00 mov eax, 2
000cc 48 6b c0 10 imul rax, rax, 16
000d0 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
000d7 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
000db 85 c0 test eax, eax
000dd 0f 85 76 01 00
00 jne $LN8@stbi__idct
000e3 b8 02 00 00 00 mov eax, 2
000e8 48 6b c0 18 imul rax, rax, 24
000ec 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
000f3 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
000f7 85 c0 test eax, eax
000f9 0f 85 5a 01 00
00 jne $LN8@stbi__idct
000ff b8 02 00 00 00 mov eax, 2
00104 48 6b c0 20 imul rax, rax, 32 ; 00000020H
00108 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
0010f 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
00113 85 c0 test eax, eax
00115 0f 85 3e 01 00
00 jne $LN8@stbi__idct
0011b b8 02 00 00 00 mov eax, 2
00120 48 6b c0 28 imul rax, rax, 40 ; 00000028H
00124 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
0012b 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
0012f 85 c0 test eax, eax
00131 0f 85 22 01 00
00 jne $LN8@stbi__idct
00137 b8 02 00 00 00 mov eax, 2
0013c 48 6b c0 30 imul rax, rax, 48 ; 00000030H
00140 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
00147 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
0014b 85 c0 test eax, eax
0014d 0f 85 06 01 00
00 jne $LN8@stbi__idct
00153 b8 02 00 00 00 mov eax, 2
00158 48 6b c0 38 imul rax, rax, 56 ; 00000038H
0015c 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
00163 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
00167 85 c0 test eax, eax
00169 0f 85 ea 00 00
00 jne $LN8@stbi__idct
; 2757 : // no shortcut 0 seconds
; 2758 : // (1|2|3|4|5|6|7)==0 0 seconds
; 2759 : // all separate -0.047 seconds
; 2760 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds
; 2761 : int dcterm = d[0] * 4;
0016f b8 02 00 00 00 mov eax, 2
00174 48 6b c0 00 imul rax, rax, 0
00178 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
0017f 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
00183 c1 e0 02 shl eax, 2
00186 89 85 a4 01 00
00 mov DWORD PTR dcterm$4[rbp], eax
; 2762 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm;
0018c b8 04 00 00 00 mov eax, 4
00191 48 6b c0 38 imul rax, rax, 56 ; 00000038H
00195 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
0019c 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
001a2 89 14 01 mov DWORD PTR [rcx+rax], edx
001a5 b8 04 00 00 00 mov eax, 4
001aa 48 6b c0 30 imul rax, rax, 48 ; 00000030H
001ae 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
001b5 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
001bb 89 14 01 mov DWORD PTR [rcx+rax], edx
001be b8 04 00 00 00 mov eax, 4
001c3 48 6b c0 28 imul rax, rax, 40 ; 00000028H
001c7 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
001ce 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
001d4 89 14 01 mov DWORD PTR [rcx+rax], edx
001d7 b8 04 00 00 00 mov eax, 4
001dc 48 6b c0 20 imul rax, rax, 32 ; 00000020H
001e0 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
001e7 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
001ed 89 14 01 mov DWORD PTR [rcx+rax], edx
001f0 b8 04 00 00 00 mov eax, 4
001f5 48 6b c0 18 imul rax, rax, 24
001f9 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
00200 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
00206 89 14 01 mov DWORD PTR [rcx+rax], edx
00209 b8 04 00 00 00 mov eax, 4
0020e 48 6b c0 10 imul rax, rax, 16
00212 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
00219 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
0021f 89 14 01 mov DWORD PTR [rcx+rax], edx
00222 b8 04 00 00 00 mov eax, 4
00227 48 6b c0 08 imul rax, rax, 8
0022b 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
00232 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
00238 89 14 01 mov DWORD PTR [rcx+rax], edx
0023b b8 04 00 00 00 mov eax, 4
00240 48 6b c0 00 imul rax, rax, 0
00244 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
0024b 8b 95 a4 01 00
00 mov edx, DWORD PTR dcterm$4[rbp]
00251 89 14 01 mov DWORD PTR [rcx+rax], edx
; 2763 : } else {
00254 e9 ac 04 00 00 jmp $LN9@stbi__idct
$LN8@stbi__idct:
; 2764 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56])
00259 b8 02 00 00 00 mov eax, 2
0025e 48 6b c0 10 imul rax, rax, 16
00262 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
00269 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
0026d 89 85 64 02 00
00 mov DWORD PTR p2$10[rbp], eax
00273 b8 02 00 00 00 mov eax, 2
00278 48 6b c0 30 imul rax, rax, 48 ; 00000030H
0027c 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
00283 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
00287 89 85 84 02 00
00 mov DWORD PTR p3$11[rbp], eax
0028d 8b 85 84 02 00
00 mov eax, DWORD PTR p3$11[rbp]
00293 8b 8d 64 02 00
00 mov ecx, DWORD PTR p2$10[rbp]
00299 03 c8 add ecx, eax
0029b 8b c1 mov eax, ecx
0029d 69 c0 a9 08 00
00 imul eax, eax, 2217 ; 000008a9H
002a3 89 85 44 02 00
00 mov DWORD PTR p1$9[rbp], eax
002a9 69 85 84 02 00
00 71 e2 ff ff imul eax, DWORD PTR p3$11[rbp], -7567 ; ffffffffffffe271H
002b3 8b 8d 44 02 00
00 mov ecx, DWORD PTR p1$9[rbp]
002b9 03 c8 add ecx, eax
002bb 8b c1 mov eax, ecx
002bd 89 85 04 02 00
00 mov DWORD PTR t2$7[rbp], eax
002c3 69 85 64 02 00
00 3f 0c 00 00 imul eax, DWORD PTR p2$10[rbp], 3135 ; 00000c3fH
002cd 8b 8d 44 02 00
00 mov ecx, DWORD PTR p1$9[rbp]
002d3 03 c8 add ecx, eax
002d5 8b c1 mov eax, ecx
002d7 89 85 24 02 00
00 mov DWORD PTR t3$8[rbp], eax
002dd b8 02 00 00 00 mov eax, 2
002e2 48 6b c0 00 imul rax, rax, 0
002e6 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
002ed 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
002f1 89 85 64 02 00
00 mov DWORD PTR p2$10[rbp], eax
002f7 b8 02 00 00 00 mov eax, 2
002fc 48 6b c0 20 imul rax, rax, 32 ; 00000020H
00300 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
00307 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
0030b 89 85 84 02 00
00 mov DWORD PTR p3$11[rbp], eax
00311 8b 85 84 02 00
00 mov eax, DWORD PTR p3$11[rbp]
00317 8b 8d 64 02 00
00 mov ecx, DWORD PTR p2$10[rbp]
0031d 03 c8 add ecx, eax
0031f 8b c1 mov eax, ecx
00321 69 c0 00 10 00
00 imul eax, eax, 4096 ; 00001000H
00327 89 85 c4 01 00
00 mov DWORD PTR t0$5[rbp], eax
0032d 8b 85 84 02 00
00 mov eax, DWORD PTR p3$11[rbp]
00333 8b 8d 64 02 00
00 mov ecx, DWORD PTR p2$10[rbp]
00339 2b c8 sub ecx, eax
0033b 8b c1 mov eax, ecx
0033d 69 c0 00 10 00
00 imul eax, eax, 4096 ; 00001000H
00343 89 85 e4 01 00
00 mov DWORD PTR t1$6[rbp], eax
00349 8b 85 24 02 00
00 mov eax, DWORD PTR t3$8[rbp]
0034f 8b 8d c4 01 00
00 mov ecx, DWORD PTR t0$5[rbp]
00355 03 c8 add ecx, eax
00357 8b c1 mov eax, ecx
00359 89 85 e4 02 00
00 mov DWORD PTR x0$14[rbp], eax
0035f 8b 85 24 02 00
00 mov eax, DWORD PTR t3$8[rbp]
00365 8b 8d c4 01 00
00 mov ecx, DWORD PTR t0$5[rbp]
0036b 2b c8 sub ecx, eax
0036d 8b c1 mov eax, ecx
0036f 89 85 44 03 00
00 mov DWORD PTR x3$17[rbp], eax
00375 8b 85 04 02 00
00 mov eax, DWORD PTR t2$7[rbp]
0037b 8b 8d e4 01 00
00 mov ecx, DWORD PTR t1$6[rbp]
00381 03 c8 add ecx, eax
00383 8b c1 mov eax, ecx
00385 89 85 04 03 00
00 mov DWORD PTR x1$15[rbp], eax
0038b 8b 85 04 02 00
00 mov eax, DWORD PTR t2$7[rbp]
00391 8b 8d e4 01 00
00 mov ecx, DWORD PTR t1$6[rbp]
00397 2b c8 sub ecx, eax
00399 8b c1 mov eax, ecx
0039b 89 85 24 03 00
00 mov DWORD PTR x2$16[rbp], eax
003a1 b8 02 00 00 00 mov eax, 2
003a6 48 6b c0 38 imul rax, rax, 56 ; 00000038H
003aa 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
003b1 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
003b5 89 85 c4 01 00
00 mov DWORD PTR t0$5[rbp], eax
003bb b8 02 00 00 00 mov eax, 2
003c0 48 6b c0 28 imul rax, rax, 40 ; 00000028H
003c4 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
003cb 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
003cf 89 85 e4 01 00
00 mov DWORD PTR t1$6[rbp], eax
003d5 b8 02 00 00 00 mov eax, 2
003da 48 6b c0 18 imul rax, rax, 24
003de 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
003e5 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
003e9 89 85 04 02 00
00 mov DWORD PTR t2$7[rbp], eax
003ef b8 02 00 00 00 mov eax, 2
003f4 48 6b c0 08 imul rax, rax, 8
003f8 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR d$[rbp]
003ff 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
00403 89 85 24 02 00
00 mov DWORD PTR t3$8[rbp], eax
00409 8b 85 04 02 00
00 mov eax, DWORD PTR t2$7[rbp]
0040f 8b 8d c4 01 00
00 mov ecx, DWORD PTR t0$5[rbp]
00415 03 c8 add ecx, eax
00417 8b c1 mov eax, ecx
00419 89 85 84 02 00
00 mov DWORD PTR p3$11[rbp], eax
0041f 8b 85 24 02 00
00 mov eax, DWORD PTR t3$8[rbp]
00425 8b 8d e4 01 00
00 mov ecx, DWORD PTR t1$6[rbp]
0042b 03 c8 add ecx, eax
0042d 8b c1 mov eax, ecx
0042f 89 85 a4 02 00
00 mov DWORD PTR p4$12[rbp], eax
00435 8b 85 24 02 00
00 mov eax, DWORD PTR t3$8[rbp]
0043b 8b 8d c4 01 00
00 mov ecx, DWORD PTR t0$5[rbp]
00441 03 c8 add ecx, eax
00443 8b c1 mov eax, ecx
00445 89 85 44 02 00
00 mov DWORD PTR p1$9[rbp], eax
0044b 8b 85 04 02 00
00 mov eax, DWORD PTR t2$7[rbp]
00451 8b 8d e4 01 00
00 mov ecx, DWORD PTR t1$6[rbp]
00457 03 c8 add ecx, eax
00459 8b c1 mov eax, ecx
0045b 89 85 64 02 00
00 mov DWORD PTR p2$10[rbp], eax
00461 8b 85 a4 02 00
00 mov eax, DWORD PTR p4$12[rbp]
00467 8b 8d 84 02 00
00 mov ecx, DWORD PTR p3$11[rbp]
0046d 03 c8 add ecx, eax
0046f 8b c1 mov eax, ecx
00471 69 c0 d0 12 00
00 imul eax, eax, 4816 ; 000012d0H
00477 89 85 c4 02 00
00 mov DWORD PTR p5$13[rbp], eax
0047d 69 85 c4 01 00
00 c7 04 00 00 imul eax, DWORD PTR t0$5[rbp], 1223 ; 000004c7H
00487 89 85 c4 01 00
00 mov DWORD PTR t0$5[rbp], eax
0048d 69 85 e4 01 00
00 da 20 00 00 imul eax, DWORD PTR t1$6[rbp], 8410 ; 000020daH
00497 89 85 e4 01 00
00 mov DWORD PTR t1$6[rbp], eax
0049d 69 85 04 02 00
00 2a 31 00 00 imul eax, DWORD PTR t2$7[rbp], 12586 ; 0000312aH
004a7 89 85 04 02 00
00 mov DWORD PTR t2$7[rbp], eax
004ad 69 85 24 02 00
00 05 18 00 00 imul eax, DWORD PTR t3$8[rbp], 6149 ; 00001805H
004b7 89 85 24 02 00
00 mov DWORD PTR t3$8[rbp], eax
004bd 69 85 44 02 00
00 9b f1 ff ff imul eax, DWORD PTR p1$9[rbp], -3685 ; fffffffffffff19bH
004c7 8b 8d c4 02 00
00 mov ecx, DWORD PTR p5$13[rbp]
004cd 03 c8 add ecx, eax
004cf 8b c1 mov eax, ecx
004d1 89 85 44 02 00
00 mov DWORD PTR p1$9[rbp], eax
004d7 69 85 64 02 00
00 ff d6 ff ff imul eax, DWORD PTR p2$10[rbp], -10497 ; ffffffffffffd6ffH
004e1 8b 8d c4 02 00
00 mov ecx, DWORD PTR p5$13[rbp]
004e7 03 c8 add ecx, eax
004e9 8b c1 mov eax, ecx
004eb 89 85 64 02 00
00 mov DWORD PTR p2$10[rbp], eax
004f1 69 85 84 02 00
00 9e e0 ff ff imul eax, DWORD PTR p3$11[rbp], -8034 ; ffffffffffffe09eH
004fb 89 85 84 02 00
00 mov DWORD PTR p3$11[rbp], eax
00501 69 85 a4 02 00
00 c3 f9 ff ff imul eax, DWORD PTR p4$12[rbp], -1597 ; fffffffffffff9c3H
0050b 89 85 a4 02 00
00 mov DWORD PTR p4$12[rbp], eax
00511 8b 85 a4 02 00
00 mov eax, DWORD PTR p4$12[rbp]
00517 8b 8d 44 02 00
00 mov ecx, DWORD PTR p1$9[rbp]
0051d 03 c8 add ecx, eax
0051f 8b c1 mov eax, ecx
00521 8b 8d 24 02 00
00 mov ecx, DWORD PTR t3$8[rbp]
00527 03 c8 add ecx, eax
00529 8b c1 mov eax, ecx
0052b 89 85 24 02 00
00 mov DWORD PTR t3$8[rbp], eax
00531 8b 85 84 02 00
00 mov eax, DWORD PTR p3$11[rbp]
00537 8b 8d 64 02 00
00 mov ecx, DWORD PTR p2$10[rbp]
0053d 03 c8 add ecx, eax
0053f 8b c1 mov eax, ecx
00541 8b 8d 04 02 00
00 mov ecx, DWORD PTR t2$7[rbp]
00547 03 c8 add ecx, eax
00549 8b c1 mov eax, ecx
0054b 89 85 04 02 00
00 mov DWORD PTR t2$7[rbp], eax
00551 8b 85 a4 02 00
00 mov eax, DWORD PTR p4$12[rbp]
00557 8b 8d 64 02 00
00 mov ecx, DWORD PTR p2$10[rbp]
0055d 03 c8 add ecx, eax
0055f 8b c1 mov eax, ecx
00561 8b 8d e4 01 00
00 mov ecx, DWORD PTR t1$6[rbp]
00567 03 c8 add ecx, eax
00569 8b c1 mov eax, ecx
0056b 89 85 e4 01 00
00 mov DWORD PTR t1$6[rbp], eax
00571 8b 85 84 02 00
00 mov eax, DWORD PTR p3$11[rbp]
00577 8b 8d 44 02 00
00 mov ecx, DWORD PTR p1$9[rbp]
0057d 03 c8 add ecx, eax
0057f 8b c1 mov eax, ecx
00581 8b 8d c4 01 00
00 mov ecx, DWORD PTR t0$5[rbp]
00587 03 c8 add ecx, eax
00589 8b c1 mov eax, ecx
0058b 89 85 c4 01 00
00 mov DWORD PTR t0$5[rbp], eax
; 2765 : // constants scaled things up by 1<<12; let's bring them back
; 2766 : // down, but keep 2 extra bits of precision
; 2767 : x0 += 512;
00591 8b 85 e4 02 00
00 mov eax, DWORD PTR x0$14[rbp]
00597 05 00 02 00 00 add eax, 512 ; 00000200H
0059c 89 85 e4 02 00
00 mov DWORD PTR x0$14[rbp], eax
; 2768 : x1 += 512;
005a2 8b 85 04 03 00
00 mov eax, DWORD PTR x1$15[rbp]
005a8 05 00 02 00 00 add eax, 512 ; 00000200H
005ad 89 85 04 03 00
00 mov DWORD PTR x1$15[rbp], eax
; 2769 : x2 += 512;
005b3 8b 85 24 03 00
00 mov eax, DWORD PTR x2$16[rbp]
005b9 05 00 02 00 00 add eax, 512 ; 00000200H
005be 89 85 24 03 00
00 mov DWORD PTR x2$16[rbp], eax
; 2770 : x3 += 512;
005c4 8b 85 44 03 00
00 mov eax, DWORD PTR x3$17[rbp]
005ca 05 00 02 00 00 add eax, 512 ; 00000200H
005cf 89 85 44 03 00
00 mov DWORD PTR x3$17[rbp], eax
; 2771 : v[0] = (x0 + t3) >> 10;
005d5 8b 85 24 02 00
00 mov eax, DWORD PTR t3$8[rbp]
005db 8b 8d e4 02 00
00 mov ecx, DWORD PTR x0$14[rbp]
005e1 03 c8 add ecx, eax
005e3 8b c1 mov eax, ecx
005e5 c1 f8 0a sar eax, 10
005e8 b9 04 00 00 00 mov ecx, 4
005ed 48 6b c9 00 imul rcx, rcx, 0
005f1 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
005f8 89 04 0a mov DWORD PTR [rdx+rcx], eax
; 2772 : v[56] = (x0 - t3) >> 10;
005fb 8b 85 24 02 00
00 mov eax, DWORD PTR t3$8[rbp]
00601 8b 8d e4 02 00
00 mov ecx, DWORD PTR x0$14[rbp]
00607 2b c8 sub ecx, eax
00609 8b c1 mov eax, ecx
0060b c1 f8 0a sar eax, 10
0060e b9 04 00 00 00 mov ecx, 4
00613 48 6b c9 38 imul rcx, rcx, 56 ; 00000038H
00617 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
0061e 89 04 0a mov DWORD PTR [rdx+rcx], eax
; 2773 : v[8] = (x1 + t2) >> 10;
00621 8b 85 04 02 00
00 mov eax, DWORD PTR t2$7[rbp]
00627 8b 8d 04 03 00
00 mov ecx, DWORD PTR x1$15[rbp]
0062d 03 c8 add ecx, eax
0062f 8b c1 mov eax, ecx
00631 c1 f8 0a sar eax, 10
00634 b9 04 00 00 00 mov ecx, 4
00639 48 6b c9 08 imul rcx, rcx, 8
0063d 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
00644 89 04 0a mov DWORD PTR [rdx+rcx], eax
; 2774 : v[48] = (x1 - t2) >> 10;
00647 8b 85 04 02 00
00 mov eax, DWORD PTR t2$7[rbp]
0064d 8b 8d 04 03 00
00 mov ecx, DWORD PTR x1$15[rbp]
00653 2b c8 sub ecx, eax
00655 8b c1 mov eax, ecx
00657 c1 f8 0a sar eax, 10
0065a b9 04 00 00 00 mov ecx, 4
0065f 48 6b c9 30 imul rcx, rcx, 48 ; 00000030H
00663 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
0066a 89 04 0a mov DWORD PTR [rdx+rcx], eax
; 2775 : v[16] = (x2 + t1) >> 10;
0066d 8b 85 e4 01 00
00 mov eax, DWORD PTR t1$6[rbp]
00673 8b 8d 24 03 00
00 mov ecx, DWORD PTR x2$16[rbp]
00679 03 c8 add ecx, eax
0067b 8b c1 mov eax, ecx
0067d c1 f8 0a sar eax, 10
00680 b9 04 00 00 00 mov ecx, 4
00685 48 6b c9 10 imul rcx, rcx, 16
00689 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
00690 89 04 0a mov DWORD PTR [rdx+rcx], eax
; 2776 : v[40] = (x2 - t1) >> 10;
00693 8b 85 e4 01 00
00 mov eax, DWORD PTR t1$6[rbp]
00699 8b 8d 24 03 00
00 mov ecx, DWORD PTR x2$16[rbp]
0069f 2b c8 sub ecx, eax
006a1 8b c1 mov eax, ecx
006a3 c1 f8 0a sar eax, 10
006a6 b9 04 00 00 00 mov ecx, 4
006ab 48 6b c9 28 imul rcx, rcx, 40 ; 00000028H
006af 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
006b6 89 04 0a mov DWORD PTR [rdx+rcx], eax
; 2777 : v[24] = (x3 + t0) >> 10;
006b9 8b 85 c4 01 00
00 mov eax, DWORD PTR t0$5[rbp]
006bf 8b 8d 44 03 00
00 mov ecx, DWORD PTR x3$17[rbp]
006c5 03 c8 add ecx, eax
006c7 8b c1 mov eax, ecx
006c9 c1 f8 0a sar eax, 10
006cc b9 04 00 00 00 mov ecx, 4
006d1 48 6b c9 18 imul rcx, rcx, 24
006d5 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
006dc 89 04 0a mov DWORD PTR [rdx+rcx], eax
; 2778 : v[32] = (x3 - t0) >> 10;
006df 8b 85 c4 01 00
00 mov eax, DWORD PTR t0$5[rbp]
006e5 8b 8d 44 03 00
00 mov ecx, DWORD PTR x3$17[rbp]
006eb 2b c8 sub ecx, eax
006ed 8b c1 mov eax, ecx
006ef c1 f8 0a sar eax, 10
006f2 b9 04 00 00 00 mov ecx, 4
006f7 48 6b c9 20 imul rcx, rcx, 32 ; 00000020H
006fb 48 8b 95 48 01
00 00 mov rdx, QWORD PTR v$[rbp]
00702 89 04 0a mov DWORD PTR [rdx+rcx], eax
$LN9@stbi__idct:
; 2779 : }
; 2780 : }
00705 e9 6b f9 ff ff jmp $LN2@stbi__idct
$LN3@stbi__idct:
; 2781 :
; 2782 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) {
0070a c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00711 48 8d 45 30 lea rax, QWORD PTR val$[rbp]
00715 48 89 85 48 01
00 00 mov QWORD PTR v$[rbp], rax
0071c 48 8b 85 60 07
00 00 mov rax, QWORD PTR out$[rbp]
00723 48 89 85 68 01
00 00 mov QWORD PTR o$[rbp], rax
0072a eb 35 jmp SHORT $LN7@stbi__idct
$LN5@stbi__idct:
0072c 8b 45 04 mov eax, DWORD PTR i$[rbp]
0072f ff c0 inc eax
00731 89 45 04 mov DWORD PTR i$[rbp], eax
00734 48 8b 85 48 01
00 00 mov rax, QWORD PTR v$[rbp]
0073b 48 83 c0 20 add rax, 32 ; 00000020H
0073f 48 89 85 48 01
00 00 mov QWORD PTR v$[rbp], rax
00746 48 63 85 68 07
00 00 movsxd rax, DWORD PTR out_stride$[rbp]
0074d 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR o$[rbp]
00754 48 03 c8 add rcx, rax
00757 48 8b c1 mov rax, rcx
0075a 48 89 85 68 01
00 00 mov QWORD PTR o$[rbp], rax
$LN7@stbi__idct:
00761 83 7d 04 08 cmp DWORD PTR i$[rbp], 8
00765 0f 8d e1 04 00
00 jge $LN6@stbi__idct
; 2783 : // no fast case since the first 1D IDCT spread components out
; 2784 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7])
0076b b8 04 00 00 00 mov eax, 4
00770 48 6b c0 02 imul rax, rax, 2
00774 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
0077b 8b 04 01 mov eax, DWORD PTR [rcx+rax]
0077e 89 85 04 04 00
00 mov DWORD PTR p2$23[rbp], eax
00784 b8 04 00 00 00 mov eax, 4
00789 48 6b c0 06 imul rax, rax, 6
0078d 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
00794 8b 04 01 mov eax, DWORD PTR [rcx+rax]
00797 89 85 24 04 00
00 mov DWORD PTR p3$24[rbp], eax
0079d 8b 85 24 04 00
00 mov eax, DWORD PTR p3$24[rbp]
007a3 8b 8d 04 04 00
00 mov ecx, DWORD PTR p2$23[rbp]
007a9 03 c8 add ecx, eax
007ab 8b c1 mov eax, ecx
007ad 69 c0 a9 08 00
00 imul eax, eax, 2217 ; 000008a9H
007b3 89 85 e4 03 00
00 mov DWORD PTR p1$22[rbp], eax
007b9 69 85 24 04 00
00 71 e2 ff ff imul eax, DWORD PTR p3$24[rbp], -7567 ; ffffffffffffe271H
007c3 8b 8d e4 03 00
00 mov ecx, DWORD PTR p1$22[rbp]
007c9 03 c8 add ecx, eax
007cb 8b c1 mov eax, ecx
007cd 89 85 a4 03 00
00 mov DWORD PTR t2$20[rbp], eax
007d3 69 85 04 04 00
00 3f 0c 00 00 imul eax, DWORD PTR p2$23[rbp], 3135 ; 00000c3fH
007dd 8b 8d e4 03 00
00 mov ecx, DWORD PTR p1$22[rbp]
007e3 03 c8 add ecx, eax
007e5 8b c1 mov eax, ecx
007e7 89 85 c4 03 00
00 mov DWORD PTR t3$21[rbp], eax
007ed b8 04 00 00 00 mov eax, 4
007f2 48 6b c0 00 imul rax, rax, 0
007f6 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
007fd 8b 04 01 mov eax, DWORD PTR [rcx+rax]
00800 89 85 04 04 00
00 mov DWORD PTR p2$23[rbp], eax
00806 b8 04 00 00 00 mov eax, 4
0080b 48 6b c0 04 imul rax, rax, 4
0080f 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
00816 8b 04 01 mov eax, DWORD PTR [rcx+rax]
00819 89 85 24 04 00
00 mov DWORD PTR p3$24[rbp], eax
0081f 8b 85 24 04 00
00 mov eax, DWORD PTR p3$24[rbp]
00825 8b 8d 04 04 00
00 mov ecx, DWORD PTR p2$23[rbp]
0082b 03 c8 add ecx, eax
0082d 8b c1 mov eax, ecx
0082f 69 c0 00 10 00
00 imul eax, eax, 4096 ; 00001000H
00835 89 85 64 03 00
00 mov DWORD PTR t0$18[rbp], eax
0083b 8b 85 24 04 00
00 mov eax, DWORD PTR p3$24[rbp]
00841 8b 8d 04 04 00
00 mov ecx, DWORD PTR p2$23[rbp]
00847 2b c8 sub ecx, eax
00849 8b c1 mov eax, ecx
0084b 69 c0 00 10 00
00 imul eax, eax, 4096 ; 00001000H
00851 89 85 84 03 00
00 mov DWORD PTR t1$19[rbp], eax
00857 8b 85 c4 03 00
00 mov eax, DWORD PTR t3$21[rbp]
0085d 8b 8d 64 03 00
00 mov ecx, DWORD PTR t0$18[rbp]
00863 03 c8 add ecx, eax
00865 8b c1 mov eax, ecx
00867 89 85 84 04 00
00 mov DWORD PTR x0$27[rbp], eax
0086d 8b 85 c4 03 00
00 mov eax, DWORD PTR t3$21[rbp]
00873 8b 8d 64 03 00
00 mov ecx, DWORD PTR t0$18[rbp]
00879 2b c8 sub ecx, eax
0087b 8b c1 mov eax, ecx
0087d 89 85 e4 04 00
00 mov DWORD PTR x3$30[rbp], eax
00883 8b 85 a4 03 00
00 mov eax, DWORD PTR t2$20[rbp]
00889 8b 8d 84 03 00
00 mov ecx, DWORD PTR t1$19[rbp]
0088f 03 c8 add ecx, eax
00891 8b c1 mov eax, ecx
00893 89 85 a4 04 00
00 mov DWORD PTR x1$28[rbp], eax
00899 8b 85 a4 03 00
00 mov eax, DWORD PTR t2$20[rbp]
0089f 8b 8d 84 03 00
00 mov ecx, DWORD PTR t1$19[rbp]
008a5 2b c8 sub ecx, eax
008a7 8b c1 mov eax, ecx
008a9 89 85 c4 04 00
00 mov DWORD PTR x2$29[rbp], eax
008af b8 04 00 00 00 mov eax, 4
008b4 48 6b c0 07 imul rax, rax, 7
008b8 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
008bf 8b 04 01 mov eax, DWORD PTR [rcx+rax]
008c2 89 85 64 03 00
00 mov DWORD PTR t0$18[rbp], eax
008c8 b8 04 00 00 00 mov eax, 4
008cd 48 6b c0 05 imul rax, rax, 5
008d1 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
008d8 8b 04 01 mov eax, DWORD PTR [rcx+rax]
008db 89 85 84 03 00
00 mov DWORD PTR t1$19[rbp], eax
008e1 b8 04 00 00 00 mov eax, 4
008e6 48 6b c0 03 imul rax, rax, 3
008ea 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
008f1 8b 04 01 mov eax, DWORD PTR [rcx+rax]
008f4 89 85 a4 03 00
00 mov DWORD PTR t2$20[rbp], eax
008fa b8 04 00 00 00 mov eax, 4
008ff 48 6b c0 01 imul rax, rax, 1
00903 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR v$[rbp]
0090a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
0090d 89 85 c4 03 00
00 mov DWORD PTR t3$21[rbp], eax
00913 8b 85 a4 03 00
00 mov eax, DWORD PTR t2$20[rbp]
00919 8b 8d 64 03 00
00 mov ecx, DWORD PTR t0$18[rbp]
0091f 03 c8 add ecx, eax
00921 8b c1 mov eax, ecx
00923 89 85 24 04 00
00 mov DWORD PTR p3$24[rbp], eax
00929 8b 85 c4 03 00
00 mov eax, DWORD PTR t3$21[rbp]
0092f 8b 8d 84 03 00
00 mov ecx, DWORD PTR t1$19[rbp]
00935 03 c8 add ecx, eax
00937 8b c1 mov eax, ecx
00939 89 85 44 04 00
00 mov DWORD PTR p4$25[rbp], eax
0093f 8b 85 c4 03 00
00 mov eax, DWORD PTR t3$21[rbp]
00945 8b 8d 64 03 00
00 mov ecx, DWORD PTR t0$18[rbp]
0094b 03 c8 add ecx, eax
0094d 8b c1 mov eax, ecx
0094f 89 85 e4 03 00
00 mov DWORD PTR p1$22[rbp], eax
00955 8b 85 a4 03 00
00 mov eax, DWORD PTR t2$20[rbp]
0095b 8b 8d 84 03 00
00 mov ecx, DWORD PTR t1$19[rbp]
00961 03 c8 add ecx, eax
00963 8b c1 mov eax, ecx
00965 89 85 04 04 00
00 mov DWORD PTR p2$23[rbp], eax
0096b 8b 85 44 04 00
00 mov eax, DWORD PTR p4$25[rbp]
00971 8b 8d 24 04 00
00 mov ecx, DWORD PTR p3$24[rbp]
00977 03 c8 add ecx, eax
00979 8b c1 mov eax, ecx
0097b 69 c0 d0 12 00
00 imul eax, eax, 4816 ; 000012d0H
00981 89 85 64 04 00
00 mov DWORD PTR p5$26[rbp], eax
00987 69 85 64 03 00
00 c7 04 00 00 imul eax, DWORD PTR t0$18[rbp], 1223 ; 000004c7H
00991 89 85 64 03 00
00 mov DWORD PTR t0$18[rbp], eax
00997 69 85 84 03 00
00 da 20 00 00 imul eax, DWORD PTR t1$19[rbp], 8410 ; 000020daH
009a1 89 85 84 03 00
00 mov DWORD PTR t1$19[rbp], eax
009a7 69 85 a4 03 00
00 2a 31 00 00 imul eax, DWORD PTR t2$20[rbp], 12586 ; 0000312aH
009b1 89 85 a4 03 00
00 mov DWORD PTR t2$20[rbp], eax
009b7 69 85 c4 03 00
00 05 18 00 00 imul eax, DWORD PTR t3$21[rbp], 6149 ; 00001805H
009c1 89 85 c4 03 00
00 mov DWORD PTR t3$21[rbp], eax
009c7 69 85 e4 03 00
00 9b f1 ff ff imul eax, DWORD PTR p1$22[rbp], -3685 ; fffffffffffff19bH
009d1 8b 8d 64 04 00
00 mov ecx, DWORD PTR p5$26[rbp]
009d7 03 c8 add ecx, eax
009d9 8b c1 mov eax, ecx
009db 89 85 e4 03 00
00 mov DWORD PTR p1$22[rbp], eax
009e1 69 85 04 04 00
00 ff d6 ff ff imul eax, DWORD PTR p2$23[rbp], -10497 ; ffffffffffffd6ffH
009eb 8b 8d 64 04 00
00 mov ecx, DWORD PTR p5$26[rbp]
009f1 03 c8 add ecx, eax
009f3 8b c1 mov eax, ecx
009f5 89 85 04 04 00
00 mov DWORD PTR p2$23[rbp], eax
009fb 69 85 24 04 00
00 9e e0 ff ff imul eax, DWORD PTR p3$24[rbp], -8034 ; ffffffffffffe09eH
00a05 89 85 24 04 00
00 mov DWORD PTR p3$24[rbp], eax
00a0b 69 85 44 04 00
00 c3 f9 ff ff imul eax, DWORD PTR p4$25[rbp], -1597 ; fffffffffffff9c3H
00a15 89 85 44 04 00
00 mov DWORD PTR p4$25[rbp], eax
00a1b 8b 85 44 04 00
00 mov eax, DWORD PTR p4$25[rbp]
00a21 8b 8d e4 03 00
00 mov ecx, DWORD PTR p1$22[rbp]
00a27 03 c8 add ecx, eax
00a29 8b c1 mov eax, ecx
00a2b 8b 8d c4 03 00
00 mov ecx, DWORD PTR t3$21[rbp]
00a31 03 c8 add ecx, eax
00a33 8b c1 mov eax, ecx
00a35 89 85 c4 03 00
00 mov DWORD PTR t3$21[rbp], eax
00a3b 8b 85 24 04 00
00 mov eax, DWORD PTR p3$24[rbp]
00a41 8b 8d 04 04 00
00 mov ecx, DWORD PTR p2$23[rbp]
00a47 03 c8 add ecx, eax
00a49 8b c1 mov eax, ecx
00a4b 8b 8d a4 03 00
00 mov ecx, DWORD PTR t2$20[rbp]
00a51 03 c8 add ecx, eax
00a53 8b c1 mov eax, ecx
00a55 89 85 a4 03 00
00 mov DWORD PTR t2$20[rbp], eax
00a5b 8b 85 44 04 00
00 mov eax, DWORD PTR p4$25[rbp]
00a61 8b 8d 04 04 00
00 mov ecx, DWORD PTR p2$23[rbp]
00a67 03 c8 add ecx, eax
00a69 8b c1 mov eax, ecx
00a6b 8b 8d 84 03 00
00 mov ecx, DWORD PTR t1$19[rbp]
00a71 03 c8 add ecx, eax
00a73 8b c1 mov eax, ecx
00a75 89 85 84 03 00
00 mov DWORD PTR t1$19[rbp], eax
00a7b 8b 85 24 04 00
00 mov eax, DWORD PTR p3$24[rbp]
00a81 8b 8d e4 03 00
00 mov ecx, DWORD PTR p1$22[rbp]
00a87 03 c8 add ecx, eax
00a89 8b c1 mov eax, ecx
00a8b 8b 8d 64 03 00
00 mov ecx, DWORD PTR t0$18[rbp]
00a91 03 c8 add ecx, eax
00a93 8b c1 mov eax, ecx
00a95 89 85 64 03 00
00 mov DWORD PTR t0$18[rbp], eax
; 2785 : // constants scaled things up by 1<<12, plus we had 1<<2 from first
; 2786 : // loop, plus horizontal and vertical each scale by sqrt(8) so together
; 2787 : // we've got an extra 1<<3, so 1<<17 total we need to remove.
; 2788 : // so we want to round that, which means adding 0.5 * 1<<17,
; 2789 : // aka 65536. Also, we'll end up with -128 to 127 that we want
; 2790 : // to encode as 0..255 by adding 128, so we'll add that before the shift
; 2791 : x0 += 65536 + (128 << 17);
00a9b 8b 85 84 04 00
00 mov eax, DWORD PTR x0$27[rbp]
00aa1 05 00 00 01 01 add eax, 16842752 ; 01010000H
00aa6 89 85 84 04 00
00 mov DWORD PTR x0$27[rbp], eax
; 2792 : x1 += 65536 + (128 << 17);
00aac 8b 85 a4 04 00
00 mov eax, DWORD PTR x1$28[rbp]
00ab2 05 00 00 01 01 add eax, 16842752 ; 01010000H
00ab7 89 85 a4 04 00
00 mov DWORD PTR x1$28[rbp], eax
; 2793 : x2 += 65536 + (128 << 17);
00abd 8b 85 c4 04 00
00 mov eax, DWORD PTR x2$29[rbp]
00ac3 05 00 00 01 01 add eax, 16842752 ; 01010000H
00ac8 89 85 c4 04 00
00 mov DWORD PTR x2$29[rbp], eax
; 2794 : x3 += 65536 + (128 << 17);
00ace 8b 85 e4 04 00
00 mov eax, DWORD PTR x3$30[rbp]
00ad4 05 00 00 01 01 add eax, 16842752 ; 01010000H
00ad9 89 85 e4 04 00
00 mov DWORD PTR x3$30[rbp], eax
; 2795 : // tried computing the shifts into temps, or'ing the temps to see
; 2796 : // if any were out of range, but that was slower
; 2797 : o[0] = stbi__clamp((x0 + t3) >> 17);
00adf 8b 85 c4 03 00
00 mov eax, DWORD PTR t3$21[rbp]
00ae5 8b 8d 84 04 00
00 mov ecx, DWORD PTR x0$27[rbp]
00aeb 03 c8 add ecx, eax
00aed 8b c1 mov eax, ecx
00aef c1 f8 11 sar eax, 17
00af2 8b c8 mov ecx, eax
00af4 e8 00 00 00 00 call stbi__clamp
00af9 b9 01 00 00 00 mov ecx, 1
00afe 48 6b c9 00 imul rcx, rcx, 0
00b02 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00b09 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2798 : o[7] = stbi__clamp((x0 - t3) >> 17);
00b0c 8b 85 c4 03 00
00 mov eax, DWORD PTR t3$21[rbp]
00b12 8b 8d 84 04 00
00 mov ecx, DWORD PTR x0$27[rbp]
00b18 2b c8 sub ecx, eax
00b1a 8b c1 mov eax, ecx
00b1c c1 f8 11 sar eax, 17
00b1f 8b c8 mov ecx, eax
00b21 e8 00 00 00 00 call stbi__clamp
00b26 b9 01 00 00 00 mov ecx, 1
00b2b 48 6b c9 07 imul rcx, rcx, 7
00b2f 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00b36 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2799 : o[1] = stbi__clamp((x1 + t2) >> 17);
00b39 8b 85 a4 03 00
00 mov eax, DWORD PTR t2$20[rbp]
00b3f 8b 8d a4 04 00
00 mov ecx, DWORD PTR x1$28[rbp]
00b45 03 c8 add ecx, eax
00b47 8b c1 mov eax, ecx
00b49 c1 f8 11 sar eax, 17
00b4c 8b c8 mov ecx, eax
00b4e e8 00 00 00 00 call stbi__clamp
00b53 b9 01 00 00 00 mov ecx, 1
00b58 48 6b c9 01 imul rcx, rcx, 1
00b5c 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00b63 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2800 : o[6] = stbi__clamp((x1 - t2) >> 17);
00b66 8b 85 a4 03 00
00 mov eax, DWORD PTR t2$20[rbp]
00b6c 8b 8d a4 04 00
00 mov ecx, DWORD PTR x1$28[rbp]
00b72 2b c8 sub ecx, eax
00b74 8b c1 mov eax, ecx
00b76 c1 f8 11 sar eax, 17
00b79 8b c8 mov ecx, eax
00b7b e8 00 00 00 00 call stbi__clamp
00b80 b9 01 00 00 00 mov ecx, 1
00b85 48 6b c9 06 imul rcx, rcx, 6
00b89 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00b90 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2801 : o[2] = stbi__clamp((x2 + t1) >> 17);
00b93 8b 85 84 03 00
00 mov eax, DWORD PTR t1$19[rbp]
00b99 8b 8d c4 04 00
00 mov ecx, DWORD PTR x2$29[rbp]
00b9f 03 c8 add ecx, eax
00ba1 8b c1 mov eax, ecx
00ba3 c1 f8 11 sar eax, 17
00ba6 8b c8 mov ecx, eax
00ba8 e8 00 00 00 00 call stbi__clamp
00bad b9 01 00 00 00 mov ecx, 1
00bb2 48 6b c9 02 imul rcx, rcx, 2
00bb6 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00bbd 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2802 : o[5] = stbi__clamp((x2 - t1) >> 17);
00bc0 8b 85 84 03 00
00 mov eax, DWORD PTR t1$19[rbp]
00bc6 8b 8d c4 04 00
00 mov ecx, DWORD PTR x2$29[rbp]
00bcc 2b c8 sub ecx, eax
00bce 8b c1 mov eax, ecx
00bd0 c1 f8 11 sar eax, 17
00bd3 8b c8 mov ecx, eax
00bd5 e8 00 00 00 00 call stbi__clamp
00bda b9 01 00 00 00 mov ecx, 1
00bdf 48 6b c9 05 imul rcx, rcx, 5
00be3 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00bea 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2803 : o[3] = stbi__clamp((x3 + t0) >> 17);
00bed 8b 85 64 03 00
00 mov eax, DWORD PTR t0$18[rbp]
00bf3 8b 8d e4 04 00
00 mov ecx, DWORD PTR x3$30[rbp]
00bf9 03 c8 add ecx, eax
00bfb 8b c1 mov eax, ecx
00bfd c1 f8 11 sar eax, 17
00c00 8b c8 mov ecx, eax
00c02 e8 00 00 00 00 call stbi__clamp
00c07 b9 01 00 00 00 mov ecx, 1
00c0c 48 6b c9 03 imul rcx, rcx, 3
00c10 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00c17 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2804 : o[4] = stbi__clamp((x3 - t0) >> 17);
00c1a 8b 85 64 03 00
00 mov eax, DWORD PTR t0$18[rbp]
00c20 8b 8d e4 04 00
00 mov ecx, DWORD PTR x3$30[rbp]
00c26 2b c8 sub ecx, eax
00c28 8b c1 mov eax, ecx
00c2a c1 f8 11 sar eax, 17
00c2d 8b c8 mov ecx, eax
00c2f e8 00 00 00 00 call stbi__clamp
00c34 b9 01 00 00 00 mov ecx, 1
00c39 48 6b c9 04 imul rcx, rcx, 4
00c3d 48 8b 95 68 01
00 00 mov rdx, QWORD PTR o$[rbp]
00c44 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2805 : }
00c47 e9 e0 fa ff ff jmp $LN5@stbi__idct
$LN6@stbi__idct:
; 2806 : }
00c4c 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00c50 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__idct_block$rtcFrameData
00c57 e8 00 00 00 00 call _RTC_CheckStackVars
00c5c 48 8b 8d 38 07
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00c63 48 33 cd xor rcx, rbp
00c66 e8 00 00 00 00 call __security_check_cookie
00c6b 48 8d a5 48 07
00 00 lea rsp, QWORD PTR [rbp+1864]
00c72 5f pop rdi
00c73 5d pop rbp
00c74 c3 ret 0
stbi__idct_block ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__clamp
_TEXT SEGMENT
x$ = 224
stbi__clamp PROC ; COMDAT
; 2694 : {
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 2695 : // trick to use a single test to catch both cases
; 2696 : if ((unsigned int)x > 255) {
0001f 81 bd e0 00 00
00 ff 00 00 00 cmp DWORD PTR x$[rbp], 255 ; 000000ffH
00029 76 1d jbe SHORT $LN2@stbi__clam
; 2697 : if (x < 0)
0002b 83 bd e0 00 00
00 00 cmp DWORD PTR x$[rbp], 0
00032 7d 04 jge SHORT $LN3@stbi__clam
; 2698 : return 0;
00034 32 c0 xor al, al
00036 eb 17 jmp SHORT $LN1@stbi__clam
$LN3@stbi__clam:
; 2699 : if (x > 255)
00038 81 bd e0 00 00
00 ff 00 00 00 cmp DWORD PTR x$[rbp], 255 ; 000000ffH
00042 7e 04 jle SHORT $LN4@stbi__clam
; 2700 : return 255;
00044 b0 ff mov al, 255 ; 000000ffH
00046 eb 07 jmp SHORT $LN1@stbi__clam
$LN4@stbi__clam:
$LN2@stbi__clam:
; 2701 : }
; 2702 : return (stbi_uc)x;
00048 0f b6 85 e0 00
00 00 movzx eax, BYTE PTR x$[rbp]
$LN1@stbi__clam:
; 2703 : }
0004f 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00056 5f pop rdi
00057 5d pop rbp
00058 c3 ret 0
stbi__clamp ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_decode_block_prog_ac
_TEXT SEGMENT
k$ = 4
shift$1 = 36
zig$2 = 68
c$3 = 100
r$4 = 132
s$5 = 164
rs$6 = 196
bit$7 = 228
p$8 = 264
r$9 = 292
s$10 = 324
rs$11 = 356
p$12 = 392
tv371 = 596
tv393 = 596
tv420 = 596
tv354 = 600
j$ = 640
data$ = 648
hac$ = 656
fac$ = 664
stbi__jpeg_decode_block_prog_ac PROC ; COMDAT
; 2561 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 88 02
00 00 sub rsp, 648 ; 00000288H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 2562 : int k;
; 2563 : if (j->spec_start == 0)
0002f 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
00036 83 b8 34 48 00
00 00 cmp DWORD PTR [rax+18484], 0
0003d 75 11 jne SHORT $LN13@stbi__jpeg
; 2564 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
0003f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
00046 e8 00 00 00 00 call stbi__err
0004b e9 75 06 00 00 jmp $LN1@stbi__jpeg
$LN13@stbi__jpeg:
; 2565 :
; 2566 : if (j->succ_high == 0) {
00050 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
00057 83 b8 3c 48 00
00 00 cmp DWORD PTR [rax+18492], 0
0005e 0f 85 f4 02 00
00 jne $LN14@stbi__jpeg
; 2567 : int shift = j->succ_low;
00064 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
0006b 8b 80 40 48 00
00 mov eax, DWORD PTR [rax+18496]
00071 89 45 24 mov DWORD PTR shift$1[rbp], eax
; 2568 :
; 2569 : if (j->eob_run) {
00074 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
0007b 83 b8 44 48 00
00 00 cmp DWORD PTR [rax+18500], 0
00082 74 26 je SHORT $LN16@stbi__jpeg
; 2570 : --j->eob_run;
00084 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
0008b 8b 80 44 48 00
00 mov eax, DWORD PTR [rax+18500]
00091 ff c8 dec eax
00093 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
0009a 89 81 44 48 00
00 mov DWORD PTR [rcx+18500], eax
; 2571 : return 1;
000a0 b8 01 00 00 00 mov eax, 1
000a5 e9 1b 06 00 00 jmp $LN1@stbi__jpeg
$LN16@stbi__jpeg:
; 2572 : }
; 2573 :
; 2574 : k = j->spec_start;
000aa 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
000b1 8b 80 34 48 00
00 mov eax, DWORD PTR [rax+18484]
000b7 89 45 04 mov DWORD PTR k$[rbp], eax
$LN4@stbi__jpeg:
; 2575 : do {
; 2576 : unsigned int zig;
; 2577 : int c, r, s;
; 2578 : if (j->code_bits < 16)
000ba 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
000c1 83 b8 24 48 00
00 10 cmp DWORD PTR [rax+18468], 16
000c8 7d 0d jge SHORT $LN17@stbi__jpeg
; 2579 : stbi__grow_buffer_unsafe(j);
000ca 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
000d1 e8 00 00 00 00 call stbi__grow_buffer_unsafe
000d6 90 npad 1
$LN17@stbi__jpeg:
; 2580 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1);
000d7 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
000de 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
000e4 c1 e8 17 shr eax, 23
000e7 25 ff 01 00 00 and eax, 511 ; 000001ffH
000ec 89 45 64 mov DWORD PTR c$3[rbp], eax
; 2581 : r = fac[c];
000ef 48 63 45 64 movsxd rax, DWORD PTR c$3[rbp]
000f3 48 8b 8d 98 02
00 00 mov rcx, QWORD PTR fac$[rbp]
000fa 0f bf 04 41 movsx eax, WORD PTR [rcx+rax*2]
000fe 89 85 84 00 00
00 mov DWORD PTR r$4[rbp], eax
; 2582 : if (r) { // fast-AC path
00104 83 bd 84 00 00
00 00 cmp DWORD PTR r$4[rbp], 0
0010b 0f 84 e5 00 00
00 je $LN18@stbi__jpeg
; 2583 : k += (r >> 4) & 15; // run
00111 8b 85 84 00 00
00 mov eax, DWORD PTR r$4[rbp]
00117 c1 f8 04 sar eax, 4
0011a 83 e0 0f and eax, 15
0011d 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
00120 03 c8 add ecx, eax
00122 8b c1 mov eax, ecx
00124 89 45 04 mov DWORD PTR k$[rbp], eax
; 2584 : s = r & 15; // combined length
00127 8b 85 84 00 00
00 mov eax, DWORD PTR r$4[rbp]
0012d 83 e0 0f and eax, 15
00130 89 85 a4 00 00
00 mov DWORD PTR s$5[rbp], eax
; 2585 : if (s > j->code_bits)
00136 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
0013d 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
00143 39 85 a4 00 00
00 cmp DWORD PTR s$5[rbp], eax
00149 7e 11 jle SHORT $LN20@stbi__jpeg
; 2586 : return stbi__err(
0014b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
00152 e8 00 00 00 00 call stbi__err
00157 e9 69 05 00 00 jmp $LN1@stbi__jpeg
$LN20@stbi__jpeg:
; 2587 : "bad huffman code",
; 2588 : "Combined length longer than code bits available");
; 2589 : j->code_buffer <<= s;
0015c 8b 85 a4 00 00
00 mov eax, DWORD PTR s$5[rbp]
00162 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00169 48 89 8d 58 02
00 00 mov QWORD PTR tv354[rbp], rcx
00170 0f b6 c8 movzx ecx, al
00173 48 8b 85 58 02
00 00 mov rax, QWORD PTR tv354[rbp]
0017a 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
00180 d3 e0 shl eax, cl
00182 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00189 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2590 : j->code_bits -= s;
0018f 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
00196 8b 8d a4 00 00
00 mov ecx, DWORD PTR s$5[rbp]
0019c 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
001a2 2b c1 sub eax, ecx
001a4 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
001ab 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2591 : zig = stbi__jpeg_dezigzag[k++];
001b1 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
001b5 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
001bc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
001c0 89 45 44 mov DWORD PTR zig$2[rbp], eax
001c3 8b 45 04 mov eax, DWORD PTR k$[rbp]
001c6 ff c0 inc eax
001c8 89 45 04 mov DWORD PTR k$[rbp], eax
; 2592 : data[zig] = (short)((r >> 8) * (1 << shift));
001cb 8b 85 84 00 00
00 mov eax, DWORD PTR r$4[rbp]
001d1 c1 f8 08 sar eax, 8
001d4 8b 4d 24 mov ecx, DWORD PTR shift$1[rbp]
001d7 ba 01 00 00 00 mov edx, 1
001dc d3 e2 shl edx, cl
001de 8b ca mov ecx, edx
001e0 0f af c1 imul eax, ecx
001e3 8b 4d 44 mov ecx, DWORD PTR zig$2[rbp]
001e6 48 8b 95 88 02
00 00 mov rdx, QWORD PTR data$[rbp]
001ed 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
; 2593 : } else {
001f1 e9 47 01 00 00 jmp $LN19@stbi__jpeg
$LN18@stbi__jpeg:
; 2594 : int rs = stbi__jpeg_huff_decode(j, hac);
001f6 48 8b 95 90 02
00 00 mov rdx, QWORD PTR hac$[rbp]
001fd 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00204 e8 00 00 00 00 call stbi__jpeg_huff_decode
00209 89 85 c4 00 00
00 mov DWORD PTR rs$6[rbp], eax
; 2595 : if (rs < 0)
0020f 83 bd c4 00 00
00 00 cmp DWORD PTR rs$6[rbp], 0
00216 7d 11 jge SHORT $LN21@stbi__jpeg
; 2596 : return stbi__err("bad huffman code", "Corrupt JPEG");
00218 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
0021f e8 00 00 00 00 call stbi__err
00224 e9 9c 04 00 00 jmp $LN1@stbi__jpeg
$LN21@stbi__jpeg:
; 2597 : s = rs & 15;
00229 8b 85 c4 00 00
00 mov eax, DWORD PTR rs$6[rbp]
0022f 83 e0 0f and eax, 15
00232 89 85 a4 00 00
00 mov DWORD PTR s$5[rbp], eax
; 2598 : r = rs >> 4;
00238 8b 85 c4 00 00
00 mov eax, DWORD PTR rs$6[rbp]
0023e c1 f8 04 sar eax, 4
00241 89 85 84 00 00
00 mov DWORD PTR r$4[rbp], eax
; 2599 : if (s == 0) {
00247 83 bd a4 00 00
00 00 cmp DWORD PTR s$5[rbp], 0
0024e 0f 85 90 00 00
00 jne $LN22@stbi__jpeg
; 2600 : if (r < 15) {
00254 83 bd 84 00 00
00 0f cmp DWORD PTR r$4[rbp], 15
0025b 7d 7c jge SHORT $LN24@stbi__jpeg
; 2601 : j->eob_run = (1 << r);
0025d 8b 85 84 00 00
00 mov eax, DWORD PTR r$4[rbp]
00263 b9 01 00 00 00 mov ecx, 1
00268 89 8d 54 02 00
00 mov DWORD PTR tv371[rbp], ecx
0026e 0f b6 c8 movzx ecx, al
00271 8b 85 54 02 00
00 mov eax, DWORD PTR tv371[rbp]
00277 d3 e0 shl eax, cl
00279 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00280 89 81 44 48 00
00 mov DWORD PTR [rcx+18500], eax
; 2602 : if (r)
00286 83 bd 84 00 00
00 00 cmp DWORD PTR r$4[rbp], 0
0028d 74 2c je SHORT $LN25@stbi__jpeg
; 2603 : j->eob_run += stbi__jpeg_get_bits(j, r);
0028f 8b 95 84 00 00
00 mov edx, DWORD PTR r$4[rbp]
00295 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
0029c e8 00 00 00 00 call stbi__jpeg_get_bits
002a1 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
002a8 03 81 44 48 00
00 add eax, DWORD PTR [rcx+18500]
002ae 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
002b5 89 81 44 48 00
00 mov DWORD PTR [rcx+18500], eax
$LN25@stbi__jpeg:
; 2604 : --j->eob_run;
002bb 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
002c2 8b 80 44 48 00
00 mov eax, DWORD PTR [rax+18500]
002c8 ff c8 dec eax
002ca 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
002d1 89 81 44 48 00
00 mov DWORD PTR [rcx+18500], eax
; 2605 : break;
002d7 eb 7a jmp SHORT $LN3@stbi__jpeg
$LN24@stbi__jpeg:
; 2606 : }
; 2607 : k += 16;
002d9 8b 45 04 mov eax, DWORD PTR k$[rbp]
002dc 83 c0 10 add eax, 16
002df 89 45 04 mov DWORD PTR k$[rbp], eax
; 2608 : } else {
002e2 eb 59 jmp SHORT $LN23@stbi__jpeg
$LN22@stbi__jpeg:
; 2609 : k += r;
002e4 8b 85 84 00 00
00 mov eax, DWORD PTR r$4[rbp]
002ea 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
002ed 03 c8 add ecx, eax
002ef 8b c1 mov eax, ecx
002f1 89 45 04 mov DWORD PTR k$[rbp], eax
; 2610 : zig = stbi__jpeg_dezigzag[k++];
002f4 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
002f8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
002ff 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00303 89 45 44 mov DWORD PTR zig$2[rbp], eax
00306 8b 45 04 mov eax, DWORD PTR k$[rbp]
00309 ff c0 inc eax
0030b 89 45 04 mov DWORD PTR k$[rbp], eax
; 2611 : data[zig] =
0030e 8b 95 a4 00 00
00 mov edx, DWORD PTR s$5[rbp]
00314 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
0031b e8 00 00 00 00 call stbi__extend_receive
00320 8b 4d 24 mov ecx, DWORD PTR shift$1[rbp]
00323 ba 01 00 00 00 mov edx, 1
00328 d3 e2 shl edx, cl
0032a 8b ca mov ecx, edx
0032c 0f af c1 imul eax, ecx
0032f 8b 4d 44 mov ecx, DWORD PTR zig$2[rbp]
00332 48 8b 95 88 02
00 00 mov rdx, QWORD PTR data$[rbp]
00339 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
$LN23@stbi__jpeg:
$LN19@stbi__jpeg:
; 2612 : (short)(stbi__extend_receive(j, s) * (1 << shift));
; 2613 : }
; 2614 : }
; 2615 : } while (k <= j->spec_end);
0033d 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
00344 8b 80 38 48 00
00 mov eax, DWORD PTR [rax+18488]
0034a 39 45 04 cmp DWORD PTR k$[rbp], eax
0034d 0f 8e 67 fd ff
ff jle $LN4@stbi__jpeg
$LN3@stbi__jpeg:
; 2616 : } else {
00353 e9 68 03 00 00 jmp $LN15@stbi__jpeg
$LN14@stbi__jpeg:
; 2617 : // refinement scan for these AC coefficients
; 2618 :
; 2619 : short bit = (short)(1 << j->succ_low);
00358 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
0035f 8b 80 40 48 00
00 mov eax, DWORD PTR [rax+18496]
00365 b9 01 00 00 00 mov ecx, 1
0036a 89 8d 54 02 00
00 mov DWORD PTR tv393[rbp], ecx
00370 0f b6 c8 movzx ecx, al
00373 8b 85 54 02 00
00 mov eax, DWORD PTR tv393[rbp]
00379 d3 e0 shl eax, cl
0037b 66 89 85 e4 00
00 00 mov WORD PTR bit$7[rbp], ax
; 2620 :
; 2621 : if (j->eob_run) {
00382 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
00389 83 b8 44 48 00
00 00 cmp DWORD PTR [rax+18500], 0
00390 0f 84 fa 00 00
00 je $LN26@stbi__jpeg
; 2622 : --j->eob_run;
00396 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
0039d 8b 80 44 48 00
00 mov eax, DWORD PTR [rax+18500]
003a3 ff c8 dec eax
003a5 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
003ac 89 81 44 48 00
00 mov DWORD PTR [rcx+18500], eax
; 2623 : for (k = j->spec_start; k <= j->spec_end; ++k) {
003b2 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
003b9 8b 80 34 48 00
00 mov eax, DWORD PTR [rax+18484]
003bf 89 45 04 mov DWORD PTR k$[rbp], eax
003c2 eb 08 jmp SHORT $LN7@stbi__jpeg
$LN5@stbi__jpeg:
003c4 8b 45 04 mov eax, DWORD PTR k$[rbp]
003c7 ff c0 inc eax
003c9 89 45 04 mov DWORD PTR k$[rbp], eax
$LN7@stbi__jpeg:
003cc 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
003d3 8b 80 38 48 00
00 mov eax, DWORD PTR [rax+18488]
003d9 39 45 04 cmp DWORD PTR k$[rbp], eax
003dc 0f 8f a9 00 00
00 jg $LN6@stbi__jpeg
; 2624 : short *p = &data[stbi__jpeg_dezigzag[k]];
003e2 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
003e6 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
003ed 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
003f1 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR data$[rbp]
003f8 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
003fc 48 89 85 08 01
00 00 mov QWORD PTR p$8[rbp], rax
; 2625 : if (*p != 0)
00403 48 8b 85 08 01
00 00 mov rax, QWORD PTR p$8[rbp]
0040a 0f bf 00 movsx eax, WORD PTR [rax]
0040d 85 c0 test eax, eax
0040f 74 75 je SHORT $LN28@stbi__jpeg
; 2626 : if (stbi__jpeg_get_bit(j))
00411 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00418 e8 00 00 00 00 call stbi__jpeg_get_bit
0041d 85 c0 test eax, eax
0041f 74 65 je SHORT $LN29@stbi__jpeg
; 2627 : if ((*p & bit) == 0) {
00421 48 8b 85 08 01
00 00 mov rax, QWORD PTR p$8[rbp]
00428 0f bf 00 movsx eax, WORD PTR [rax]
0042b 0f bf 8d e4 00
00 00 movsx ecx, WORD PTR bit$7[rbp]
00432 23 c1 and eax, ecx
00434 85 c0 test eax, eax
00436 75 4e jne SHORT $LN30@stbi__jpeg
; 2628 : if (*p > 0)
00438 48 8b 85 08 01
00 00 mov rax, QWORD PTR p$8[rbp]
0043f 0f bf 00 movsx eax, WORD PTR [rax]
00442 85 c0 test eax, eax
00444 7e 21 jle SHORT $LN31@stbi__jpeg
; 2629 : *p += bit;
00446 0f bf 85 e4 00
00 00 movsx eax, WORD PTR bit$7[rbp]
0044d 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR p$8[rbp]
00454 0f bf 09 movsx ecx, WORD PTR [rcx]
00457 03 c8 add ecx, eax
00459 8b c1 mov eax, ecx
0045b 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR p$8[rbp]
00462 66 89 01 mov WORD PTR [rcx], ax
00465 eb 1f jmp SHORT $LN32@stbi__jpeg
$LN31@stbi__jpeg:
; 2630 : else
; 2631 : *p -= bit;
00467 0f bf 85 e4 00
00 00 movsx eax, WORD PTR bit$7[rbp]
0046e 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR p$8[rbp]
00475 0f bf 09 movsx ecx, WORD PTR [rcx]
00478 2b c8 sub ecx, eax
0047a 8b c1 mov eax, ecx
0047c 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR p$8[rbp]
00483 66 89 01 mov WORD PTR [rcx], ax
$LN32@stbi__jpeg:
$LN30@stbi__jpeg:
$LN29@stbi__jpeg:
$LN28@stbi__jpeg:
; 2632 : }
; 2633 : }
00486 e9 39 ff ff ff jmp $LN5@stbi__jpeg
$LN6@stbi__jpeg:
; 2634 : } else {
0048b e9 30 02 00 00 jmp $LN27@stbi__jpeg
$LN26@stbi__jpeg:
; 2635 : k = j->spec_start;
00490 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
00497 8b 80 34 48 00
00 mov eax, DWORD PTR [rax+18484]
0049d 89 45 04 mov DWORD PTR k$[rbp], eax
$LN10@stbi__jpeg:
; 2636 : do {
; 2637 : int r, s;
; 2638 : int rs = stbi__jpeg_huff_decode(
004a0 48 8b 95 90 02
00 00 mov rdx, QWORD PTR hac$[rbp]
004a7 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
004ae e8 00 00 00 00 call stbi__jpeg_huff_decode
004b3 89 85 64 01 00
00 mov DWORD PTR rs$11[rbp], eax
; 2639 : j,
; 2640 : hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh
; 2641 : if (rs < 0)
004b9 83 bd 64 01 00
00 00 cmp DWORD PTR rs$11[rbp], 0
004c0 7d 11 jge SHORT $LN33@stbi__jpeg
; 2642 : return stbi__err("bad huffman code", "Corrupt JPEG");
004c2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
004c9 e8 00 00 00 00 call stbi__err
004ce e9 f2 01 00 00 jmp $LN1@stbi__jpeg
$LN33@stbi__jpeg:
; 2643 : s = rs & 15;
004d3 8b 85 64 01 00
00 mov eax, DWORD PTR rs$11[rbp]
004d9 83 e0 0f and eax, 15
004dc 89 85 44 01 00
00 mov DWORD PTR s$10[rbp], eax
; 2644 : r = rs >> 4;
004e2 8b 85 64 01 00
00 mov eax, DWORD PTR rs$11[rbp]
004e8 c1 f8 04 sar eax, 4
004eb 89 85 24 01 00
00 mov DWORD PTR r$9[rbp], eax
; 2645 : if (s == 0) {
004f1 83 bd 44 01 00
00 00 cmp DWORD PTR s$10[rbp], 0
004f8 75 75 jne SHORT $LN34@stbi__jpeg
; 2646 : if (r < 15) {
004fa 83 bd 24 01 00
00 0f cmp DWORD PTR r$9[rbp], 15
00501 7d 6a jge SHORT $LN36@stbi__jpeg
; 2647 : j->eob_run = (1 << r) - 1;
00503 8b 85 24 01 00
00 mov eax, DWORD PTR r$9[rbp]
00509 b9 01 00 00 00 mov ecx, 1
0050e 89 8d 54 02 00
00 mov DWORD PTR tv420[rbp], ecx
00514 0f b6 c8 movzx ecx, al
00517 8b 85 54 02 00
00 mov eax, DWORD PTR tv420[rbp]
0051d d3 e0 shl eax, cl
0051f ff c8 dec eax
00521 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00528 89 81 44 48 00
00 mov DWORD PTR [rcx+18500], eax
; 2648 : if (r)
0052e 83 bd 24 01 00
00 00 cmp DWORD PTR r$9[rbp], 0
00535 74 2c je SHORT $LN38@stbi__jpeg
; 2649 : j->eob_run += stbi__jpeg_get_bits(j, r);
00537 8b 95 24 01 00
00 mov edx, DWORD PTR r$9[rbp]
0053d 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00544 e8 00 00 00 00 call stbi__jpeg_get_bits
00549 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00550 03 81 44 48 00
00 add eax, DWORD PTR [rcx+18500]
00556 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
0055d 89 81 44 48 00
00 mov DWORD PTR [rcx+18500], eax
$LN38@stbi__jpeg:
; 2650 : r = 64; // force end of block
00563 c7 85 24 01 00
00 40 00 00 00 mov DWORD PTR r$9[rbp], 64 ; 00000040H
$LN36@stbi__jpeg:
; 2651 : } else {
; 2652 : // r=15 s=0 should write 16 0s, so we just do
; 2653 : // a run of 15 0s and then write s (which is 0),
; 2654 : // so we don't have to do anything special here
; 2655 : }
; 2656 : } else {
0056d eb 48 jmp SHORT $LN35@stbi__jpeg
$LN34@stbi__jpeg:
; 2657 : if (s != 1)
0056f 83 bd 44 01 00
00 01 cmp DWORD PTR s$10[rbp], 1
00576 74 11 je SHORT $LN39@stbi__jpeg
; 2658 : return stbi__err("bad huffman code",
00578 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
0057f e8 00 00 00 00 call stbi__err
00584 e9 3c 01 00 00 jmp $LN1@stbi__jpeg
$LN39@stbi__jpeg:
; 2659 : "Corrupt JPEG");
; 2660 : // sign bit
; 2661 : if (stbi__jpeg_get_bit(j))
00589 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
00590 e8 00 00 00 00 call stbi__jpeg_get_bit
00595 85 c0 test eax, eax
00597 74 0f je SHORT $LN40@stbi__jpeg
; 2662 : s = bit;
00599 0f bf 85 e4 00
00 00 movsx eax, WORD PTR bit$7[rbp]
005a0 89 85 44 01 00
00 mov DWORD PTR s$10[rbp], eax
005a6 eb 0f jmp SHORT $LN41@stbi__jpeg
$LN40@stbi__jpeg:
; 2663 : else
; 2664 : s = -bit;
005a8 0f bf 85 e4 00
00 00 movsx eax, WORD PTR bit$7[rbp]
005af f7 d8 neg eax
005b1 89 85 44 01 00
00 mov DWORD PTR s$10[rbp], eax
$LN41@stbi__jpeg:
$LN35@stbi__jpeg:
$LN11@stbi__jpeg:
; 2665 : }
; 2666 :
; 2667 : // advance by r
; 2668 : while (k <= j->spec_end) {
005b7 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
005be 8b 80 38 48 00
00 mov eax, DWORD PTR [rax+18488]
005c4 39 45 04 cmp DWORD PTR k$[rbp], eax
005c7 0f 8f dd 00 00
00 jg $LN12@stbi__jpeg
; 2669 : short *p = &data[stbi__jpeg_dezigzag[k++]];
005cd 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
005d1 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
005d8 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
005dc 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR data$[rbp]
005e3 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
005e7 48 89 85 88 01
00 00 mov QWORD PTR p$12[rbp], rax
005ee 8b 45 04 mov eax, DWORD PTR k$[rbp]
005f1 ff c0 inc eax
005f3 89 45 04 mov DWORD PTR k$[rbp], eax
; 2670 : if (*p != 0) {
005f6 48 8b 85 88 01
00 00 mov rax, QWORD PTR p$12[rbp]
005fd 0f bf 00 movsx eax, WORD PTR [rax]
00600 85 c0 test eax, eax
00602 74 77 je SHORT $LN42@stbi__jpeg
; 2671 : if (stbi__jpeg_get_bit(j))
00604 48 8b 8d 80 02
00 00 mov rcx, QWORD PTR j$[rbp]
0060b e8 00 00 00 00 call stbi__jpeg_get_bit
00610 85 c0 test eax, eax
00612 74 65 je SHORT $LN44@stbi__jpeg
; 2672 : if ((*p & bit) == 0) {
00614 48 8b 85 88 01
00 00 mov rax, QWORD PTR p$12[rbp]
0061b 0f bf 00 movsx eax, WORD PTR [rax]
0061e 0f bf 8d e4 00
00 00 movsx ecx, WORD PTR bit$7[rbp]
00625 23 c1 and eax, ecx
00627 85 c0 test eax, eax
00629 75 4e jne SHORT $LN45@stbi__jpeg
; 2673 : if (*p > 0)
0062b 48 8b 85 88 01
00 00 mov rax, QWORD PTR p$12[rbp]
00632 0f bf 00 movsx eax, WORD PTR [rax]
00635 85 c0 test eax, eax
00637 7e 21 jle SHORT $LN46@stbi__jpeg
; 2674 : *p += bit;
00639 0f bf 85 e4 00
00 00 movsx eax, WORD PTR bit$7[rbp]
00640 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR p$12[rbp]
00647 0f bf 09 movsx ecx, WORD PTR [rcx]
0064a 03 c8 add ecx, eax
0064c 8b c1 mov eax, ecx
0064e 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR p$12[rbp]
00655 66 89 01 mov WORD PTR [rcx], ax
00658 eb 1f jmp SHORT $LN47@stbi__jpeg
$LN46@stbi__jpeg:
; 2675 : else
; 2676 : *p -= bit;
0065a 0f bf 85 e4 00
00 00 movsx eax, WORD PTR bit$7[rbp]
00661 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR p$12[rbp]
00668 0f bf 09 movsx ecx, WORD PTR [rcx]
0066b 2b c8 sub ecx, eax
0066d 8b c1 mov eax, ecx
0066f 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR p$12[rbp]
00676 66 89 01 mov WORD PTR [rcx], ax
$LN47@stbi__jpeg:
$LN45@stbi__jpeg:
$LN44@stbi__jpeg:
; 2677 : }
; 2678 : } else {
00679 eb 2a jmp SHORT $LN43@stbi__jpeg
$LN42@stbi__jpeg:
; 2679 : if (r == 0) {
0067b 83 bd 24 01 00
00 00 cmp DWORD PTR r$9[rbp], 0
00682 75 13 jne SHORT $LN48@stbi__jpeg
; 2680 : *p = (short)s;
00684 48 8b 85 88 01
00 00 mov rax, QWORD PTR p$12[rbp]
0068b 0f b7 8d 44 01
00 00 movzx ecx, WORD PTR s$10[rbp]
00692 66 89 08 mov WORD PTR [rax], cx
; 2681 : break;
00695 eb 13 jmp SHORT $LN12@stbi__jpeg
$LN48@stbi__jpeg:
; 2682 : }
; 2683 : --r;
00697 8b 85 24 01 00
00 mov eax, DWORD PTR r$9[rbp]
0069d ff c8 dec eax
0069f 89 85 24 01 00
00 mov DWORD PTR r$9[rbp], eax
$LN43@stbi__jpeg:
; 2684 : }
; 2685 : }
006a5 e9 0d ff ff ff jmp $LN11@stbi__jpeg
$LN12@stbi__jpeg:
; 2686 : } while (k <= j->spec_end);
006aa 48 8b 85 80 02
00 00 mov rax, QWORD PTR j$[rbp]
006b1 8b 80 38 48 00
00 mov eax, DWORD PTR [rax+18488]
006b7 39 45 04 cmp DWORD PTR k$[rbp], eax
006ba 0f 8e e0 fd ff
ff jle $LN10@stbi__jpeg
$LN27@stbi__jpeg:
$LN15@stbi__jpeg:
; 2687 : }
; 2688 : }
; 2689 : return 1;
006c0 b8 01 00 00 00 mov eax, 1
$LN1@stbi__jpeg:
; 2690 : }
006c5 48 8d a5 68 02
00 00 lea rsp, QWORD PTR [rbp+616]
006cc 5f pop rdi
006cd 5d pop rbp
006ce c3 ret 0
stbi__jpeg_decode_block_prog_ac ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_decode_block_prog_dc
_TEXT SEGMENT
diff$ = 4
dc$ = 36
t$ = 68
tv87 = 276
tv206 = 276
tv210 = 276
j$ = 320
data$ = 328
hdc$ = 336
b$ = 344
stbi__jpeg_decode_block_prog_dc PROC ; COMDAT
; 2525 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 2526 : int diff, dc;
; 2527 : int t;
; 2528 : if (j->spec_end != 0)
0002f 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
00036 83 b8 38 48 00
00 00 cmp DWORD PTR [rax+18488], 0
0003d 74 11 je SHORT $LN2@stbi__jpeg
; 2529 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
0003f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
00046 e8 00 00 00 00 call stbi__err
0004b e9 f5 01 00 00 jmp $LN1@stbi__jpeg
$LN2@stbi__jpeg:
; 2530 :
; 2531 : if (j->code_bits < 16)
00050 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
00057 83 b8 24 48 00
00 10 cmp DWORD PTR [rax+18468], 16
0005e 7d 0d jge SHORT $LN3@stbi__jpeg
; 2532 : stbi__grow_buffer_unsafe(j);
00060 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
00067 e8 00 00 00 00 call stbi__grow_buffer_unsafe
0006c 90 npad 1
$LN3@stbi__jpeg:
; 2533 :
; 2534 : if (j->succ_high == 0) {
0006d 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
00074 83 b8 3c 48 00
00 00 cmp DWORD PTR [rax+18492], 0
0007b 0f 85 6c 01 00
00 jne $LN4@stbi__jpeg
; 2535 : // first scan for DC coefficient, must be first
; 2536 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now
00081 41 b8 80 00 00
00 mov r8d, 128 ; 00000080H
00087 33 d2 xor edx, edx
00089 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR data$[rbp]
00090 e8 00 00 00 00 call memset
00095 90 npad 1
; 2537 : t = stbi__jpeg_huff_decode(j, hdc);
00096 48 8b 95 50 01
00 00 mov rdx, QWORD PTR hdc$[rbp]
0009d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
000a4 e8 00 00 00 00 call stbi__jpeg_huff_decode
000a9 89 45 44 mov DWORD PTR t$[rbp], eax
; 2538 : if (t < 0 || t > 15)
000ac 83 7d 44 00 cmp DWORD PTR t$[rbp], 0
000b0 7c 06 jl SHORT $LN7@stbi__jpeg
000b2 83 7d 44 0f cmp DWORD PTR t$[rbp], 15
000b6 7e 11 jle SHORT $LN6@stbi__jpeg
$LN7@stbi__jpeg:
; 2539 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
000b8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
000bf e8 00 00 00 00 call stbi__err
000c4 e9 7c 01 00 00 jmp $LN1@stbi__jpeg
$LN6@stbi__jpeg:
; 2540 : diff = t ? stbi__extend_receive(j, t) : 0;
000c9 83 7d 44 00 cmp DWORD PTR t$[rbp], 0
000cd 74 17 je SHORT $LN12@stbi__jpeg
000cf 8b 55 44 mov edx, DWORD PTR t$[rbp]
000d2 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
000d9 e8 00 00 00 00 call stbi__extend_receive
000de 89 85 14 01 00
00 mov DWORD PTR tv87[rbp], eax
000e4 eb 0a jmp SHORT $LN13@stbi__jpeg
$LN12@stbi__jpeg:
000e6 c7 85 14 01 00
00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
$LN13@stbi__jpeg:
000f0 8b 85 14 01 00
00 mov eax, DWORD PTR tv87[rbp]
000f6 89 45 04 mov DWORD PTR diff$[rbp], eax
; 2541 :
; 2542 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff))
000f9 48 63 85 58 01
00 00 movsxd rax, DWORD PTR b$[rbp]
00100 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00104 8b 55 04 mov edx, DWORD PTR diff$[rbp]
00107 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
0010e 8b 8c 01 b8 46
00 00 mov ecx, DWORD PTR [rcx+rax+18104]
00115 e8 00 00 00 00 call stbi__addints_valid
0011a 85 c0 test eax, eax
0011c 75 11 jne SHORT $LN8@stbi__jpeg
; 2543 : return stbi__err("bad delta", "Corrupt JPEG");
0011e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09IFDKCGFO@bad?5delta@
00125 e8 00 00 00 00 call stbi__err
0012a e9 16 01 00 00 jmp $LN1@stbi__jpeg
$LN8@stbi__jpeg:
; 2544 : dc = j->img_comp[b].dc_pred + diff;
0012f 48 63 85 58 01
00 00 movsxd rax, DWORD PTR b$[rbp]
00136 48 6b c0 60 imul rax, rax, 96 ; 00000060H
0013a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
00141 8b 84 01 b8 46
00 00 mov eax, DWORD PTR [rcx+rax+18104]
00148 03 45 04 add eax, DWORD PTR diff$[rbp]
0014b 89 45 24 mov DWORD PTR dc$[rbp], eax
; 2545 : j->img_comp[b].dc_pred = dc;
0014e 48 63 85 58 01
00 00 movsxd rax, DWORD PTR b$[rbp]
00155 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00159 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
00160 8b 55 24 mov edx, DWORD PTR dc$[rbp]
00163 89 94 01 b8 46
00 00 mov DWORD PTR [rcx+rax+18104], edx
; 2546 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low))
0016a 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
00171 8b 80 40 48 00
00 mov eax, DWORD PTR [rax+18496]
00177 b9 01 00 00 00 mov ecx, 1
0017c 89 8d 14 01 00
00 mov DWORD PTR tv206[rbp], ecx
00182 0f b6 c8 movzx ecx, al
00185 8b 85 14 01 00
00 mov eax, DWORD PTR tv206[rbp]
0018b d3 e0 shl eax, cl
0018d 8b d0 mov edx, eax
0018f 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
00192 e8 00 00 00 00 call stbi__mul2shorts_valid
00197 85 c0 test eax, eax
00199 75 11 jne SHORT $LN9@stbi__jpeg
; 2547 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
0019b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
001a2 e8 00 00 00 00 call stbi__err
001a7 e9 99 00 00 00 jmp $LN1@stbi__jpeg
$LN9@stbi__jpeg:
; 2548 : data[0] = (short)(dc * (1 << j->succ_low));
001ac 48 8b 85 40 01
00 00 mov rax, QWORD PTR j$[rbp]
001b3 8b 80 40 48 00
00 mov eax, DWORD PTR [rax+18496]
001b9 b9 01 00 00 00 mov ecx, 1
001be 89 8d 14 01 00
00 mov DWORD PTR tv210[rbp], ecx
001c4 0f b6 c8 movzx ecx, al
001c7 8b 85 14 01 00
00 mov eax, DWORD PTR tv210[rbp]
001cd d3 e0 shl eax, cl
001cf 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
001d2 0f af c8 imul ecx, eax
001d5 8b c1 mov eax, ecx
001d7 b9 02 00 00 00 mov ecx, 2
001dc 48 6b c9 00 imul rcx, rcx, 0
001e0 48 8b 95 48 01
00 00 mov rdx, QWORD PTR data$[rbp]
001e7 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2549 : } else {
001eb eb 53 jmp SHORT $LN5@stbi__jpeg
$LN4@stbi__jpeg:
; 2550 : // refinement scan for DC coefficient
; 2551 : if (stbi__jpeg_get_bit(j))
001ed 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
001f4 e8 00 00 00 00 call stbi__jpeg_get_bit
001f9 85 c0 test eax, eax
001fb 74 43 je SHORT $LN10@stbi__jpeg
; 2552 : data[0] += (short)(1 << j->succ_low);
001fd b8 02 00 00 00 mov eax, 2
00202 48 6b c0 00 imul rax, rax, 0
00206 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR j$[rbp]
0020d 8b 89 40 48 00
00 mov ecx, DWORD PTR [rcx+18496]
00213 ba 01 00 00 00 mov edx, 1
00218 d3 e2 shl edx, cl
0021a 8b ca mov ecx, edx
0021c 0f bf c9 movsx ecx, cx
0021f 48 8b 95 48 01
00 00 mov rdx, QWORD PTR data$[rbp]
00226 0f bf 04 02 movsx eax, WORD PTR [rdx+rax]
0022a 03 c1 add eax, ecx
0022c b9 02 00 00 00 mov ecx, 2
00231 48 6b c9 00 imul rcx, rcx, 0
00235 48 8b 95 48 01
00 00 mov rdx, QWORD PTR data$[rbp]
0023c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
$LN10@stbi__jpeg:
$LN5@stbi__jpeg:
; 2553 : }
; 2554 : return 1;
00240 b8 01 00 00 00 mov eax, 1
$LN1@stbi__jpeg:
; 2555 : }
00245 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
0024c 5f pop rdi
0024d 5d pop rbp
0024e c3 ret 0
stbi__jpeg_decode_block_prog_dc ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_decode_block
_TEXT SEGMENT
diff$ = 4
dc$ = 36
k$ = 68
t$ = 100
zig$1 = 132
c$2 = 164
r$3 = 196
s$4 = 228
rs$5 = 260
tv81 = 468
tv276 = 472
j$ = 512
data$ = 520
hdc$ = 528
hac$ = 536
fac$ = 544
b$ = 552
dequant$ = 560
stbi__jpeg_decode_block PROC ; COMDAT
; 2461 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 02
00 00 sub rsp, 520 ; 00000208H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 2462 : int diff, dc, k;
; 2463 : int t;
; 2464 :
; 2465 : if (j->code_bits < 16)
0002f 48 8b 85 00 02
00 00 mov rax, QWORD PTR j$[rbp]
00036 83 b8 24 48 00
00 10 cmp DWORD PTR [rax+18468], 16
0003d 7d 0d jge SHORT $LN5@stbi__jpeg
; 2466 : stbi__grow_buffer_unsafe(j);
0003f 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
00046 e8 00 00 00 00 call stbi__grow_buffer_unsafe
0004b 90 npad 1
$LN5@stbi__jpeg:
; 2467 : t = stbi__jpeg_huff_decode(j, hdc);
0004c 48 8b 95 10 02
00 00 mov rdx, QWORD PTR hdc$[rbp]
00053 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
0005a e8 00 00 00 00 call stbi__jpeg_huff_decode
0005f 89 45 64 mov DWORD PTR t$[rbp], eax
; 2468 : if (t < 0 || t > 15)
00062 83 7d 64 00 cmp DWORD PTR t$[rbp], 0
00066 7c 06 jl SHORT $LN7@stbi__jpeg
00068 83 7d 64 0f cmp DWORD PTR t$[rbp], 15
0006c 7e 11 jle SHORT $LN6@stbi__jpeg
$LN7@stbi__jpeg:
; 2469 : return stbi__err("bad huffman code", "Corrupt JPEG");
0006e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
00075 e8 00 00 00 00 call stbi__err
0007a e9 53 03 00 00 jmp $LN1@stbi__jpeg
$LN6@stbi__jpeg:
; 2470 :
; 2471 : // 0 all the ac values now so we can do it 32-bits at a time
; 2472 : memset(data, 0, 64 * sizeof(data[0]));
0007f 41 b8 80 00 00
00 mov r8d, 128 ; 00000080H
00085 33 d2 xor edx, edx
00087 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR data$[rbp]
0008e e8 00 00 00 00 call memset
00093 90 npad 1
; 2473 :
; 2474 : diff = t ? stbi__extend_receive(j, t) : 0;
00094 83 7d 64 00 cmp DWORD PTR t$[rbp], 0
00098 74 17 je SHORT $LN19@stbi__jpeg
0009a 8b 55 64 mov edx, DWORD PTR t$[rbp]
0009d 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
000a4 e8 00 00 00 00 call stbi__extend_receive
000a9 89 85 d4 01 00
00 mov DWORD PTR tv81[rbp], eax
000af eb 0a jmp SHORT $LN20@stbi__jpeg
$LN19@stbi__jpeg:
000b1 c7 85 d4 01 00
00 00 00 00 00 mov DWORD PTR tv81[rbp], 0
$LN20@stbi__jpeg:
000bb 8b 85 d4 01 00
00 mov eax, DWORD PTR tv81[rbp]
000c1 89 45 04 mov DWORD PTR diff$[rbp], eax
; 2475 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff))
000c4 48 63 85 28 02
00 00 movsxd rax, DWORD PTR b$[rbp]
000cb 48 6b c0 60 imul rax, rax, 96 ; 00000060H
000cf 8b 55 04 mov edx, DWORD PTR diff$[rbp]
000d2 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
000d9 8b 8c 01 b8 46
00 00 mov ecx, DWORD PTR [rcx+rax+18104]
000e0 e8 00 00 00 00 call stbi__addints_valid
000e5 85 c0 test eax, eax
000e7 75 11 jne SHORT $LN8@stbi__jpeg
; 2476 : return stbi__err("bad delta", "Corrupt JPEG");
000e9 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09IFDKCGFO@bad?5delta@
000f0 e8 00 00 00 00 call stbi__err
000f5 e9 d8 02 00 00 jmp $LN1@stbi__jpeg
$LN8@stbi__jpeg:
; 2477 : dc = j->img_comp[b].dc_pred + diff;
000fa 48 63 85 28 02
00 00 movsxd rax, DWORD PTR b$[rbp]
00101 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00105 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
0010c 8b 84 01 b8 46
00 00 mov eax, DWORD PTR [rcx+rax+18104]
00113 03 45 04 add eax, DWORD PTR diff$[rbp]
00116 89 45 24 mov DWORD PTR dc$[rbp], eax
; 2478 : j->img_comp[b].dc_pred = dc;
00119 48 63 85 28 02
00 00 movsxd rax, DWORD PTR b$[rbp]
00120 48 6b c0 60 imul rax, rax, 96 ; 00000060H
00124 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
0012b 8b 55 24 mov edx, DWORD PTR dc$[rbp]
0012e 89 94 01 b8 46
00 00 mov DWORD PTR [rcx+rax+18104], edx
; 2479 : if (!stbi__mul2shorts_valid(dc, dequant[0]))
00135 b8 02 00 00 00 mov eax, 2
0013a 48 6b c0 00 imul rax, rax, 0
0013e 48 8b 8d 30 02
00 00 mov rcx, QWORD PTR dequant$[rbp]
00145 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00149 8b d0 mov edx, eax
0014b 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
0014e e8 00 00 00 00 call stbi__mul2shorts_valid
00153 85 c0 test eax, eax
00155 75 11 jne SHORT $LN9@stbi__jpeg
; 2480 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
00157 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
0015e e8 00 00 00 00 call stbi__err
00163 e9 6a 02 00 00 jmp $LN1@stbi__jpeg
$LN9@stbi__jpeg:
; 2481 : data[0] = (short)(dc * dequant[0]);
00168 b8 02 00 00 00 mov eax, 2
0016d 48 6b c0 00 imul rax, rax, 0
00171 48 8b 8d 30 02
00 00 mov rcx, QWORD PTR dequant$[rbp]
00178 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
0017c 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
0017f 0f af c8 imul ecx, eax
00182 8b c1 mov eax, ecx
00184 b9 02 00 00 00 mov ecx, 2
00189 48 6b c9 00 imul rcx, rcx, 0
0018d 48 8b 95 08 02
00 00 mov rdx, QWORD PTR data$[rbp]
00194 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2482 :
; 2483 : // decode AC components, see JPEG spec
; 2484 : k = 1;
00198 c7 45 44 01 00
00 00 mov DWORD PTR k$[rbp], 1
$LN4@stbi__jpeg:
; 2485 : do {
; 2486 : unsigned int zig;
; 2487 : int c, r, s;
; 2488 : if (j->code_bits < 16)
0019f 48 8b 85 00 02
00 00 mov rax, QWORD PTR j$[rbp]
001a6 83 b8 24 48 00
00 10 cmp DWORD PTR [rax+18468], 16
001ad 7d 0d jge SHORT $LN10@stbi__jpeg
; 2489 : stbi__grow_buffer_unsafe(j);
001af 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
001b6 e8 00 00 00 00 call stbi__grow_buffer_unsafe
001bb 90 npad 1
$LN10@stbi__jpeg:
; 2490 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1);
001bc 48 8b 85 00 02
00 00 mov rax, QWORD PTR j$[rbp]
001c3 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
001c9 c1 e8 17 shr eax, 23
001cc 25 ff 01 00 00 and eax, 511 ; 000001ffH
001d1 89 85 a4 00 00
00 mov DWORD PTR c$2[rbp], eax
; 2491 : r = fac[c];
001d7 48 63 85 a4 00
00 00 movsxd rax, DWORD PTR c$2[rbp]
001de 48 8b 8d 20 02
00 00 mov rcx, QWORD PTR fac$[rbp]
001e5 0f bf 04 41 movsx eax, WORD PTR [rcx+rax*2]
001e9 89 85 c4 00 00
00 mov DWORD PTR r$3[rbp], eax
; 2492 : if (r) { // fast-AC path
001ef 83 bd c4 00 00
00 00 cmp DWORD PTR r$3[rbp], 0
001f6 0f 84 f0 00 00
00 je $LN11@stbi__jpeg
; 2493 : k += (r >> 4) & 15; // run
001fc 8b 85 c4 00 00
00 mov eax, DWORD PTR r$3[rbp]
00202 c1 f8 04 sar eax, 4
00205 83 e0 0f and eax, 15
00208 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
0020b 03 c8 add ecx, eax
0020d 8b c1 mov eax, ecx
0020f 89 45 44 mov DWORD PTR k$[rbp], eax
; 2494 : s = r & 15; // combined length
00212 8b 85 c4 00 00
00 mov eax, DWORD PTR r$3[rbp]
00218 83 e0 0f and eax, 15
0021b 89 85 e4 00 00
00 mov DWORD PTR s$4[rbp], eax
; 2495 : if (s > j->code_bits)
00221 48 8b 85 00 02
00 00 mov rax, QWORD PTR j$[rbp]
00228 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
0022e 39 85 e4 00 00
00 cmp DWORD PTR s$4[rbp], eax
00234 7e 11 jle SHORT $LN13@stbi__jpeg
; 2496 : return stbi__err("bad huffman code",
00236 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
0023d e8 00 00 00 00 call stbi__err
00242 e9 8b 01 00 00 jmp $LN1@stbi__jpeg
$LN13@stbi__jpeg:
; 2497 : "Combined length longer than code bits available");
; 2498 : j->code_buffer <<= s;
00247 8b 85 e4 00 00
00 mov eax, DWORD PTR s$4[rbp]
0024d 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
00254 48 89 8d d8 01
00 00 mov QWORD PTR tv276[rbp], rcx
0025b 0f b6 c8 movzx ecx, al
0025e 48 8b 85 d8 01
00 00 mov rax, QWORD PTR tv276[rbp]
00265 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
0026b d3 e0 shl eax, cl
0026d 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
00274 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2499 : j->code_bits -= s;
0027a 48 8b 85 00 02
00 00 mov rax, QWORD PTR j$[rbp]
00281 8b 8d e4 00 00
00 mov ecx, DWORD PTR s$4[rbp]
00287 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
0028d 2b c1 sub eax, ecx
0028f 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
00296 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2500 : // decode into unzigzag'd location
; 2501 : zig = stbi__jpeg_dezigzag[k++];
0029c 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
002a0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
002a7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
002ab 89 85 84 00 00
00 mov DWORD PTR zig$1[rbp], eax
002b1 8b 45 44 mov eax, DWORD PTR k$[rbp]
002b4 ff c0 inc eax
002b6 89 45 44 mov DWORD PTR k$[rbp], eax
; 2502 : data[zig] = (short)((r >> 8) * dequant[zig]);
002b9 8b 85 c4 00 00
00 mov eax, DWORD PTR r$3[rbp]
002bf c1 f8 08 sar eax, 8
002c2 8b 8d 84 00 00
00 mov ecx, DWORD PTR zig$1[rbp]
002c8 48 8b 95 30 02
00 00 mov rdx, QWORD PTR dequant$[rbp]
002cf 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2]
002d3 0f af c1 imul eax, ecx
002d6 8b 8d 84 00 00
00 mov ecx, DWORD PTR zig$1[rbp]
002dc 48 8b 95 08 02
00 00 mov rdx, QWORD PTR data$[rbp]
002e3 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
; 2503 : } else {
002e7 e9 d7 00 00 00 jmp $LN12@stbi__jpeg
$LN11@stbi__jpeg:
; 2504 : int rs = stbi__jpeg_huff_decode(j, hac);
002ec 48 8b 95 18 02
00 00 mov rdx, QWORD PTR hac$[rbp]
002f3 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
002fa e8 00 00 00 00 call stbi__jpeg_huff_decode
002ff 89 85 04 01 00
00 mov DWORD PTR rs$5[rbp], eax
; 2505 : if (rs < 0)
00305 83 bd 04 01 00
00 00 cmp DWORD PTR rs$5[rbp], 0
0030c 7d 11 jge SHORT $LN14@stbi__jpeg
; 2506 : return stbi__err("bad huffman code", "Corrupt JPEG");
0030e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
00315 e8 00 00 00 00 call stbi__err
0031a e9 b3 00 00 00 jmp $LN1@stbi__jpeg
$LN14@stbi__jpeg:
; 2507 : s = rs & 15;
0031f 8b 85 04 01 00
00 mov eax, DWORD PTR rs$5[rbp]
00325 83 e0 0f and eax, 15
00328 89 85 e4 00 00
00 mov DWORD PTR s$4[rbp], eax
; 2508 : r = rs >> 4;
0032e 8b 85 04 01 00
00 mov eax, DWORD PTR rs$5[rbp]
00334 c1 f8 04 sar eax, 4
00337 89 85 c4 00 00
00 mov DWORD PTR r$3[rbp], eax
; 2509 : if (s == 0) {
0033d 83 bd e4 00 00
00 00 cmp DWORD PTR s$4[rbp], 0
00344 75 19 jne SHORT $LN15@stbi__jpeg
; 2510 : if (rs != 0xf0)
00346 81 bd 04 01 00
00 f0 00 00 00 cmp DWORD PTR rs$5[rbp], 240 ; 000000f0H
00350 74 02 je SHORT $LN17@stbi__jpeg
; 2511 : break; // end block
00352 eb 79 jmp SHORT $LN3@stbi__jpeg
$LN17@stbi__jpeg:
; 2512 : k += 16;
00354 8b 45 44 mov eax, DWORD PTR k$[rbp]
00357 83 c0 10 add eax, 16
0035a 89 45 44 mov DWORD PTR k$[rbp], eax
; 2513 : } else {
0035d eb 64 jmp SHORT $LN16@stbi__jpeg
$LN15@stbi__jpeg:
; 2514 : k += r;
0035f 8b 85 c4 00 00
00 mov eax, DWORD PTR r$3[rbp]
00365 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
00368 03 c8 add ecx, eax
0036a 8b c1 mov eax, ecx
0036c 89 45 44 mov DWORD PTR k$[rbp], eax
; 2515 : // decode into unzigzag'd location
; 2516 : zig = stbi__jpeg_dezigzag[k++];
0036f 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
00373 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
0037a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0037e 89 85 84 00 00
00 mov DWORD PTR zig$1[rbp], eax
00384 8b 45 44 mov eax, DWORD PTR k$[rbp]
00387 ff c0 inc eax
00389 89 45 44 mov DWORD PTR k$[rbp], eax
; 2517 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]);
0038c 8b 95 e4 00 00
00 mov edx, DWORD PTR s$4[rbp]
00392 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR j$[rbp]
00399 e8 00 00 00 00 call stbi__extend_receive
0039e 8b 8d 84 00 00
00 mov ecx, DWORD PTR zig$1[rbp]
003a4 48 8b 95 30 02
00 00 mov rdx, QWORD PTR dequant$[rbp]
003ab 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2]
003af 0f af c1 imul eax, ecx
003b2 8b 8d 84 00 00
00 mov ecx, DWORD PTR zig$1[rbp]
003b8 48 8b 95 08 02
00 00 mov rdx, QWORD PTR data$[rbp]
003bf 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
$LN16@stbi__jpeg:
$LN12@stbi__jpeg:
; 2518 : }
; 2519 : }
; 2520 : } while (k < 64);
003c3 83 7d 44 40 cmp DWORD PTR k$[rbp], 64 ; 00000040H
003c7 0f 8c d2 fd ff
ff jl $LN4@stbi__jpeg
$LN3@stbi__jpeg:
; 2521 : return 1;
003cd b8 01 00 00 00 mov eax, 1
$LN1@stbi__jpeg:
; 2522 : }
003d2 48 8d a5 e8 01
00 00 lea rsp, QWORD PTR [rbp+488]
003d9 5f pop rdi
003da 5d pop rbp
003db c3 ret 0
stbi__jpeg_decode_block ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_get_bit
_TEXT SEGMENT
k$ = 4
j$ = 256
stbi__jpeg_get_bit PROC ; COMDAT
; 2435 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 2436 : unsigned int k;
; 2437 : if (j->code_bits < 1)
00020 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00027 83 b8 24 48 00
00 01 cmp DWORD PTR [rax+18468], 1
0002e 7d 0d jge SHORT $LN2@stbi__jpeg
; 2438 : stbi__grow_buffer_unsafe(j);
00030 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR j$[rbp]
00037 e8 00 00 00 00 call stbi__grow_buffer_unsafe
0003c 90 npad 1
$LN2@stbi__jpeg:
; 2439 : if (j->code_bits < 1)
0003d 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00044 83 b8 24 48 00
00 01 cmp DWORD PTR [rax+18468], 1
0004b 7d 04 jge SHORT $LN3@stbi__jpeg
; 2440 : return 0; // ran out of bits from stream, return 0s intead of continuing
0004d 33 c0 xor eax, eax
0004f eb 50 jmp SHORT $LN1@stbi__jpeg
$LN3@stbi__jpeg:
; 2441 : k = j->code_buffer;
00051 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00058 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
0005e 89 45 04 mov DWORD PTR k$[rbp], eax
; 2442 : j->code_buffer <<= 1;
00061 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00068 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
0006e d1 e0 shl eax, 1
00070 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR j$[rbp]
00077 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2443 : --j->code_bits;
0007d 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
00084 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
0008a ff c8 dec eax
0008c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR j$[rbp]
00093 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2444 : return k & 0x80000000;
00099 8b 45 04 mov eax, DWORD PTR k$[rbp]
0009c 25 00 00 00 80 and eax, -2147483648 ; 80000000H
$LN1@stbi__jpeg:
; 2445 : }
000a1 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000a8 5f pop rdi
000a9 5d pop rbp
000aa c3 ret 0
stbi__jpeg_get_bit ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_get_bits
_TEXT SEGMENT
k$ = 4
j$ = 256
n$ = 264
stbi__jpeg_get_bits PROC ; COMDAT
; 2421 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 2422 : unsigned int k;
; 2423 : if (j->code_bits < n)
00024 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0002b 8b 8d 08 01 00
00 mov ecx, DWORD PTR n$[rbp]
00031 39 88 24 48 00
00 cmp DWORD PTR [rax+18468], ecx
00037 7d 0d jge SHORT $LN2@stbi__jpeg
; 2424 : stbi__grow_buffer_unsafe(j);
00039 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR j$[rbp]
00040 e8 00 00 00 00 call stbi__grow_buffer_unsafe
00045 90 npad 1
$LN2@stbi__jpeg:
; 2425 : if (j->code_bits < n)
00046 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0004d 8b 8d 08 01 00
00 mov ecx, DWORD PTR n$[rbp]
00053 39 88 24 48 00
00 cmp DWORD PTR [rax+18468], ecx
00059 7d 07 jge SHORT $LN3@stbi__jpeg
; 2426 : return 0; // ran out of bits from stream, return 0s intead of continuing
0005b 33 c0 xor eax, eax
0005d e9 82 00 00 00 jmp $LN1@stbi__jpeg
$LN3@stbi__jpeg:
; 2427 : k = stbi_lrot(j->code_buffer, n);
00062 8b 95 08 01 00
00 mov edx, DWORD PTR n$[rbp]
00068 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
0006f 8b 88 20 48 00
00 mov ecx, DWORD PTR [rax+18464]
00075 e8 00 00 00 00 call _lrotl
0007a 89 45 04 mov DWORD PTR k$[rbp], eax
; 2428 : j->code_buffer = k & ~stbi__bmask[n];
0007d 48 63 85 08 01
00 00 movsxd rax, DWORD PTR n$[rbp]
00084 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__bmask
0008b 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
0008e f7 d0 not eax
00090 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
00093 23 c8 and ecx, eax
00095 8b c1 mov eax, ecx
00097 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR j$[rbp]
0009e 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2429 : k &= stbi__bmask[n];
000a4 48 63 85 08 01
00 00 movsxd rax, DWORD PTR n$[rbp]
000ab 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__bmask
000b2 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
000b5 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
000b8 23 c8 and ecx, eax
000ba 8b c1 mov eax, ecx
000bc 89 45 04 mov DWORD PTR k$[rbp], eax
; 2430 : j->code_bits -= n;
000bf 48 8b 85 00 01
00 00 mov rax, QWORD PTR j$[rbp]
000c6 8b 8d 08 01 00
00 mov ecx, DWORD PTR n$[rbp]
000cc 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
000d2 2b c1 sub eax, ecx
000d4 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR j$[rbp]
000db 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2431 : return k;
000e1 8b 45 04 mov eax, DWORD PTR k$[rbp]
$LN1@stbi__jpeg:
; 2432 : }
000e4 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000eb 5f pop rdi
000ec 5d pop rbp
000ed c3 ret 0
stbi__jpeg_get_bits ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__extend_receive
_TEXT SEGMENT
k$ = 4
sgn$ = 36
j$ = 288
n$ = 296
stbi__extend_receive PROC ; COMDAT
; 2402 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 2403 : unsigned int k;
; 2404 : int sgn;
; 2405 : if (j->code_bits < n)
00024 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
0002b 8b 8d 28 01 00
00 mov ecx, DWORD PTR n$[rbp]
00031 39 88 24 48 00
00 cmp DWORD PTR [rax+18468], ecx
00037 7d 0d jge SHORT $LN2@stbi__exte
; 2406 : stbi__grow_buffer_unsafe(j);
00039 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR j$[rbp]
00040 e8 00 00 00 00 call stbi__grow_buffer_unsafe
00045 90 npad 1
$LN2@stbi__exte:
; 2407 : if (j->code_bits < n)
00046 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
0004d 8b 8d 28 01 00
00 mov ecx, DWORD PTR n$[rbp]
00053 39 88 24 48 00
00 cmp DWORD PTR [rax+18468], ecx
00059 7d 07 jge SHORT $LN3@stbi__exte
; 2408 : return 0; // ran out of bits from stream, return 0s intead of continuing
0005b 33 c0 xor eax, eax
0005d e9 b1 00 00 00 jmp $LN1@stbi__exte
$LN3@stbi__exte:
; 2409 :
; 2410 : sgn = j->code_buffer >>
00062 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
00069 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
0006f c1 e8 1f shr eax, 31
00072 89 45 24 mov DWORD PTR sgn$[rbp], eax
; 2411 : 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative)
; 2412 : k = stbi_lrot(j->code_buffer, n);
00075 8b 95 28 01 00
00 mov edx, DWORD PTR n$[rbp]
0007b 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
00082 8b 88 20 48 00
00 mov ecx, DWORD PTR [rax+18464]
00088 e8 00 00 00 00 call _lrotl
0008d 89 45 04 mov DWORD PTR k$[rbp], eax
; 2413 : j->code_buffer = k & ~stbi__bmask[n];
00090 48 63 85 28 01
00 00 movsxd rax, DWORD PTR n$[rbp]
00097 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__bmask
0009e 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
000a1 f7 d0 not eax
000a3 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
000a6 23 c8 and ecx, eax
000a8 8b c1 mov eax, ecx
000aa 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR j$[rbp]
000b1 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2414 : k &= stbi__bmask[n];
000b7 48 63 85 28 01
00 00 movsxd rax, DWORD PTR n$[rbp]
000be 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__bmask
000c5 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
000c8 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
000cb 23 c8 and ecx, eax
000cd 8b c1 mov eax, ecx
000cf 89 45 04 mov DWORD PTR k$[rbp], eax
; 2415 : j->code_bits -= n;
000d2 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
000d9 8b 8d 28 01 00
00 mov ecx, DWORD PTR n$[rbp]
000df 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
000e5 2b c1 sub eax, ecx
000e7 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR j$[rbp]
000ee 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2416 : return k + (stbi__jbias[n] & (sgn - 1));
000f4 48 63 85 28 01
00 00 movsxd rax, DWORD PTR n$[rbp]
000fb 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:stbi__jbias
00102 8b 55 24 mov edx, DWORD PTR sgn$[rbp]
00105 ff ca dec edx
00107 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
0010a 23 c2 and eax, edx
0010c 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
0010f 03 c8 add ecx, eax
00111 8b c1 mov eax, ecx
$LN1@stbi__exte:
; 2417 : }
00113 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
0011a 5f pop rdi
0011b 5d pop rbp
0011c c3 ret 0
stbi__extend_receive ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_huff_decode
_TEXT SEGMENT
temp$ = 4
c$ = 36
k$ = 68
s$1 = 100
tv212 = 312
tv233 = 312
tv242 = 312
tv253 = 312
j$ = 352
h$ = 360
stbi__jpeg_huff_decode PROC ; COMDAT
; 2343 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 68 01
00 00 sub rsp, 360 ; 00000168H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 2344 : unsigned int temp;
; 2345 : int c, k;
; 2346 :
; 2347 : if (j->code_bits < 16)
00025 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
0002c 83 b8 24 48 00
00 10 cmp DWORD PTR [rax+18468], 16
00033 7d 0d jge SHORT $LN5@stbi__jpeg
; 2348 : stbi__grow_buffer_unsafe(j);
00035 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
0003c e8 00 00 00 00 call stbi__grow_buffer_unsafe
00041 90 npad 1
$LN5@stbi__jpeg:
; 2349 :
; 2350 : // look at the top FAST_BITS and determine what symbol ID it is,
; 2351 : // if the code is <= FAST_BITS
; 2352 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1);
00042 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
00049 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
0004f c1 e8 17 shr eax, 23
00052 25 ff 01 00 00 and eax, 511 ; 000001ffH
00057 89 45 24 mov DWORD PTR c$[rbp], eax
; 2353 : k = h->fast[c];
0005a 48 63 45 24 movsxd rax, DWORD PTR c$[rbp]
0005e 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR h$[rbp]
00065 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00069 89 45 44 mov DWORD PTR k$[rbp], eax
; 2354 : if (k < 255) {
0006c 81 7d 44 ff 00
00 00 cmp DWORD PTR k$[rbp], 255 ; 000000ffH
00073 0f 8d 99 00 00
00 jge $LN6@stbi__jpeg
; 2355 : int s = h->size[k];
00079 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
0007d 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR h$[rbp]
00084 0f b6 84 01 00
05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
0008c 89 45 64 mov DWORD PTR s$1[rbp], eax
; 2356 : if (s > j->code_bits)
0008f 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
00096 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
0009c 39 45 64 cmp DWORD PTR s$1[rbp], eax
0009f 7e 0a jle SHORT $LN7@stbi__jpeg
; 2357 : return -1;
000a1 b8 ff ff ff ff mov eax, -1
000a6 e9 41 02 00 00 jmp $LN1@stbi__jpeg
$LN7@stbi__jpeg:
; 2358 : j->code_buffer <<= s;
000ab 8b 45 64 mov eax, DWORD PTR s$1[rbp]
000ae 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
000b5 48 89 8d 38 01
00 00 mov QWORD PTR tv212[rbp], rcx
000bc 0f b6 c8 movzx ecx, al
000bf 48 8b 85 38 01
00 00 mov rax, QWORD PTR tv212[rbp]
000c6 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
000cc d3 e0 shl eax, cl
000ce 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
000d5 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2359 : j->code_bits -= s;
000db 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
000e2 8b 4d 64 mov ecx, DWORD PTR s$1[rbp]
000e5 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
000eb 2b c1 sub eax, ecx
000ed 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
000f4 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2360 : return h->values[k];
000fa 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
000fe 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR h$[rbp]
00105 0f b6 84 01 00
04 00 00 movzx eax, BYTE PTR [rcx+rax+1024]
0010d e9 da 01 00 00 jmp $LN1@stbi__jpeg
$LN6@stbi__jpeg:
; 2361 : }
; 2362 :
; 2363 : // naive test is to shift the code_buffer down so k bits are
; 2364 : // valid, then test against maxcode. To speed this up, we've
; 2365 : // preshifted maxcode left so that it has (16-k) 0s at the
; 2366 : // end; in other words, regardless of the number of bits, it
; 2367 : // wants to be compared against something shifted to have 16;
; 2368 : // that way we don't need to shift inside the loop.
; 2369 : temp = j->code_buffer >> 16;
00112 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
00119 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
0011f c1 e8 10 shr eax, 16
00122 89 45 04 mov DWORD PTR temp$[rbp], eax
; 2370 : for (k = FAST_BITS + 1;; ++k)
00125 c7 45 44 0a 00
00 00 mov DWORD PTR k$[rbp], 10
0012c eb 08 jmp SHORT $LN4@stbi__jpeg
$LN2@stbi__jpeg:
0012e 8b 45 44 mov eax, DWORD PTR k$[rbp]
00131 ff c0 inc eax
00133 89 45 44 mov DWORD PTR k$[rbp], eax
$LN4@stbi__jpeg:
; 2371 : if (temp < h->maxcode[k])
00136 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
0013a 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR h$[rbp]
00141 8b 84 81 04 06
00 00 mov eax, DWORD PTR [rcx+rax*4+1540]
00148 39 45 04 cmp DWORD PTR temp$[rbp], eax
0014b 73 02 jae SHORT $LN8@stbi__jpeg
; 2372 : break;
0014d eb 02 jmp SHORT $LN3@stbi__jpeg
$LN8@stbi__jpeg:
0014f eb dd jmp SHORT $LN2@stbi__jpeg
$LN3@stbi__jpeg:
; 2373 : if (k == 17) {
00151 83 7d 44 11 cmp DWORD PTR k$[rbp], 17
00155 75 27 jne SHORT $LN9@stbi__jpeg
; 2374 : // error! code not found
; 2375 : j->code_bits -= 16;
00157 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
0015e 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
00164 83 e8 10 sub eax, 16
00167 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
0016e 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2376 : return -1;
00174 b8 ff ff ff ff mov eax, -1
00179 e9 6e 01 00 00 jmp $LN1@stbi__jpeg
$LN9@stbi__jpeg:
; 2377 : }
; 2378 :
; 2379 : if (k > j->code_bits)
0017e 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
00185 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
0018b 39 45 44 cmp DWORD PTR k$[rbp], eax
0018e 7e 0a jle SHORT $LN10@stbi__jpeg
; 2380 : return -1;
00190 b8 ff ff ff ff mov eax, -1
00195 e9 52 01 00 00 jmp $LN1@stbi__jpeg
$LN10@stbi__jpeg:
; 2381 :
; 2382 : // convert the huffman code to the symbol id
; 2383 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k];
0019a b8 20 00 00 00 mov eax, 32 ; 00000020H
0019f 2b 45 44 sub eax, DWORD PTR k$[rbp]
001a2 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
001a9 48 89 8d 38 01
00 00 mov QWORD PTR tv233[rbp], rcx
001b0 0f b6 c8 movzx ecx, al
001b3 48 8b 85 38 01
00 00 mov rax, QWORD PTR tv233[rbp]
001ba 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
001c0 d3 e8 shr eax, cl
001c2 48 63 4d 44 movsxd rcx, DWORD PTR k$[rbp]
001c6 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__bmask
001cd 23 04 8a and eax, DWORD PTR [rdx+rcx*4]
001d0 48 63 4d 44 movsxd rcx, DWORD PTR k$[rbp]
001d4 48 8b 95 68 01
00 00 mov rdx, QWORD PTR h$[rbp]
001db 03 84 8a 4c 06
00 00 add eax, DWORD PTR [rdx+rcx*4+1612]
001e2 89 45 24 mov DWORD PTR c$[rbp], eax
; 2384 : if (c < 0 || c >= 256) // symbol id out of bounds!
001e5 83 7d 24 00 cmp DWORD PTR c$[rbp], 0
001e9 7c 09 jl SHORT $LN12@stbi__jpeg
001eb 81 7d 24 00 01
00 00 cmp DWORD PTR c$[rbp], 256 ; 00000100H
001f2 7c 0a jl SHORT $LN11@stbi__jpeg
$LN12@stbi__jpeg:
; 2385 : return -1;
001f4 b8 ff ff ff ff mov eax, -1
001f9 e9 ee 00 00 00 jmp $LN1@stbi__jpeg
$LN11@stbi__jpeg:
; 2386 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) ==
001fe 48 63 45 24 movsxd rax, DWORD PTR c$[rbp]
00202 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR h$[rbp]
00209 0f b6 84 01 00
05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
00211 b9 20 00 00 00 mov ecx, 32 ; 00000020H
00216 2b c8 sub ecx, eax
00218 8b c1 mov eax, ecx
0021a 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
00221 48 89 8d 38 01
00 00 mov QWORD PTR tv242[rbp], rcx
00228 0f b6 c8 movzx ecx, al
0022b 48 8b 85 38 01
00 00 mov rax, QWORD PTR tv242[rbp]
00232 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
00238 d3 e8 shr eax, cl
0023a 48 63 4d 24 movsxd rcx, DWORD PTR c$[rbp]
0023e 48 8b 95 68 01
00 00 mov rdx, QWORD PTR h$[rbp]
00245 0f b6 8c 0a 00
05 00 00 movzx ecx, BYTE PTR [rdx+rcx+1280]
0024d 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__bmask
00254 23 04 8a and eax, DWORD PTR [rdx+rcx*4]
00257 48 63 4d 24 movsxd rcx, DWORD PTR c$[rbp]
0025b 48 8b 95 68 01
00 00 mov rdx, QWORD PTR h$[rbp]
00262 0f b7 8c 4a 00
02 00 00 movzx ecx, WORD PTR [rdx+rcx*2+512]
0026a 3b c1 cmp eax, ecx
0026c 74 1c je SHORT $LN14@stbi__jpeg
0026e 41 b8 53 09 00
00 mov r8d, 2387 ; 00000953H
00274 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
0027b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@
00282 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00288 33 c0 xor eax, eax
$LN14@stbi__jpeg:
; 2387 : h->code[c]);
; 2388 :
; 2389 : // convert the id to a symbol
; 2390 : j->code_bits -= k;
0028a 48 8b 85 60 01
00 00 mov rax, QWORD PTR j$[rbp]
00291 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
00294 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
0029a 2b c1 sub eax, ecx
0029c 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
002a3 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2391 : j->code_buffer <<= k;
002a9 8b 45 44 mov eax, DWORD PTR k$[rbp]
002ac 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
002b3 48 89 8d 38 01
00 00 mov QWORD PTR tv253[rbp], rcx
002ba 0f b6 c8 movzx ecx, al
002bd 48 8b 85 38 01
00 00 mov rax, QWORD PTR tv253[rbp]
002c4 8b 80 20 48 00
00 mov eax, DWORD PTR [rax+18464]
002ca d3 e0 shl eax, cl
002cc 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR j$[rbp]
002d3 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2392 : return h->values[c];
002d9 48 63 45 24 movsxd rax, DWORD PTR c$[rbp]
002dd 48 8b 8d 68 01
00 00 mov rcx, QWORD PTR h$[rbp]
002e4 0f b6 84 01 00
04 00 00 movzx eax, BYTE PTR [rcx+rax+1024]
$LN1@stbi__jpeg:
; 2393 : }
002ec 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
002f3 5f pop rdi
002f4 5d pop rbp
002f5 c3 ret 0
stbi__jpeg_huff_decode ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__grow_buffer_unsafe
_TEXT SEGMENT
b$1 = 4
c$2 = 36
tv70 = 244
j$ = 288
stbi__grow_buffer_unsafe PROC ; COMDAT
; 2319 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
$LN4@stbi__grow:
; 2320 : do {
; 2321 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s);
00020 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
00027 83 b8 2c 48 00
00 00 cmp DWORD PTR [rax+18476], 0
0002e 74 0c je SHORT $LN10@stbi__grow
00030 c7 85 f4 00 00
00 00 00 00 00 mov DWORD PTR tv70[rbp], 0
0003a eb 18 jmp SHORT $LN11@stbi__grow
$LN10@stbi__grow:
0003c 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
00043 48 8b 08 mov rcx, QWORD PTR [rax]
00046 e8 00 00 00 00 call stbi__get8
0004b 0f b6 c0 movzx eax, al
0004e 89 85 f4 00 00
00 mov DWORD PTR tv70[rbp], eax
$LN11@stbi__grow:
00054 8b 85 f4 00 00
00 mov eax, DWORD PTR tv70[rbp]
0005a 89 45 04 mov DWORD PTR b$1[rbp], eax
; 2322 : if (b == 0xff) {
0005d 81 7d 04 ff 00
00 00 cmp DWORD PTR b$1[rbp], 255 ; 000000ffH
00064 75 5f jne SHORT $LN7@stbi__grow
; 2323 : int c = stbi__get8(j->s);
00066 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
0006d 48 8b 08 mov rcx, QWORD PTR [rax]
00070 e8 00 00 00 00 call stbi__get8
00075 0f b6 c0 movzx eax, al
00078 89 45 24 mov DWORD PTR c$2[rbp], eax
$LN5@stbi__grow:
; 2324 : while (c == 0xff)
0007b 81 7d 24 ff 00
00 00 cmp DWORD PTR c$2[rbp], 255 ; 000000ffH
00082 75 17 jne SHORT $LN6@stbi__grow
; 2325 : c = stbi__get8(j->s); // consume fill bytes
00084 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
0008b 48 8b 08 mov rcx, QWORD PTR [rax]
0008e e8 00 00 00 00 call stbi__get8
00093 0f b6 c0 movzx eax, al
00096 89 45 24 mov DWORD PTR c$2[rbp], eax
00099 eb e0 jmp SHORT $LN5@stbi__grow
$LN6@stbi__grow:
; 2326 : if (c != 0) {
0009b 83 7d 24 00 cmp DWORD PTR c$2[rbp], 0
0009f 74 24 je SHORT $LN8@stbi__grow
; 2327 : j->marker = (unsigned char)c;
000a1 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
000a8 0f b6 4d 24 movzx ecx, BYTE PTR c$2[rbp]
000ac 88 88 28 48 00
00 mov BYTE PTR [rax+18472], cl
; 2328 : j->nomore = 1;
000b2 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
000b9 c7 80 2c 48 00
00 01 00 00 00 mov DWORD PTR [rax+18476], 1
; 2329 : return;
000c3 eb 6b jmp SHORT $LN1@stbi__grow
$LN8@stbi__grow:
$LN7@stbi__grow:
; 2330 : }
; 2331 : }
; 2332 : j->code_buffer |= b << (24 - j->code_bits);
000c5 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
000cc b9 18 00 00 00 mov ecx, 24
000d1 2b 88 24 48 00
00 sub ecx, DWORD PTR [rax+18468]
000d7 8b c1 mov eax, ecx
000d9 0f b6 c8 movzx ecx, al
000dc 8b 45 04 mov eax, DWORD PTR b$1[rbp]
000df d3 e0 shl eax, cl
000e1 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR j$[rbp]
000e8 8b 89 20 48 00
00 mov ecx, DWORD PTR [rcx+18464]
000ee 0b c8 or ecx, eax
000f0 8b c1 mov eax, ecx
000f2 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR j$[rbp]
000f9 89 81 20 48 00
00 mov DWORD PTR [rcx+18464], eax
; 2333 : j->code_bits += 8;
000ff 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
00106 8b 80 24 48 00
00 mov eax, DWORD PTR [rax+18468]
0010c 83 c0 08 add eax, 8
0010f 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR j$[rbp]
00116 89 81 24 48 00
00 mov DWORD PTR [rcx+18468], eax
; 2334 : } while (j->code_bits <= 24);
0011c 48 8b 85 20 01
00 00 mov rax, QWORD PTR j$[rbp]
00123 83 b8 24 48 00
00 18 cmp DWORD PTR [rax+18468], 24
0012a 0f 8e f0 fe ff
ff jle $LN4@stbi__grow
$LN1@stbi__grow:
; 2335 : }
00130 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00137 5f pop rdi
00138 5d pop rbp
00139 c3 ret 0
stbi__grow_buffer_unsafe ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__build_fast_ac
_TEXT SEGMENT
i$ = 4
fast$1 = 36
rs$2 = 68
run$3 = 100
magbits$4 = 132
len$5 = 164
k$6 = 196
m$7 = 228
tv174 = 436
tv178 = 436
fast_ac$ = 480
h$ = 488
stbi__build_fast_ac PROC ; COMDAT
; 2291 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 2292 : int i;
; 2293 : for (i = 0; i < (1 << FAST_BITS); ++i) {
00025 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
0002c eb 08 jmp SHORT $LN4@stbi__buil
$LN2@stbi__buil:
0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
00031 ff c0 inc eax
00033 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__buil:
00036 81 7d 04 00 02
00 00 cmp DWORD PTR i$[rbp], 512 ; 00000200H
0003d 0f 8d 6b 01 00
00 jge $LN3@stbi__buil
; 2294 : stbi_uc fast = h->fast[i];
00043 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00047 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR h$[rbp]
0004e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00052 88 45 24 mov BYTE PTR fast$1[rbp], al
; 2295 : fast_ac[i] = 0;
00055 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00059 33 c9 xor ecx, ecx
0005b 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR fast_ac$[rbp]
00062 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
; 2296 : if (fast < 255) {
00066 0f b6 45 24 movzx eax, BYTE PTR fast$1[rbp]
0006a 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
0006f 0f 8d 34 01 00
00 jge $LN5@stbi__buil
; 2297 : int rs = h->values[fast];
00075 0f b6 45 24 movzx eax, BYTE PTR fast$1[rbp]
00079 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR h$[rbp]
00080 0f b6 84 01 00
04 00 00 movzx eax, BYTE PTR [rcx+rax+1024]
00088 89 45 44 mov DWORD PTR rs$2[rbp], eax
; 2298 : int run = (rs >> 4) & 15;
0008b 8b 45 44 mov eax, DWORD PTR rs$2[rbp]
0008e c1 f8 04 sar eax, 4
00091 83 e0 0f and eax, 15
00094 89 45 64 mov DWORD PTR run$3[rbp], eax
; 2299 : int magbits = rs & 15;
00097 8b 45 44 mov eax, DWORD PTR rs$2[rbp]
0009a 83 e0 0f and eax, 15
0009d 89 85 84 00 00
00 mov DWORD PTR magbits$4[rbp], eax
; 2300 : int len = h->size[fast];
000a3 0f b6 45 24 movzx eax, BYTE PTR fast$1[rbp]
000a7 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR h$[rbp]
000ae 0f b6 84 01 00
05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
000b6 89 85 a4 00 00
00 mov DWORD PTR len$5[rbp], eax
; 2301 :
; 2302 : if (magbits && len + magbits <= FAST_BITS) {
000bc 83 bd 84 00 00
00 00 cmp DWORD PTR magbits$4[rbp], 0
000c3 0f 84 e0 00 00
00 je $LN6@stbi__buil
000c9 8b 85 84 00 00
00 mov eax, DWORD PTR magbits$4[rbp]
000cf 8b 8d a4 00 00
00 mov ecx, DWORD PTR len$5[rbp]
000d5 03 c8 add ecx, eax
000d7 8b c1 mov eax, ecx
000d9 83 f8 09 cmp eax, 9
000dc 0f 8f c7 00 00
00 jg $LN6@stbi__buil
; 2303 : // magnitude code followed by receive_extend code
; 2304 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >>
000e2 8b 85 a4 00 00
00 mov eax, DWORD PTR len$5[rbp]
000e8 0f b6 c8 movzx ecx, al
000eb 8b 45 04 mov eax, DWORD PTR i$[rbp]
000ee d3 e0 shl eax, cl
000f0 25 ff 01 00 00 and eax, 511 ; 000001ffH
000f5 b9 09 00 00 00 mov ecx, 9
000fa 2b 8d 84 00 00
00 sub ecx, DWORD PTR magbits$4[rbp]
00100 d3 f8 sar eax, cl
00102 89 85 c4 00 00
00 mov DWORD PTR k$6[rbp], eax
; 2305 : (FAST_BITS - magbits);
; 2306 : int m = 1 << (magbits - 1);
00108 8b 85 84 00 00
00 mov eax, DWORD PTR magbits$4[rbp]
0010e ff c8 dec eax
00110 b9 01 00 00 00 mov ecx, 1
00115 89 8d b4 01 00
00 mov DWORD PTR tv174[rbp], ecx
0011b 0f b6 c8 movzx ecx, al
0011e 8b 85 b4 01 00
00 mov eax, DWORD PTR tv174[rbp]
00124 d3 e0 shl eax, cl
00126 89 85 e4 00 00
00 mov DWORD PTR m$7[rbp], eax
; 2307 : if (k < m)
0012c 8b 85 e4 00 00
00 mov eax, DWORD PTR m$7[rbp]
00132 39 85 c4 00 00
00 cmp DWORD PTR k$6[rbp], eax
00138 7d 2c jge SHORT $LN7@stbi__buil
; 2308 : k += (~0U << magbits) + 1;
0013a 8b 85 84 00 00
00 mov eax, DWORD PTR magbits$4[rbp]
00140 b9 ff ff ff ff mov ecx, -1 ; ffffffffH
00145 89 8d b4 01 00
00 mov DWORD PTR tv178[rbp], ecx
0014b 0f b6 c8 movzx ecx, al
0014e 8b 85 b4 01 00
00 mov eax, DWORD PTR tv178[rbp]
00154 d3 e0 shl eax, cl
00156 8b 8d c4 00 00
00 mov ecx, DWORD PTR k$6[rbp]
0015c 8d 44 01 01 lea eax, DWORD PTR [rcx+rax+1]
00160 89 85 c4 00 00
00 mov DWORD PTR k$6[rbp], eax
$LN7@stbi__buil:
; 2309 : // if the result is small enough, we can fit it in fast_ac table
; 2310 : if (k >= -128 && k <= 127)
00166 83 bd c4 00 00
00 80 cmp DWORD PTR k$6[rbp], -128 ; ffffffffffffff80H
0016d 7c 3a jl SHORT $LN8@stbi__buil
0016f 83 bd c4 00 00
00 7f cmp DWORD PTR k$6[rbp], 127 ; 0000007fH
00176 7f 31 jg SHORT $LN8@stbi__buil
; 2311 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) +
00178 69 85 c4 00 00
00 00 01 00 00 imul eax, DWORD PTR k$6[rbp], 256 ; 00000100H
00182 6b 4d 64 10 imul ecx, DWORD PTR run$3[rbp], 16
00186 03 c1 add eax, ecx
00188 8b 8d 84 00 00
00 mov ecx, DWORD PTR magbits$4[rbp]
0018e 8b 95 a4 00 00
00 mov edx, DWORD PTR len$5[rbp]
00194 03 d1 add edx, ecx
00196 8b ca mov ecx, edx
00198 03 c1 add eax, ecx
0019a 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
0019e 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR fast_ac$[rbp]
001a5 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
$LN8@stbi__buil:
$LN6@stbi__buil:
$LN5@stbi__buil:
; 2312 : (len + magbits));
; 2313 : }
; 2314 : }
; 2315 : }
001a9 e9 80 fe ff ff jmp $LN2@stbi__buil
$LN3@stbi__buil:
; 2316 : }
001ae 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
001b5 5f pop rdi
001b6 5d pop rbp
001b7 c3 ret 0
stbi__build_fast_ac ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__build_huffman
_TEXT SEGMENT
i$ = 4
j$ = 36
k$ = 68
code$ = 100
s$1 = 132
c$2 = 164
m$3 = 196
tv238 = 404
h$ = 448
count$ = 456
stbi__build_huffman PROC ; COMDAT
; 2242 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec c8 01
00 00 sub rsp, 456 ; 000001c8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 2243 : int i, j, k = 0;
00025 c7 45 44 00 00
00 00 mov DWORD PTR k$[rbp], 0
; 2244 : unsigned int code;
; 2245 : // build size list for each symbol (from JPEG spec)
; 2246 : for (i = 0; i < 16; ++i) {
0002c c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00033 eb 08 jmp SHORT $LN4@stbi__buil
$LN2@stbi__buil:
00035 8b 45 04 mov eax, DWORD PTR i$[rbp]
00038 ff c0 inc eax
0003a 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__buil:
0003d 83 7d 04 10 cmp DWORD PTR i$[rbp], 16
00041 7d 61 jge SHORT $LN3@stbi__buil
; 2247 : for (j = 0; j < count[i]; ++j) {
00043 c7 45 24 00 00
00 00 mov DWORD PTR j$[rbp], 0
0004a eb 08 jmp SHORT $LN7@stbi__buil
$LN5@stbi__buil:
0004c 8b 45 24 mov eax, DWORD PTR j$[rbp]
0004f ff c0 inc eax
00051 89 45 24 mov DWORD PTR j$[rbp], eax
$LN7@stbi__buil:
00054 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00058 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR count$[rbp]
0005f 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
00062 39 45 24 cmp DWORD PTR j$[rbp], eax
00065 7d 3b jge SHORT $LN6@stbi__buil
; 2248 : h->size[k++] = (stbi_uc)(i + 1);
00067 8b 45 04 mov eax, DWORD PTR i$[rbp]
0006a ff c0 inc eax
0006c 48 63 4d 44 movsxd rcx, DWORD PTR k$[rbp]
00070 48 8b 95 c0 01
00 00 mov rdx, QWORD PTR h$[rbp]
00077 88 84 0a 00 05
00 00 mov BYTE PTR [rdx+rcx+1280], al
0007e 8b 45 44 mov eax, DWORD PTR k$[rbp]
00081 ff c0 inc eax
00083 89 45 44 mov DWORD PTR k$[rbp], eax
; 2249 : if (k >= 257)
00086 81 7d 44 01 01
00 00 cmp DWORD PTR k$[rbp], 257 ; 00000101H
0008d 7c 11 jl SHORT $LN19@stbi__buil
; 2250 : return stbi__err("bad size list", "Corrupt JPEG");
0008f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@DEFOLMLB@bad?5size?5list@
00096 e8 00 00 00 00 call stbi__err
0009b e9 10 02 00 00 jmp $LN1@stbi__buil
$LN19@stbi__buil:
; 2251 : }
000a0 eb aa jmp SHORT $LN5@stbi__buil
$LN6@stbi__buil:
; 2252 : }
000a2 eb 91 jmp SHORT $LN2@stbi__buil
$LN3@stbi__buil:
; 2253 : h->size[k] = 0;
000a4 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
000a8 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
000af c6 84 01 00 05
00 00 00 mov BYTE PTR [rcx+rax+1280], 0
; 2254 :
; 2255 : // compute actual symbols (from jpeg spec)
; 2256 : code = 0;
000b7 c7 45 64 00 00
00 00 mov DWORD PTR code$[rbp], 0
; 2257 : k = 0;
000be c7 45 44 00 00
00 00 mov DWORD PTR k$[rbp], 0
; 2258 : for (j = 1; j <= 16; ++j) {
000c5 c7 45 24 01 00
00 00 mov DWORD PTR j$[rbp], 1
000cc eb 08 jmp SHORT $LN10@stbi__buil
$LN8@stbi__buil:
000ce 8b 45 24 mov eax, DWORD PTR j$[rbp]
000d1 ff c0 inc eax
000d3 89 45 24 mov DWORD PTR j$[rbp], eax
$LN10@stbi__buil:
000d6 83 7d 24 10 cmp DWORD PTR j$[rbp], 16
000da 0f 8f ca 00 00
00 jg $LN9@stbi__buil
; 2259 : // compute delta to add to code to compute symbol id
; 2260 : h->delta[j] = k - code;
000e0 8b 45 64 mov eax, DWORD PTR code$[rbp]
000e3 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
000e6 2b c8 sub ecx, eax
000e8 8b c1 mov eax, ecx
000ea 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
000ee 48 8b 95 c0 01
00 00 mov rdx, QWORD PTR h$[rbp]
000f5 89 84 8a 4c 06
00 00 mov DWORD PTR [rdx+rcx*4+1612], eax
; 2261 : if (h->size[k] == j) {
000fc 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
00100 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
00107 0f b6 84 01 00
05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
0010f 3b 45 24 cmp eax, DWORD PTR j$[rbp]
00112 75 67 jne SHORT $LN20@stbi__buil
$LN11@stbi__buil:
; 2262 : while (h->size[k] == j)
00114 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
00118 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
0011f 0f b6 84 01 00
05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
00127 3b 45 24 cmp eax, DWORD PTR j$[rbp]
0012a 75 29 jne SHORT $LN12@stbi__buil
; 2263 : h->code[k++] = (stbi__uint16)(code++);
0012c 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
00130 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
00137 0f b7 55 64 movzx edx, WORD PTR code$[rbp]
0013b 66 89 94 41 00
02 00 00 mov WORD PTR [rcx+rax*2+512], dx
00143 8b 45 44 mov eax, DWORD PTR k$[rbp]
00146 ff c0 inc eax
00148 89 45 44 mov DWORD PTR k$[rbp], eax
0014b 8b 45 64 mov eax, DWORD PTR code$[rbp]
0014e ff c0 inc eax
00150 89 45 64 mov DWORD PTR code$[rbp], eax
00153 eb bf jmp SHORT $LN11@stbi__buil
$LN12@stbi__buil:
; 2264 : if (code - 1 >= (1u << j))
00155 8b 45 64 mov eax, DWORD PTR code$[rbp]
00158 ff c8 dec eax
0015a 8b 4d 24 mov ecx, DWORD PTR j$[rbp]
0015d ba 01 00 00 00 mov edx, 1
00162 d3 e2 shl edx, cl
00164 8b ca mov ecx, edx
00166 3b c1 cmp eax, ecx
00168 72 11 jb SHORT $LN21@stbi__buil
; 2265 : return stbi__err("bad code lengths", "Corrupt JPEG");
0016a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BB@FOKGPEKG@bad?5code?5lengths@
00171 e8 00 00 00 00 call stbi__err
00176 e9 35 01 00 00 jmp $LN1@stbi__buil
$LN21@stbi__buil:
$LN20@stbi__buil:
; 2266 : }
; 2267 : // compute largest code + 1 for this size, preshifted as needed later
; 2268 : h->maxcode[j] = code << (16 - j);
0017b b8 10 00 00 00 mov eax, 16
00180 2b 45 24 sub eax, DWORD PTR j$[rbp]
00183 0f b6 c8 movzx ecx, al
00186 8b 45 64 mov eax, DWORD PTR code$[rbp]
00189 d3 e0 shl eax, cl
0018b 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
0018f 48 8b 95 c0 01
00 00 mov rdx, QWORD PTR h$[rbp]
00196 89 84 8a 04 06
00 00 mov DWORD PTR [rdx+rcx*4+1540], eax
; 2269 : code <<= 1;
0019d 8b 45 64 mov eax, DWORD PTR code$[rbp]
001a0 d1 e0 shl eax, 1
001a2 89 45 64 mov DWORD PTR code$[rbp], eax
; 2270 : }
001a5 e9 24 ff ff ff jmp $LN8@stbi__buil
$LN9@stbi__buil:
; 2271 : h->maxcode[j] = 0xffffffff;
001aa 48 63 45 24 movsxd rax, DWORD PTR j$[rbp]
001ae 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
001b5 c7 84 81 04 06
00 00 ff ff ff
ff mov DWORD PTR [rcx+rax*4+1540], -1 ; ffffffffH
; 2272 :
; 2273 : // build non-spec acceleration table; 255 is flag for not-accelerated
; 2274 : memset(h->fast, 255, 1 << FAST_BITS);
001c0 48 8b 85 c0 01
00 00 mov rax, QWORD PTR h$[rbp]
001c7 41 b8 00 02 00
00 mov r8d, 512 ; 00000200H
001cd ba ff 00 00 00 mov edx, 255 ; 000000ffH
001d2 48 8b c8 mov rcx, rax
001d5 e8 00 00 00 00 call memset
001da 90 npad 1
; 2275 : for (i = 0; i < k; ++i) {
001db c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
001e2 eb 08 jmp SHORT $LN15@stbi__buil
$LN13@stbi__buil:
001e4 8b 45 04 mov eax, DWORD PTR i$[rbp]
001e7 ff c0 inc eax
001e9 89 45 04 mov DWORD PTR i$[rbp], eax
$LN15@stbi__buil:
001ec 8b 45 44 mov eax, DWORD PTR k$[rbp]
001ef 39 45 04 cmp DWORD PTR i$[rbp], eax
001f2 0f 8d b3 00 00
00 jge $LN14@stbi__buil
; 2276 : int s = h->size[i];
001f8 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
001fc 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
00203 0f b6 84 01 00
05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
0020b 89 85 84 00 00
00 mov DWORD PTR s$1[rbp], eax
; 2277 : if (s <= FAST_BITS) {
00211 83 bd 84 00 00
00 09 cmp DWORD PTR s$1[rbp], 9
00218 0f 8f 88 00 00
00 jg $LN22@stbi__buil
; 2278 : int c = h->code[i] << (FAST_BITS - s);
0021e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
00222 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
00229 0f b7 84 41 00
02 00 00 movzx eax, WORD PTR [rcx+rax*2+512]
00231 b9 09 00 00 00 mov ecx, 9
00236 2b 8d 84 00 00
00 sub ecx, DWORD PTR s$1[rbp]
0023c d3 e0 shl eax, cl
0023e 89 85 a4 00 00
00 mov DWORD PTR c$2[rbp], eax
; 2279 : int m = 1 << (FAST_BITS - s);
00244 b8 09 00 00 00 mov eax, 9
00249 2b 85 84 00 00
00 sub eax, DWORD PTR s$1[rbp]
0024f b9 01 00 00 00 mov ecx, 1
00254 89 8d 94 01 00
00 mov DWORD PTR tv238[rbp], ecx
0025a 0f b6 c8 movzx ecx, al
0025d 8b 85 94 01 00
00 mov eax, DWORD PTR tv238[rbp]
00263 d3 e0 shl eax, cl
00265 89 85 c4 00 00
00 mov DWORD PTR m$3[rbp], eax
; 2280 : for (j = 0; j < m; ++j) {
0026b c7 45 24 00 00
00 00 mov DWORD PTR j$[rbp], 0
00272 eb 08 jmp SHORT $LN18@stbi__buil
$LN16@stbi__buil:
00274 8b 45 24 mov eax, DWORD PTR j$[rbp]
00277 ff c0 inc eax
00279 89 45 24 mov DWORD PTR j$[rbp], eax
$LN18@stbi__buil:
0027c 8b 85 c4 00 00
00 mov eax, DWORD PTR m$3[rbp]
00282 39 45 24 cmp DWORD PTR j$[rbp], eax
00285 7d 1f jge SHORT $LN17@stbi__buil
; 2281 : h->fast[c + j] = (stbi_uc)i;
00287 8b 45 24 mov eax, DWORD PTR j$[rbp]
0028a 8b 8d a4 00 00
00 mov ecx, DWORD PTR c$2[rbp]
00290 03 c8 add ecx, eax
00292 8b c1 mov eax, ecx
00294 48 98 cdqe
00296 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR h$[rbp]
0029d 0f b6 55 04 movzx edx, BYTE PTR i$[rbp]
002a1 88 14 01 mov BYTE PTR [rcx+rax], dl
; 2282 : }
002a4 eb ce jmp SHORT $LN16@stbi__buil
$LN17@stbi__buil:
$LN22@stbi__buil:
; 2283 : }
; 2284 : }
002a6 e9 39 ff ff ff jmp $LN13@stbi__buil
$LN14@stbi__buil:
; 2285 : return 1;
002ab b8 01 00 00 00 mov eax, 1
$LN1@stbi__buil:
; 2286 : }
002b0 48 8d a5 a8 01
00 00 lea rsp, QWORD PTR [rbp+424]
002b7 5f pop rdi
002b8 5d pop rbp
002b9 c3 ret 0
stbi__build_huffman ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__convert_format16
_TEXT SEGMENT
i$ = 4
j$ = 36
good$ = 72
src$1 = 104
dest$2 = 136
tv129 = 340
tv261 = 340
tv281 = 340
tv303 = 340
tv323 = 340
tv82 = 344
tv356 = 344
data$ = 384
img_n$ = 392
req_comp$ = 400
x$ = 408
y$ = 416
stbi__convert_format16 PROC ; COMDAT
; 1963 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 88 01
00 00 sub rsp, 392 ; 00000188H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002d 90 npad 1
; 1964 : int i, j;
; 1965 : stbi__uint16 *good;
; 1966 :
; 1967 : if (req_comp == img_n)
0002e 8b 85 88 01 00
00 mov eax, DWORD PTR img_n$[rbp]
00034 39 85 90 01 00
00 cmp DWORD PTR req_comp$[rbp], eax
0003a 75 0c jne SHORT $LN43@stbi__conv
; 1968 : return data;
0003c 48 8b 85 80 01
00 00 mov rax, QWORD PTR data$[rbp]
00043 e9 37 0a 00 00 jmp $LN1@stbi__conv
$LN43@stbi__conv:
; 1969 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4);
00048 83 bd 90 01 00
00 01 cmp DWORD PTR req_comp$[rbp], 1
0004f 7c 09 jl SHORT $LN59@stbi__conv
00051 83 bd 90 01 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
00058 7e 1c jle SHORT $LN60@stbi__conv
$LN59@stbi__conv:
0005a 41 b8 b1 07 00
00 mov r8d, 1969 ; 000007b1H
00060 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00067 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@
0006e ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00074 33 c0 xor eax, eax
$LN60@stbi__conv:
; 1970 :
; 1971 : good = (stbi__uint16 *)stbi__malloc(req_comp * x * y * 2);
00076 8b 85 90 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
0007c 0f af 85 98 01
00 00 imul eax, DWORD PTR x$[rbp]
00083 0f af 85 a0 01
00 00 imul eax, DWORD PTR y$[rbp]
0008a d1 e0 shl eax, 1
0008c 8b c0 mov eax, eax
0008e 8b c8 mov ecx, eax
00090 e8 00 00 00 00 call stbi__malloc
00095 48 89 45 48 mov QWORD PTR good$[rbp], rax
; 1972 : if (good == NULL) {
00099 48 83 7d 48 00 cmp QWORD PTR good$[rbp], 0
0009e 75 42 jne SHORT $LN44@stbi__conv
; 1973 : STBI_FREE(data);
000a0 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
000a7 ff 15 00 00 00
00 call QWORD PTR __imp_free
000ad 90 npad 1
; 1974 : return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory");
000ae 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
000b5 e8 00 00 00 00 call stbi__err
000ba 85 c0 test eax, eax
000bc 74 0d je SHORT $LN61@stbi__conv
000be 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv82[rbp], 0
000c9 eb 0b jmp SHORT $LN62@stbi__conv
$LN61@stbi__conv:
000cb 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv82[rbp], 0
$LN62@stbi__conv:
000d6 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv82[rbp]
000dd e9 9d 09 00 00 jmp $LN1@stbi__conv
$LN44@stbi__conv:
; 1975 : }
; 1976 :
; 1977 : for (j = 0; j < (int)y; ++j) {
000e2 c7 45 24 00 00
00 00 mov DWORD PTR j$[rbp], 0
000e9 eb 08 jmp SHORT $LN4@stbi__conv
$LN2@stbi__conv:
000eb 8b 45 24 mov eax, DWORD PTR j$[rbp]
000ee ff c0 inc eax
000f0 89 45 24 mov DWORD PTR j$[rbp], eax
$LN4@stbi__conv:
000f3 8b 85 a0 01 00
00 mov eax, DWORD PTR y$[rbp]
000f9 39 45 24 cmp DWORD PTR j$[rbp], eax
000fc 0f 8d 6b 09 00
00 jge $LN3@stbi__conv
; 1978 : stbi__uint16 *src = data + j * x * img_n;
00102 8b 45 24 mov eax, DWORD PTR j$[rbp]
00105 0f af 85 98 01
00 00 imul eax, DWORD PTR x$[rbp]
0010c 0f af 85 88 01
00 00 imul eax, DWORD PTR img_n$[rbp]
00113 8b c0 mov eax, eax
00115 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
0011c 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
00120 48 89 45 68 mov QWORD PTR src$1[rbp], rax
; 1979 : stbi__uint16 *dest = good + j * x * req_comp;
00124 8b 45 24 mov eax, DWORD PTR j$[rbp]
00127 0f af 85 98 01
00 00 imul eax, DWORD PTR x$[rbp]
0012e 0f af 85 90 01
00 00 imul eax, DWORD PTR req_comp$[rbp]
00135 8b c0 mov eax, eax
00137 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
0013b 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
0013f 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
; 1980 :
; 1981 : #define STBI__COMBO(a, b) ((a) * 8 + (b))
; 1982 : #define STBI__CASE(a, b) \
; 1983 : case STBI__COMBO(a, b): \
; 1984 : for (i = x - 1; i >= 0; --i, src += a, dest += b)
; 1985 : // convert source image with img_n components to one with req_comp components;
; 1986 : // avoid switch per pixel, so use switch per scanline and massive macros
; 1987 : switch (STBI__COMBO(img_n, req_comp)) {
00146 8b 85 90 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
0014c 8b 8d 88 01 00
00 mov ecx, DWORD PTR img_n$[rbp]
00152 8d 04 c8 lea eax, DWORD PTR [rax+rcx*8]
00155 89 85 54 01 00
00 mov DWORD PTR tv129[rbp], eax
0015b 8b 85 54 01 00
00 mov eax, DWORD PTR tv129[rbp]
00161 83 e8 0a sub eax, 10
00164 89 85 54 01 00
00 mov DWORD PTR tv129[rbp], eax
0016a 83 bd 54 01 00
00 19 cmp DWORD PTR tv129[rbp], 25
00171 0f 87 85 08 00
00 ja $LN57@stbi__conv
00177 48 63 85 54 01
00 00 movsxd rax, DWORD PTR tv129[rbp]
0017e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__ImageBase
00185 8b 84 81 00 00
00 00 mov eax, DWORD PTR $LN66@stbi__conv[rcx+rax*4]
0018c 48 03 c1 add rax, rcx
0018f ff e0 jmp rax
$LN45@stbi__conv:
; 1988 : STBI__CASE(1, 2)
00191 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00197 ff c8 dec eax
00199 89 45 04 mov DWORD PTR i$[rbp], eax
0019c eb 26 jmp SHORT $LN9@stbi__conv
$LN7@stbi__conv:
0019e 8b 45 04 mov eax, DWORD PTR i$[rbp]
001a1 ff c8 dec eax
001a3 89 45 04 mov DWORD PTR i$[rbp], eax
001a6 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
001aa 48 83 c0 02 add rax, 2
001ae 48 89 45 68 mov QWORD PTR src$1[rbp], rax
001b2 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
001b9 48 83 c0 04 add rax, 4
001bd 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN9@stbi__conv:
001c4 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
001c8 7c 41 jl SHORT $LN8@stbi__conv
; 1989 : {
; 1990 : dest[0] = src[0];
001ca b8 02 00 00 00 mov eax, 2
001cf 48 6b c0 00 imul rax, rax, 0
001d3 b9 02 00 00 00 mov ecx, 2
001d8 48 6b c9 00 imul rcx, rcx, 0
001dc 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
001e3 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
001e7 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
001ec 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 1991 : dest[1] = 0xffff;
001f0 b8 02 00 00 00 mov eax, 2
001f5 48 6b c0 01 imul rax, rax, 1
001f9 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
001fe 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00205 66 89 0c 02 mov WORD PTR [rdx+rax], cx
; 1992 : }
00209 eb 93 jmp SHORT $LN7@stbi__conv
$LN8@stbi__conv:
; 1993 : break;
0020b e9 58 08 00 00 jmp $LN5@stbi__conv
$LN46@stbi__conv:
; 1994 : STBI__CASE(1, 3)
00210 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00216 ff c8 dec eax
00218 89 45 04 mov DWORD PTR i$[rbp], eax
0021b eb 26 jmp SHORT $LN12@stbi__conv
$LN10@stbi__conv:
0021d 8b 45 04 mov eax, DWORD PTR i$[rbp]
00220 ff c8 dec eax
00222 89 45 04 mov DWORD PTR i$[rbp], eax
00225 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00229 48 83 c0 02 add rax, 2
0022d 48 89 45 68 mov QWORD PTR src$1[rbp], rax
00231 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00238 48 83 c0 06 add rax, 6
0023c 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN12@stbi__conv:
00243 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00247 7c 7d jl SHORT $LN11@stbi__conv
; 1995 : {
; 1996 : dest[0] = dest[1] = dest[2] = src[0];
00249 b8 02 00 00 00 mov eax, 2
0024e 48 6b c0 00 imul rax, rax, 0
00252 b9 02 00 00 00 mov ecx, 2
00257 48 6b c9 02 imul rcx, rcx, 2
0025b 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00262 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00266 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0026b 66 89 04 0a mov WORD PTR [rdx+rcx], ax
0026f b8 02 00 00 00 mov eax, 2
00274 48 6b c0 02 imul rax, rax, 2
00278 b9 02 00 00 00 mov ecx, 2
0027d 48 6b c9 01 imul rcx, rcx, 1
00281 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00288 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
0028f 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
00294 66 89 04 0a mov WORD PTR [rdx+rcx], ax
00298 b8 02 00 00 00 mov eax, 2
0029d 48 6b c0 01 imul rax, rax, 1
002a1 b9 02 00 00 00 mov ecx, 2
002a6 48 6b c9 00 imul rcx, rcx, 0
002aa 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
002b1 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
002b8 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
002bd 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 1997 : }
002c1 e9 57 ff ff ff jmp $LN10@stbi__conv
$LN11@stbi__conv:
; 1998 : break;
002c6 e9 9d 07 00 00 jmp $LN5@stbi__conv
$LN47@stbi__conv:
; 1999 : STBI__CASE(1, 4)
002cb 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
002d1 ff c8 dec eax
002d3 89 45 04 mov DWORD PTR i$[rbp], eax
002d6 eb 26 jmp SHORT $LN15@stbi__conv
$LN13@stbi__conv:
002d8 8b 45 04 mov eax, DWORD PTR i$[rbp]
002db ff c8 dec eax
002dd 89 45 04 mov DWORD PTR i$[rbp], eax
002e0 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
002e4 48 83 c0 02 add rax, 2
002e8 48 89 45 68 mov QWORD PTR src$1[rbp], rax
002ec 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
002f3 48 83 c0 08 add rax, 8
002f7 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN15@stbi__conv:
002fe 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00302 0f 8c 96 00 00
00 jl $LN14@stbi__conv
; 2000 : {
; 2001 : dest[0] = dest[1] = dest[2] = src[0];
00308 b8 02 00 00 00 mov eax, 2
0030d 48 6b c0 00 imul rax, rax, 0
00311 b9 02 00 00 00 mov ecx, 2
00316 48 6b c9 02 imul rcx, rcx, 2
0031a 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00321 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00325 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0032a 66 89 04 0a mov WORD PTR [rdx+rcx], ax
0032e b8 02 00 00 00 mov eax, 2
00333 48 6b c0 02 imul rax, rax, 2
00337 b9 02 00 00 00 mov ecx, 2
0033c 48 6b c9 01 imul rcx, rcx, 1
00340 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00347 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
0034e 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
00353 66 89 04 0a mov WORD PTR [rdx+rcx], ax
00357 b8 02 00 00 00 mov eax, 2
0035c 48 6b c0 01 imul rax, rax, 1
00360 b9 02 00 00 00 mov ecx, 2
00365 48 6b c9 00 imul rcx, rcx, 0
00369 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00370 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00377 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0037c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2002 : dest[3] = 0xffff;
00380 b8 02 00 00 00 mov eax, 2
00385 48 6b c0 03 imul rax, rax, 3
00389 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
0038e 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00395 66 89 0c 02 mov WORD PTR [rdx+rax], cx
; 2003 : }
00399 e9 3a ff ff ff jmp $LN13@stbi__conv
$LN14@stbi__conv:
; 2004 : break;
0039e e9 c5 06 00 00 jmp $LN5@stbi__conv
$LN48@stbi__conv:
; 2005 : STBI__CASE(2, 1)
003a3 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
003a9 ff c8 dec eax
003ab 89 45 04 mov DWORD PTR i$[rbp], eax
003ae eb 26 jmp SHORT $LN18@stbi__conv
$LN16@stbi__conv:
003b0 8b 45 04 mov eax, DWORD PTR i$[rbp]
003b3 ff c8 dec eax
003b5 89 45 04 mov DWORD PTR i$[rbp], eax
003b8 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
003bc 48 83 c0 04 add rax, 4
003c0 48 89 45 68 mov QWORD PTR src$1[rbp], rax
003c4 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
003cb 48 83 c0 02 add rax, 2
003cf 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN18@stbi__conv:
003d6 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
003da 7c 28 jl SHORT $LN17@stbi__conv
; 2006 : {
; 2007 : dest[0] = src[0];
003dc b8 02 00 00 00 mov eax, 2
003e1 48 6b c0 00 imul rax, rax, 0
003e5 b9 02 00 00 00 mov ecx, 2
003ea 48 6b c9 00 imul rcx, rcx, 0
003ee 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
003f5 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
003f9 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
003fe 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2008 : }
00402 eb ac jmp SHORT $LN16@stbi__conv
$LN17@stbi__conv:
; 2009 : break;
00404 e9 5f 06 00 00 jmp $LN5@stbi__conv
$LN49@stbi__conv:
; 2010 : STBI__CASE(2, 3)
00409 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
0040f ff c8 dec eax
00411 89 45 04 mov DWORD PTR i$[rbp], eax
00414 eb 26 jmp SHORT $LN21@stbi__conv
$LN19@stbi__conv:
00416 8b 45 04 mov eax, DWORD PTR i$[rbp]
00419 ff c8 dec eax
0041b 89 45 04 mov DWORD PTR i$[rbp], eax
0041e 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00422 48 83 c0 04 add rax, 4
00426 48 89 45 68 mov QWORD PTR src$1[rbp], rax
0042a 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00431 48 83 c0 06 add rax, 6
00435 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN21@stbi__conv:
0043c 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00440 7c 7d jl SHORT $LN20@stbi__conv
; 2011 : {
; 2012 : dest[0] = dest[1] = dest[2] = src[0];
00442 b8 02 00 00 00 mov eax, 2
00447 48 6b c0 00 imul rax, rax, 0
0044b b9 02 00 00 00 mov ecx, 2
00450 48 6b c9 02 imul rcx, rcx, 2
00454 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0045b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0045f 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
00464 66 89 04 0a mov WORD PTR [rdx+rcx], ax
00468 b8 02 00 00 00 mov eax, 2
0046d 48 6b c0 02 imul rax, rax, 2
00471 b9 02 00 00 00 mov ecx, 2
00476 48 6b c9 01 imul rcx, rcx, 1
0047a 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00481 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00488 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0048d 66 89 04 0a mov WORD PTR [rdx+rcx], ax
00491 b8 02 00 00 00 mov eax, 2
00496 48 6b c0 01 imul rax, rax, 1
0049a b9 02 00 00 00 mov ecx, 2
0049f 48 6b c9 00 imul rcx, rcx, 0
004a3 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
004aa 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
004b1 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
004b6 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2013 : }
004ba e9 57 ff ff ff jmp $LN19@stbi__conv
$LN20@stbi__conv:
; 2014 : break;
004bf e9 a4 05 00 00 jmp $LN5@stbi__conv
$LN50@stbi__conv:
; 2015 : STBI__CASE(2, 4)
004c4 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
004ca ff c8 dec eax
004cc 89 45 04 mov DWORD PTR i$[rbp], eax
004cf eb 26 jmp SHORT $LN24@stbi__conv
$LN22@stbi__conv:
004d1 8b 45 04 mov eax, DWORD PTR i$[rbp]
004d4 ff c8 dec eax
004d6 89 45 04 mov DWORD PTR i$[rbp], eax
004d9 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
004dd 48 83 c0 04 add rax, 4
004e1 48 89 45 68 mov QWORD PTR src$1[rbp], rax
004e5 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
004ec 48 83 c0 08 add rax, 8
004f0 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN24@stbi__conv:
004f7 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
004fb 0f 8c a3 00 00
00 jl $LN23@stbi__conv
; 2016 : {
; 2017 : dest[0] = dest[1] = dest[2] = src[0];
00501 b8 02 00 00 00 mov eax, 2
00506 48 6b c0 00 imul rax, rax, 0
0050a b9 02 00 00 00 mov ecx, 2
0050f 48 6b c9 02 imul rcx, rcx, 2
00513 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0051a 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0051e 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
00523 66 89 04 0a mov WORD PTR [rdx+rcx], ax
00527 b8 02 00 00 00 mov eax, 2
0052c 48 6b c0 02 imul rax, rax, 2
00530 b9 02 00 00 00 mov ecx, 2
00535 48 6b c9 01 imul rcx, rcx, 1
00539 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00540 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00547 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0054c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
00550 b8 02 00 00 00 mov eax, 2
00555 48 6b c0 01 imul rax, rax, 1
00559 b9 02 00 00 00 mov ecx, 2
0055e 48 6b c9 00 imul rcx, rcx, 0
00562 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00569 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00570 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
00575 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2018 : dest[3] = src[1];
00579 b8 02 00 00 00 mov eax, 2
0057e 48 6b c0 01 imul rax, rax, 1
00582 b9 02 00 00 00 mov ecx, 2
00587 48 6b c9 03 imul rcx, rcx, 3
0058b 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00592 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00596 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0059b 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2019 : }
0059f e9 2d ff ff ff jmp $LN22@stbi__conv
$LN23@stbi__conv:
; 2020 : break;
005a4 e9 bf 04 00 00 jmp $LN5@stbi__conv
$LN51@stbi__conv:
; 2021 : STBI__CASE(3, 4)
005a9 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
005af ff c8 dec eax
005b1 89 45 04 mov DWORD PTR i$[rbp], eax
005b4 eb 26 jmp SHORT $LN27@stbi__conv
$LN25@stbi__conv:
005b6 8b 45 04 mov eax, DWORD PTR i$[rbp]
005b9 ff c8 dec eax
005bb 89 45 04 mov DWORD PTR i$[rbp], eax
005be 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
005c2 48 83 c0 06 add rax, 6
005c6 48 89 45 68 mov QWORD PTR src$1[rbp], rax
005ca 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
005d1 48 83 c0 08 add rax, 8
005d5 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN27@stbi__conv:
005dc 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
005e0 0f 8c 90 00 00
00 jl $LN26@stbi__conv
; 2022 : {
; 2023 : dest[0] = src[0];
005e6 b8 02 00 00 00 mov eax, 2
005eb 48 6b c0 00 imul rax, rax, 0
005ef b9 02 00 00 00 mov ecx, 2
005f4 48 6b c9 00 imul rcx, rcx, 0
005f8 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
005ff 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00603 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
00608 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2024 : dest[1] = src[1];
0060c b8 02 00 00 00 mov eax, 2
00611 48 6b c0 01 imul rax, rax, 1
00615 b9 02 00 00 00 mov ecx, 2
0061a 48 6b c9 01 imul rcx, rcx, 1
0061e 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00625 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00629 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0062e 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2025 : dest[2] = src[2];
00632 b8 02 00 00 00 mov eax, 2
00637 48 6b c0 02 imul rax, rax, 2
0063b b9 02 00 00 00 mov ecx, 2
00640 48 6b c9 02 imul rcx, rcx, 2
00644 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0064b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0064f 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
00654 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2026 : dest[3] = 0xffff;
00658 b8 02 00 00 00 mov eax, 2
0065d 48 6b c0 03 imul rax, rax, 3
00661 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
00666 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0066d 66 89 0c 02 mov WORD PTR [rdx+rax], cx
; 2027 : }
00671 e9 40 ff ff ff jmp $LN25@stbi__conv
$LN26@stbi__conv:
; 2028 : break;
00676 e9 ed 03 00 00 jmp $LN5@stbi__conv
$LN52@stbi__conv:
; 2029 : STBI__CASE(3, 1)
0067b 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00681 ff c8 dec eax
00683 89 45 04 mov DWORD PTR i$[rbp], eax
00686 eb 26 jmp SHORT $LN30@stbi__conv
$LN28@stbi__conv:
00688 8b 45 04 mov eax, DWORD PTR i$[rbp]
0068b ff c8 dec eax
0068d 89 45 04 mov DWORD PTR i$[rbp], eax
00690 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00694 48 83 c0 06 add rax, 6
00698 48 89 45 68 mov QWORD PTR src$1[rbp], rax
0069c 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
006a3 48 83 c0 02 add rax, 2
006a7 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN30@stbi__conv:
006ae 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
006b2 7c 65 jl SHORT $LN29@stbi__conv
; 2030 : {
; 2031 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
006b4 b8 02 00 00 00 mov eax, 2
006b9 48 6b c0 02 imul rax, rax, 2
006bd 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
006c1 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
006c5 b9 02 00 00 00 mov ecx, 2
006ca 48 6b c9 01 imul rcx, rcx, 1
006ce 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
006d2 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
006d6 ba 02 00 00 00 mov edx, 2
006db 48 6b d2 00 imul rdx, rdx, 0
006df 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
006e3 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
006e8 89 95 54 01 00
00 mov DWORD PTR tv261[rbp], edx
006ee 44 8b c0 mov r8d, eax
006f1 8b d1 mov edx, ecx
006f3 8b 85 54 01 00
00 mov eax, DWORD PTR tv261[rbp]
006f9 8b c8 mov ecx, eax
006fb e8 00 00 00 00 call stbi__compute_y_16
00700 b9 02 00 00 00 mov ecx, 2
00705 48 6b c9 00 imul rcx, rcx, 0
00709 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00710 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2032 : }
00714 e9 6f ff ff ff jmp $LN28@stbi__conv
$LN29@stbi__conv:
; 2033 : break;
00719 e9 4a 03 00 00 jmp $LN5@stbi__conv
$LN53@stbi__conv:
; 2034 : STBI__CASE(3, 2)
0071e 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00724 ff c8 dec eax
00726 89 45 04 mov DWORD PTR i$[rbp], eax
00729 eb 26 jmp SHORT $LN33@stbi__conv
$LN31@stbi__conv:
0072b 8b 45 04 mov eax, DWORD PTR i$[rbp]
0072e ff c8 dec eax
00730 89 45 04 mov DWORD PTR i$[rbp], eax
00733 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00737 48 83 c0 06 add rax, 6
0073b 48 89 45 68 mov QWORD PTR src$1[rbp], rax
0073f 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00746 48 83 c0 04 add rax, 4
0074a 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN33@stbi__conv:
00751 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00755 7c 7e jl SHORT $LN32@stbi__conv
; 2035 : {
; 2036 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
00757 b8 02 00 00 00 mov eax, 2
0075c 48 6b c0 02 imul rax, rax, 2
00760 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
00764 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00768 b9 02 00 00 00 mov ecx, 2
0076d 48 6b c9 01 imul rcx, rcx, 1
00771 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
00775 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
00779 ba 02 00 00 00 mov edx, 2
0077e 48 6b d2 00 imul rdx, rdx, 0
00782 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00786 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
0078b 89 95 54 01 00
00 mov DWORD PTR tv281[rbp], edx
00791 44 8b c0 mov r8d, eax
00794 8b d1 mov edx, ecx
00796 8b 85 54 01 00
00 mov eax, DWORD PTR tv281[rbp]
0079c 8b c8 mov ecx, eax
0079e e8 00 00 00 00 call stbi__compute_y_16
007a3 b9 02 00 00 00 mov ecx, 2
007a8 48 6b c9 00 imul rcx, rcx, 0
007ac 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
007b3 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2037 : dest[1] = 0xffff;
007b7 b8 02 00 00 00 mov eax, 2
007bc 48 6b c0 01 imul rax, rax, 1
007c0 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
007c5 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
007cc 66 89 0c 02 mov WORD PTR [rdx+rax], cx
; 2038 : }
007d0 e9 56 ff ff ff jmp $LN31@stbi__conv
$LN32@stbi__conv:
; 2039 : break;
007d5 e9 8e 02 00 00 jmp $LN5@stbi__conv
$LN54@stbi__conv:
; 2040 : STBI__CASE(4, 1)
007da 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
007e0 ff c8 dec eax
007e2 89 45 04 mov DWORD PTR i$[rbp], eax
007e5 eb 26 jmp SHORT $LN36@stbi__conv
$LN34@stbi__conv:
007e7 8b 45 04 mov eax, DWORD PTR i$[rbp]
007ea ff c8 dec eax
007ec 89 45 04 mov DWORD PTR i$[rbp], eax
007ef 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
007f3 48 83 c0 08 add rax, 8
007f7 48 89 45 68 mov QWORD PTR src$1[rbp], rax
007fb 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00802 48 83 c0 02 add rax, 2
00806 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN36@stbi__conv:
0080d 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00811 7c 65 jl SHORT $LN35@stbi__conv
; 2041 : {
; 2042 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
00813 b8 02 00 00 00 mov eax, 2
00818 48 6b c0 02 imul rax, rax, 2
0081c 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
00820 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00824 b9 02 00 00 00 mov ecx, 2
00829 48 6b c9 01 imul rcx, rcx, 1
0082d 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
00831 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
00835 ba 02 00 00 00 mov edx, 2
0083a 48 6b d2 00 imul rdx, rdx, 0
0083e 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00842 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
00847 89 95 54 01 00
00 mov DWORD PTR tv303[rbp], edx
0084d 44 8b c0 mov r8d, eax
00850 8b d1 mov edx, ecx
00852 8b 85 54 01 00
00 mov eax, DWORD PTR tv303[rbp]
00858 8b c8 mov ecx, eax
0085a e8 00 00 00 00 call stbi__compute_y_16
0085f b9 02 00 00 00 mov ecx, 2
00864 48 6b c9 00 imul rcx, rcx, 0
00868 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0086f 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2043 : }
00873 e9 6f ff ff ff jmp $LN34@stbi__conv
$LN35@stbi__conv:
; 2044 : break;
00878 e9 eb 01 00 00 jmp $LN5@stbi__conv
$LN55@stbi__conv:
; 2045 : STBI__CASE(4, 2)
0087d 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00883 ff c8 dec eax
00885 89 45 04 mov DWORD PTR i$[rbp], eax
00888 eb 26 jmp SHORT $LN39@stbi__conv
$LN37@stbi__conv:
0088a 8b 45 04 mov eax, DWORD PTR i$[rbp]
0088d ff c8 dec eax
0088f 89 45 04 mov DWORD PTR i$[rbp], eax
00892 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00896 48 83 c0 08 add rax, 8
0089a 48 89 45 68 mov QWORD PTR src$1[rbp], rax
0089e 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
008a5 48 83 c0 04 add rax, 4
008a9 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN39@stbi__conv:
008b0 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
008b4 0f 8c 8b 00 00
00 jl $LN38@stbi__conv
; 2046 : {
; 2047 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
008ba b8 02 00 00 00 mov eax, 2
008bf 48 6b c0 02 imul rax, rax, 2
008c3 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
008c7 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
008cb b9 02 00 00 00 mov ecx, 2
008d0 48 6b c9 01 imul rcx, rcx, 1
008d4 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
008d8 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
008dc ba 02 00 00 00 mov edx, 2
008e1 48 6b d2 00 imul rdx, rdx, 0
008e5 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
008e9 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
008ee 89 95 54 01 00
00 mov DWORD PTR tv323[rbp], edx
008f4 44 8b c0 mov r8d, eax
008f7 8b d1 mov edx, ecx
008f9 8b 85 54 01 00
00 mov eax, DWORD PTR tv323[rbp]
008ff 8b c8 mov ecx, eax
00901 e8 00 00 00 00 call stbi__compute_y_16
00906 b9 02 00 00 00 mov ecx, 2
0090b 48 6b c9 00 imul rcx, rcx, 0
0090f 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00916 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2048 : dest[1] = src[3];
0091a b8 02 00 00 00 mov eax, 2
0091f 48 6b c0 03 imul rax, rax, 3
00923 b9 02 00 00 00 mov ecx, 2
00928 48 6b c9 01 imul rcx, rcx, 1
0092c 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00933 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00937 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
0093c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2049 : }
00940 e9 45 ff ff ff jmp $LN37@stbi__conv
$LN38@stbi__conv:
; 2050 : break;
00945 e9 1e 01 00 00 jmp $LN5@stbi__conv
$LN56@stbi__conv:
; 2051 : STBI__CASE(4, 3)
0094a 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00950 ff c8 dec eax
00952 89 45 04 mov DWORD PTR i$[rbp], eax
00955 eb 26 jmp SHORT $LN42@stbi__conv
$LN40@stbi__conv:
00957 8b 45 04 mov eax, DWORD PTR i$[rbp]
0095a ff c8 dec eax
0095c 89 45 04 mov DWORD PTR i$[rbp], eax
0095f 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00963 48 83 c0 08 add rax, 8
00967 48 89 45 68 mov QWORD PTR src$1[rbp], rax
0096b 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00972 48 83 c0 06 add rax, 6
00976 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN42@stbi__conv:
0097d 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00981 7c 77 jl SHORT $LN41@stbi__conv
; 2052 : {
; 2053 : dest[0] = src[0];
00983 b8 02 00 00 00 mov eax, 2
00988 48 6b c0 00 imul rax, rax, 0
0098c b9 02 00 00 00 mov ecx, 2
00991 48 6b c9 00 imul rcx, rcx, 0
00995 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0099c 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
009a0 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
009a5 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2054 : dest[1] = src[1];
009a9 b8 02 00 00 00 mov eax, 2
009ae 48 6b c0 01 imul rax, rax, 1
009b2 b9 02 00 00 00 mov ecx, 2
009b7 48 6b c9 01 imul rcx, rcx, 1
009bb 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
009c2 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
009c6 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
009cb 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2055 : dest[2] = src[2];
009cf b8 02 00 00 00 mov eax, 2
009d4 48 6b c0 02 imul rax, rax, 2
009d8 b9 02 00 00 00 mov ecx, 2
009dd 48 6b c9 02 imul rcx, rcx, 2
009e1 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
009e8 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
009ec 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
009f1 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 2056 : }
009f5 e9 5d ff ff ff jmp $LN40@stbi__conv
$LN41@stbi__conv:
; 2057 : break;
009fa eb 6c jmp SHORT $LN5@stbi__conv
$LN57@stbi__conv:
; 2058 : default:
; 2059 : STBI_ASSERT(0);
009fc 33 c0 xor eax, eax
009fe 85 c0 test eax, eax
00a00 75 1c jne SHORT $LN63@stbi__conv
00a02 41 b8 0b 08 00
00 mov r8d, 2059 ; 0000080bH
00a08 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00a0f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_13COJANIEC@?$AA0@
00a16 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00a1c 33 c0 xor eax, eax
$LN63@stbi__conv:
; 2060 : STBI_FREE(data);
00a1e 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
00a25 ff 15 00 00 00
00 call QWORD PTR __imp_free
00a2b 90 npad 1
; 2061 : STBI_FREE(good);
00a2c 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
00a30 ff 15 00 00 00
00 call QWORD PTR __imp_free
00a36 90 npad 1
; 2062 : return (stbi__uint16 *)stbi__errpuc("unsupported",
00a37 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@MHDBFHD@unsupported@
00a3e e8 00 00 00 00 call stbi__err
00a43 85 c0 test eax, eax
00a45 74 0d je SHORT $LN64@stbi__conv
00a47 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv356[rbp], 0
00a52 eb 0b jmp SHORT $LN65@stbi__conv
$LN64@stbi__conv:
00a54 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv356[rbp], 0
$LN65@stbi__conv:
00a5f 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv356[rbp]
00a66 eb 17 jmp SHORT $LN1@stbi__conv
$LN5@stbi__conv:
; 2063 : "Unsupported format conversion");
; 2064 : }
; 2065 : #undef STBI__CASE
; 2066 : }
00a68 e9 7e f6 ff ff jmp $LN2@stbi__conv
$LN3@stbi__conv:
; 2067 :
; 2068 : STBI_FREE(data);
00a6d 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
00a74 ff 15 00 00 00
00 call QWORD PTR __imp_free
00a7a 90 npad 1
; 2069 : return good;
00a7b 48 8b 45 48 mov rax, QWORD PTR good$[rbp]
$LN1@stbi__conv:
; 2070 : }
00a7f 48 8d a5 68 01
00 00 lea rsp, QWORD PTR [rbp+360]
00a86 5f pop rdi
00a87 5d pop rbp
00a88 c3 ret 0
00a89 0f 1f 00 npad 3
$LN66@stbi__conv:
00a8c 00 00 00 00 DD $LN45@stbi__conv
00a90 00 00 00 00 DD $LN46@stbi__conv
00a94 00 00 00 00 DD $LN47@stbi__conv
00a98 00 00 00 00 DD $LN57@stbi__conv
00a9c 00 00 00 00 DD $LN57@stbi__conv
00aa0 00 00 00 00 DD $LN57@stbi__conv
00aa4 00 00 00 00 DD $LN57@stbi__conv
00aa8 00 00 00 00 DD $LN48@stbi__conv
00aac 00 00 00 00 DD $LN57@stbi__conv
00ab0 00 00 00 00 DD $LN49@stbi__conv
00ab4 00 00 00 00 DD $LN50@stbi__conv
00ab8 00 00 00 00 DD $LN57@stbi__conv
00abc 00 00 00 00 DD $LN57@stbi__conv
00ac0 00 00 00 00 DD $LN57@stbi__conv
00ac4 00 00 00 00 DD $LN57@stbi__conv
00ac8 00 00 00 00 DD $LN52@stbi__conv
00acc 00 00 00 00 DD $LN53@stbi__conv
00ad0 00 00 00 00 DD $LN57@stbi__conv
00ad4 00 00 00 00 DD $LN51@stbi__conv
00ad8 00 00 00 00 DD $LN57@stbi__conv
00adc 00 00 00 00 DD $LN57@stbi__conv
00ae0 00 00 00 00 DD $LN57@stbi__conv
00ae4 00 00 00 00 DD $LN57@stbi__conv
00ae8 00 00 00 00 DD $LN54@stbi__conv
00aec 00 00 00 00 DD $LN55@stbi__conv
00af0 00 00 00 00 DD $LN56@stbi__conv
stbi__convert_format16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__compute_y_16
_TEXT SEGMENT
r$ = 224
g$ = 232
b$ = 240
stbi__compute_y_16 PROC ; COMDAT
; 1953 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000d 55 push rbp
0000e 57 push rdi
0000f 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00027 90 npad 1
; 1954 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8);
00028 6b 85 e0 00 00
00 4d imul eax, DWORD PTR r$[rbp], 77 ; 0000004dH
0002f 69 8d e8 00 00
00 96 00 00 00 imul ecx, DWORD PTR g$[rbp], 150 ; 00000096H
00039 03 c1 add eax, ecx
0003b 6b 8d f0 00 00
00 1d imul ecx, DWORD PTR b$[rbp], 29
00042 03 c1 add eax, ecx
00044 c1 f8 08 sar eax, 8
; 1955 : }
00047 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0004e 5f pop rdi
0004f 5d pop rbp
00050 c3 ret 0
stbi__compute_y_16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__convert_format
_TEXT SEGMENT
i$ = 4
j$ = 36
good$ = 72
src$1 = 104
dest$2 = 136
tv94 = 340
tv258 = 340
tv278 = 340
tv300 = 340
tv320 = 340
tv81 = 344
tv353 = 344
data$ = 384
img_n$ = 392
req_comp$ = 400
x$ = 408
y$ = 416
stbi__convert_format PROC ; COMDAT
; 1840 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 88 01
00 00 sub rsp, 392 ; 00000188H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002d 90 npad 1
; 1841 : int i, j;
; 1842 : unsigned char *good;
; 1843 :
; 1844 : if (req_comp == img_n)
0002e 8b 85 88 01 00
00 mov eax, DWORD PTR img_n$[rbp]
00034 39 85 90 01 00
00 cmp DWORD PTR req_comp$[rbp], eax
0003a 75 0c jne SHORT $LN43@stbi__conv
; 1845 : return data;
0003c 48 8b 85 80 01
00 00 mov rax, QWORD PTR data$[rbp]
00043 e9 03 0a 00 00 jmp $LN1@stbi__conv
$LN43@stbi__conv:
; 1846 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4);
00048 83 bd 90 01 00
00 01 cmp DWORD PTR req_comp$[rbp], 1
0004f 7c 09 jl SHORT $LN59@stbi__conv
00051 83 bd 90 01 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
00058 7e 1c jle SHORT $LN60@stbi__conv
$LN59@stbi__conv:
0005a 41 b8 36 07 00
00 mov r8d, 1846 ; 00000736H
00060 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00067 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@
0006e ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00074 33 c0 xor eax, eax
$LN60@stbi__conv:
; 1847 :
; 1848 : good = (unsigned char *)stbi__malloc_mad3(req_comp, x, y, 0);
00076 45 33 c9 xor r9d, r9d
00079 44 8b 85 a0 01
00 00 mov r8d, DWORD PTR y$[rbp]
00080 8b 95 98 01 00
00 mov edx, DWORD PTR x$[rbp]
00086 8b 8d 90 01 00
00 mov ecx, DWORD PTR req_comp$[rbp]
0008c e8 00 00 00 00 call stbi__malloc_mad3
00091 48 89 45 48 mov QWORD PTR good$[rbp], rax
; 1849 : if (good == NULL) {
00095 48 83 7d 48 00 cmp QWORD PTR good$[rbp], 0
0009a 75 42 jne SHORT $LN44@stbi__conv
; 1850 : STBI_FREE(data);
0009c 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
000a3 ff 15 00 00 00
00 call QWORD PTR __imp_free
000a9 90 npad 1
; 1851 : return stbi__errpuc("outofmem", "Out of memory");
000aa 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
000b1 e8 00 00 00 00 call stbi__err
000b6 85 c0 test eax, eax
000b8 74 0d je SHORT $LN61@stbi__conv
000ba 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv81[rbp], 0
000c5 eb 0b jmp SHORT $LN62@stbi__conv
$LN61@stbi__conv:
000c7 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv81[rbp], 0
$LN62@stbi__conv:
000d2 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv81[rbp]
000d9 e9 6d 09 00 00 jmp $LN1@stbi__conv
$LN44@stbi__conv:
; 1852 : }
; 1853 :
; 1854 : for (j = 0; j < (int)y; ++j) {
000de c7 45 24 00 00
00 00 mov DWORD PTR j$[rbp], 0
000e5 eb 08 jmp SHORT $LN4@stbi__conv
$LN2@stbi__conv:
000e7 8b 45 24 mov eax, DWORD PTR j$[rbp]
000ea ff c0 inc eax
000ec 89 45 24 mov DWORD PTR j$[rbp], eax
$LN4@stbi__conv:
000ef 8b 85 a0 01 00
00 mov eax, DWORD PTR y$[rbp]
000f5 39 45 24 cmp DWORD PTR j$[rbp], eax
000f8 0f 8d 3b 09 00
00 jge $LN3@stbi__conv
; 1855 : unsigned char *src = data + j * x * img_n;
000fe 8b 45 24 mov eax, DWORD PTR j$[rbp]
00101 0f af 85 98 01
00 00 imul eax, DWORD PTR x$[rbp]
00108 0f af 85 88 01
00 00 imul eax, DWORD PTR img_n$[rbp]
0010f 8b c0 mov eax, eax
00111 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
00118 48 03 c8 add rcx, rax
0011b 48 8b c1 mov rax, rcx
0011e 48 89 45 68 mov QWORD PTR src$1[rbp], rax
; 1856 : unsigned char *dest = good + j * x * req_comp;
00122 8b 45 24 mov eax, DWORD PTR j$[rbp]
00125 0f af 85 98 01
00 00 imul eax, DWORD PTR x$[rbp]
0012c 0f af 85 90 01
00 00 imul eax, DWORD PTR req_comp$[rbp]
00133 8b c0 mov eax, eax
00135 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
00139 48 03 c8 add rcx, rax
0013c 48 8b c1 mov rax, rcx
0013f 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
; 1857 :
; 1858 : #define STBI__COMBO(a, b) ((a) * 8 + (b))
; 1859 : #define STBI__CASE(a, b) \
; 1860 : case STBI__COMBO(a, b): \
; 1861 : for (i = x - 1; i >= 0; --i, src += a, dest += b)
; 1862 : // convert source image with img_n components to one with req_comp components;
; 1863 : // avoid switch per pixel, so use switch per scanline and massive macros
; 1864 : switch (STBI__COMBO(img_n, req_comp)) {
00146 8b 85 90 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
0014c 8b 8d 88 01 00
00 mov ecx, DWORD PTR img_n$[rbp]
00152 8d 04 c8 lea eax, DWORD PTR [rax+rcx*8]
00155 89 85 54 01 00
00 mov DWORD PTR tv94[rbp], eax
0015b 8b 85 54 01 00
00 mov eax, DWORD PTR tv94[rbp]
00161 83 e8 0a sub eax, 10
00164 89 85 54 01 00
00 mov DWORD PTR tv94[rbp], eax
0016a 83 bd 54 01 00
00 19 cmp DWORD PTR tv94[rbp], 25
00171 0f 87 51 08 00
00 ja $LN57@stbi__conv
00177 48 63 85 54 01
00 00 movsxd rax, DWORD PTR tv94[rbp]
0017e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__ImageBase
00185 8b 84 81 00 00
00 00 mov eax, DWORD PTR $LN66@stbi__conv[rcx+rax*4]
0018c 48 03 c1 add rax, rcx
0018f ff e0 jmp rax
$LN45@stbi__conv:
; 1865 : STBI__CASE(1, 2)
00191 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00197 ff c8 dec eax
00199 89 45 04 mov DWORD PTR i$[rbp], eax
0019c eb 25 jmp SHORT $LN9@stbi__conv
$LN7@stbi__conv:
0019e 8b 45 04 mov eax, DWORD PTR i$[rbp]
001a1 ff c8 dec eax
001a3 89 45 04 mov DWORD PTR i$[rbp], eax
001a6 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
001aa 48 ff c0 inc rax
001ad 48 89 45 68 mov QWORD PTR src$1[rbp], rax
001b1 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
001b8 48 83 c0 02 add rax, 2
001bc 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN9@stbi__conv:
001c3 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
001c7 7c 3b jl SHORT $LN8@stbi__conv
; 1866 : {
; 1867 : dest[0] = src[0];
001c9 b8 01 00 00 00 mov eax, 1
001ce 48 6b c0 00 imul rax, rax, 0
001d2 b9 01 00 00 00 mov ecx, 1
001d7 48 6b c9 00 imul rcx, rcx, 0
001db 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
001e2 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
001e6 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
001eb 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1868 : dest[1] = 255;
001ee b8 01 00 00 00 mov eax, 1
001f3 48 6b c0 01 imul rax, rax, 1
001f7 48 8b 8d 88 00
00 00 mov rcx, QWORD PTR dest$2[rbp]
001fe c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 1869 : }
00202 eb 9a jmp SHORT $LN7@stbi__conv
$LN8@stbi__conv:
; 1870 : break;
00204 e9 2b 08 00 00 jmp $LN5@stbi__conv
$LN46@stbi__conv:
; 1871 : STBI__CASE(1, 3)
00209 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
0020f ff c8 dec eax
00211 89 45 04 mov DWORD PTR i$[rbp], eax
00214 eb 25 jmp SHORT $LN12@stbi__conv
$LN10@stbi__conv:
00216 8b 45 04 mov eax, DWORD PTR i$[rbp]
00219 ff c8 dec eax
0021b 89 45 04 mov DWORD PTR i$[rbp], eax
0021e 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00222 48 ff c0 inc rax
00225 48 89 45 68 mov QWORD PTR src$1[rbp], rax
00229 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00230 48 83 c0 03 add rax, 3
00234 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN12@stbi__conv:
0023b 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
0023f 7c 7a jl SHORT $LN11@stbi__conv
; 1872 : {
; 1873 : dest[0] = dest[1] = dest[2] = src[0];
00241 b8 01 00 00 00 mov eax, 1
00246 48 6b c0 00 imul rax, rax, 0
0024a b9 01 00 00 00 mov ecx, 1
0024f 48 6b c9 02 imul rcx, rcx, 2
00253 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0025a 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0025e 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00263 88 04 0a mov BYTE PTR [rdx+rcx], al
00266 b8 01 00 00 00 mov eax, 1
0026b 48 6b c0 02 imul rax, rax, 2
0026f b9 01 00 00 00 mov ecx, 1
00274 48 6b c9 01 imul rcx, rcx, 1
00278 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0027f 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00286 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0028b 88 04 0a mov BYTE PTR [rdx+rcx], al
0028e b8 01 00 00 00 mov eax, 1
00293 48 6b c0 01 imul rax, rax, 1
00297 b9 01 00 00 00 mov ecx, 1
0029c 48 6b c9 00 imul rcx, rcx, 0
002a0 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
002a7 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
002ae 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
002b3 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1874 : }
002b6 e9 5b ff ff ff jmp $LN10@stbi__conv
$LN11@stbi__conv:
; 1875 : break;
002bb e9 74 07 00 00 jmp $LN5@stbi__conv
$LN47@stbi__conv:
; 1876 : STBI__CASE(1, 4)
002c0 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
002c6 ff c8 dec eax
002c8 89 45 04 mov DWORD PTR i$[rbp], eax
002cb eb 25 jmp SHORT $LN15@stbi__conv
$LN13@stbi__conv:
002cd 8b 45 04 mov eax, DWORD PTR i$[rbp]
002d0 ff c8 dec eax
002d2 89 45 04 mov DWORD PTR i$[rbp], eax
002d5 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
002d9 48 ff c0 inc rax
002dc 48 89 45 68 mov QWORD PTR src$1[rbp], rax
002e0 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
002e7 48 83 c0 04 add rax, 4
002eb 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN15@stbi__conv:
002f2 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
002f6 0f 8c 8e 00 00
00 jl $LN14@stbi__conv
; 1877 : {
; 1878 : dest[0] = dest[1] = dest[2] = src[0];
002fc b8 01 00 00 00 mov eax, 1
00301 48 6b c0 00 imul rax, rax, 0
00305 b9 01 00 00 00 mov ecx, 1
0030a 48 6b c9 02 imul rcx, rcx, 2
0030e 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00315 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00319 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0031e 88 04 0a mov BYTE PTR [rdx+rcx], al
00321 b8 01 00 00 00 mov eax, 1
00326 48 6b c0 02 imul rax, rax, 2
0032a b9 01 00 00 00 mov ecx, 1
0032f 48 6b c9 01 imul rcx, rcx, 1
00333 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0033a 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00341 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00346 88 04 0a mov BYTE PTR [rdx+rcx], al
00349 b8 01 00 00 00 mov eax, 1
0034e 48 6b c0 01 imul rax, rax, 1
00352 b9 01 00 00 00 mov ecx, 1
00357 48 6b c9 00 imul rcx, rcx, 0
0035b 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00362 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00369 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0036e 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1879 : dest[3] = 255;
00371 b8 01 00 00 00 mov eax, 1
00376 48 6b c0 03 imul rax, rax, 3
0037a 48 8b 8d 88 00
00 00 mov rcx, QWORD PTR dest$2[rbp]
00381 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 1880 : }
00385 e9 43 ff ff ff jmp $LN13@stbi__conv
$LN14@stbi__conv:
; 1881 : break;
0038a e9 a5 06 00 00 jmp $LN5@stbi__conv
$LN48@stbi__conv:
; 1882 : STBI__CASE(2, 1)
0038f 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00395 ff c8 dec eax
00397 89 45 04 mov DWORD PTR i$[rbp], eax
0039a eb 25 jmp SHORT $LN18@stbi__conv
$LN16@stbi__conv:
0039c 8b 45 04 mov eax, DWORD PTR i$[rbp]
0039f ff c8 dec eax
003a1 89 45 04 mov DWORD PTR i$[rbp], eax
003a4 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
003a8 48 83 c0 02 add rax, 2
003ac 48 89 45 68 mov QWORD PTR src$1[rbp], rax
003b0 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
003b7 48 ff c0 inc rax
003ba 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN18@stbi__conv:
003c1 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
003c5 7c 27 jl SHORT $LN17@stbi__conv
; 1883 : {
; 1884 : dest[0] = src[0];
003c7 b8 01 00 00 00 mov eax, 1
003cc 48 6b c0 00 imul rax, rax, 0
003d0 b9 01 00 00 00 mov ecx, 1
003d5 48 6b c9 00 imul rcx, rcx, 0
003d9 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
003e0 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
003e4 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
003e9 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1885 : }
003ec eb ae jmp SHORT $LN16@stbi__conv
$LN17@stbi__conv:
; 1886 : break;
003ee e9 41 06 00 00 jmp $LN5@stbi__conv
$LN49@stbi__conv:
; 1887 : STBI__CASE(2, 3)
003f3 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
003f9 ff c8 dec eax
003fb 89 45 04 mov DWORD PTR i$[rbp], eax
003fe eb 26 jmp SHORT $LN21@stbi__conv
$LN19@stbi__conv:
00400 8b 45 04 mov eax, DWORD PTR i$[rbp]
00403 ff c8 dec eax
00405 89 45 04 mov DWORD PTR i$[rbp], eax
00408 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
0040c 48 83 c0 02 add rax, 2
00410 48 89 45 68 mov QWORD PTR src$1[rbp], rax
00414 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
0041b 48 83 c0 03 add rax, 3
0041f 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN21@stbi__conv:
00426 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
0042a 7c 7a jl SHORT $LN20@stbi__conv
; 1888 : {
; 1889 : dest[0] = dest[1] = dest[2] = src[0];
0042c b8 01 00 00 00 mov eax, 1
00431 48 6b c0 00 imul rax, rax, 0
00435 b9 01 00 00 00 mov ecx, 1
0043a 48 6b c9 02 imul rcx, rcx, 2
0043e 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00445 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00449 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0044e 88 04 0a mov BYTE PTR [rdx+rcx], al
00451 b8 01 00 00 00 mov eax, 1
00456 48 6b c0 02 imul rax, rax, 2
0045a b9 01 00 00 00 mov ecx, 1
0045f 48 6b c9 01 imul rcx, rcx, 1
00463 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0046a 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00471 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00476 88 04 0a mov BYTE PTR [rdx+rcx], al
00479 b8 01 00 00 00 mov eax, 1
0047e 48 6b c0 01 imul rax, rax, 1
00482 b9 01 00 00 00 mov ecx, 1
00487 48 6b c9 00 imul rcx, rcx, 0
0048b 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00492 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00499 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0049e 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1890 : }
004a1 e9 5a ff ff ff jmp $LN19@stbi__conv
$LN20@stbi__conv:
; 1891 : break;
004a6 e9 89 05 00 00 jmp $LN5@stbi__conv
$LN50@stbi__conv:
; 1892 : STBI__CASE(2, 4)
004ab 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
004b1 ff c8 dec eax
004b3 89 45 04 mov DWORD PTR i$[rbp], eax
004b6 eb 26 jmp SHORT $LN24@stbi__conv
$LN22@stbi__conv:
004b8 8b 45 04 mov eax, DWORD PTR i$[rbp]
004bb ff c8 dec eax
004bd 89 45 04 mov DWORD PTR i$[rbp], eax
004c0 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
004c4 48 83 c0 02 add rax, 2
004c8 48 89 45 68 mov QWORD PTR src$1[rbp], rax
004cc 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
004d3 48 83 c0 04 add rax, 4
004d7 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN24@stbi__conv:
004de 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
004e2 0f 8c 9f 00 00
00 jl $LN23@stbi__conv
; 1893 : {
; 1894 : dest[0] = dest[1] = dest[2] = src[0];
004e8 b8 01 00 00 00 mov eax, 1
004ed 48 6b c0 00 imul rax, rax, 0
004f1 b9 01 00 00 00 mov ecx, 1
004f6 48 6b c9 02 imul rcx, rcx, 2
004fa 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00501 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00505 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0050a 88 04 0a mov BYTE PTR [rdx+rcx], al
0050d b8 01 00 00 00 mov eax, 1
00512 48 6b c0 02 imul rax, rax, 2
00516 b9 01 00 00 00 mov ecx, 1
0051b 48 6b c9 01 imul rcx, rcx, 1
0051f 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00526 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
0052d 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00532 88 04 0a mov BYTE PTR [rdx+rcx], al
00535 b8 01 00 00 00 mov eax, 1
0053a 48 6b c0 01 imul rax, rax, 1
0053e b9 01 00 00 00 mov ecx, 1
00543 48 6b c9 00 imul rcx, rcx, 0
00547 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0054e 4c 8b 85 88 00
00 00 mov r8, QWORD PTR dest$2[rbp]
00555 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0055a 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1895 : dest[3] = src[1];
0055d b8 01 00 00 00 mov eax, 1
00562 48 6b c0 01 imul rax, rax, 1
00566 b9 01 00 00 00 mov ecx, 1
0056b 48 6b c9 03 imul rcx, rcx, 3
0056f 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00576 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0057a 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0057f 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1896 : }
00582 e9 31 ff ff ff jmp $LN22@stbi__conv
$LN23@stbi__conv:
; 1897 : break;
00587 e9 a8 04 00 00 jmp $LN5@stbi__conv
$LN51@stbi__conv:
; 1898 : STBI__CASE(3, 4)
0058c 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00592 ff c8 dec eax
00594 89 45 04 mov DWORD PTR i$[rbp], eax
00597 eb 26 jmp SHORT $LN27@stbi__conv
$LN25@stbi__conv:
00599 8b 45 04 mov eax, DWORD PTR i$[rbp]
0059c ff c8 dec eax
0059e 89 45 04 mov DWORD PTR i$[rbp], eax
005a1 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
005a5 48 83 c0 03 add rax, 3
005a9 48 89 45 68 mov QWORD PTR src$1[rbp], rax
005ad 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
005b4 48 83 c0 04 add rax, 4
005b8 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN27@stbi__conv:
005bf 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
005c3 0f 8c 88 00 00
00 jl $LN26@stbi__conv
; 1899 : {
; 1900 : dest[0] = src[0];
005c9 b8 01 00 00 00 mov eax, 1
005ce 48 6b c0 00 imul rax, rax, 0
005d2 b9 01 00 00 00 mov ecx, 1
005d7 48 6b c9 00 imul rcx, rcx, 0
005db 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
005e2 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
005e6 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
005eb 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1901 : dest[1] = src[1];
005ee b8 01 00 00 00 mov eax, 1
005f3 48 6b c0 01 imul rax, rax, 1
005f7 b9 01 00 00 00 mov ecx, 1
005fc 48 6b c9 01 imul rcx, rcx, 1
00600 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00607 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0060b 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00610 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1902 : dest[2] = src[2];
00613 b8 01 00 00 00 mov eax, 1
00618 48 6b c0 02 imul rax, rax, 2
0061c b9 01 00 00 00 mov ecx, 1
00621 48 6b c9 02 imul rcx, rcx, 2
00625 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0062c 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00630 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00635 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1903 : dest[3] = 255;
00638 b8 01 00 00 00 mov eax, 1
0063d 48 6b c0 03 imul rax, rax, 3
00641 48 8b 8d 88 00
00 00 mov rcx, QWORD PTR dest$2[rbp]
00648 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 1904 : }
0064c e9 48 ff ff ff jmp $LN25@stbi__conv
$LN26@stbi__conv:
; 1905 : break;
00651 e9 de 03 00 00 jmp $LN5@stbi__conv
$LN52@stbi__conv:
; 1906 : STBI__CASE(3, 1)
00656 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
0065c ff c8 dec eax
0065e 89 45 04 mov DWORD PTR i$[rbp], eax
00661 eb 25 jmp SHORT $LN30@stbi__conv
$LN28@stbi__conv:
00663 8b 45 04 mov eax, DWORD PTR i$[rbp]
00666 ff c8 dec eax
00668 89 45 04 mov DWORD PTR i$[rbp], eax
0066b 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
0066f 48 83 c0 03 add rax, 3
00673 48 89 45 68 mov QWORD PTR src$1[rbp], rax
00677 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
0067e 48 ff c0 inc rax
00681 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN30@stbi__conv:
00688 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
0068c 7c 64 jl SHORT $LN29@stbi__conv
; 1907 : {
; 1908 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
0068e b8 01 00 00 00 mov eax, 1
00693 48 6b c0 02 imul rax, rax, 2
00697 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
0069b 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0069f b9 01 00 00 00 mov ecx, 1
006a4 48 6b c9 01 imul rcx, rcx, 1
006a8 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
006ac 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
006b0 ba 01 00 00 00 mov edx, 1
006b5 48 6b d2 00 imul rdx, rdx, 0
006b9 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
006bd 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
006c2 89 95 54 01 00
00 mov DWORD PTR tv258[rbp], edx
006c8 44 8b c0 mov r8d, eax
006cb 8b d1 mov edx, ecx
006cd 8b 85 54 01 00
00 mov eax, DWORD PTR tv258[rbp]
006d3 8b c8 mov ecx, eax
006d5 e8 00 00 00 00 call stbi__compute_y
006da b9 01 00 00 00 mov ecx, 1
006df 48 6b c9 00 imul rcx, rcx, 0
006e3 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
006ea 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1909 : }
006ed e9 71 ff ff ff jmp $LN28@stbi__conv
$LN29@stbi__conv:
; 1910 : break;
006f2 e9 3d 03 00 00 jmp $LN5@stbi__conv
$LN53@stbi__conv:
; 1911 : STBI__CASE(3, 2)
006f7 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
006fd ff c8 dec eax
006ff 89 45 04 mov DWORD PTR i$[rbp], eax
00702 eb 26 jmp SHORT $LN33@stbi__conv
$LN31@stbi__conv:
00704 8b 45 04 mov eax, DWORD PTR i$[rbp]
00707 ff c8 dec eax
00709 89 45 04 mov DWORD PTR i$[rbp], eax
0070c 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00710 48 83 c0 03 add rax, 3
00714 48 89 45 68 mov QWORD PTR src$1[rbp], rax
00718 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
0071f 48 83 c0 02 add rax, 2
00723 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN33@stbi__conv:
0072a 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
0072e 7c 78 jl SHORT $LN32@stbi__conv
; 1912 : {
; 1913 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
00730 b8 01 00 00 00 mov eax, 1
00735 48 6b c0 02 imul rax, rax, 2
00739 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
0073d 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00741 b9 01 00 00 00 mov ecx, 1
00746 48 6b c9 01 imul rcx, rcx, 1
0074a 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
0074e 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00752 ba 01 00 00 00 mov edx, 1
00757 48 6b d2 00 imul rdx, rdx, 0
0075b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0075f 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
00764 89 95 54 01 00
00 mov DWORD PTR tv278[rbp], edx
0076a 44 8b c0 mov r8d, eax
0076d 8b d1 mov edx, ecx
0076f 8b 85 54 01 00
00 mov eax, DWORD PTR tv278[rbp]
00775 8b c8 mov ecx, eax
00777 e8 00 00 00 00 call stbi__compute_y
0077c b9 01 00 00 00 mov ecx, 1
00781 48 6b c9 00 imul rcx, rcx, 0
00785 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0078c 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1914 : dest[1] = 255;
0078f b8 01 00 00 00 mov eax, 1
00794 48 6b c0 01 imul rax, rax, 1
00798 48 8b 8d 88 00
00 00 mov rcx, QWORD PTR dest$2[rbp]
0079f c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
; 1915 : }
007a3 e9 5c ff ff ff jmp $LN31@stbi__conv
$LN32@stbi__conv:
; 1916 : break;
007a8 e9 87 02 00 00 jmp $LN5@stbi__conv
$LN54@stbi__conv:
; 1917 : STBI__CASE(4, 1)
007ad 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
007b3 ff c8 dec eax
007b5 89 45 04 mov DWORD PTR i$[rbp], eax
007b8 eb 25 jmp SHORT $LN36@stbi__conv
$LN34@stbi__conv:
007ba 8b 45 04 mov eax, DWORD PTR i$[rbp]
007bd ff c8 dec eax
007bf 89 45 04 mov DWORD PTR i$[rbp], eax
007c2 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
007c6 48 83 c0 04 add rax, 4
007ca 48 89 45 68 mov QWORD PTR src$1[rbp], rax
007ce 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
007d5 48 ff c0 inc rax
007d8 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN36@stbi__conv:
007df 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
007e3 7c 64 jl SHORT $LN35@stbi__conv
; 1918 : {
; 1919 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
007e5 b8 01 00 00 00 mov eax, 1
007ea 48 6b c0 02 imul rax, rax, 2
007ee 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
007f2 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
007f6 b9 01 00 00 00 mov ecx, 1
007fb 48 6b c9 01 imul rcx, rcx, 1
007ff 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
00803 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
00807 ba 01 00 00 00 mov edx, 1
0080c 48 6b d2 00 imul rdx, rdx, 0
00810 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00814 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
00819 89 95 54 01 00
00 mov DWORD PTR tv300[rbp], edx
0081f 44 8b c0 mov r8d, eax
00822 8b d1 mov edx, ecx
00824 8b 85 54 01 00
00 mov eax, DWORD PTR tv300[rbp]
0082a 8b c8 mov ecx, eax
0082c e8 00 00 00 00 call stbi__compute_y
00831 b9 01 00 00 00 mov ecx, 1
00836 48 6b c9 00 imul rcx, rcx, 0
0083a 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00841 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1920 : }
00844 e9 71 ff ff ff jmp $LN34@stbi__conv
$LN35@stbi__conv:
; 1921 : break;
00849 e9 e6 01 00 00 jmp $LN5@stbi__conv
$LN55@stbi__conv:
; 1922 : STBI__CASE(4, 2)
0084e 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
00854 ff c8 dec eax
00856 89 45 04 mov DWORD PTR i$[rbp], eax
00859 eb 26 jmp SHORT $LN39@stbi__conv
$LN37@stbi__conv:
0085b 8b 45 04 mov eax, DWORD PTR i$[rbp]
0085e ff c8 dec eax
00860 89 45 04 mov DWORD PTR i$[rbp], eax
00863 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00867 48 83 c0 04 add rax, 4
0086b 48 89 45 68 mov QWORD PTR src$1[rbp], rax
0086f 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00876 48 83 c0 02 add rax, 2
0087a 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN39@stbi__conv:
00881 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00885 0f 8c 89 00 00
00 jl $LN38@stbi__conv
; 1923 : {
; 1924 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
0088b b8 01 00 00 00 mov eax, 1
00890 48 6b c0 02 imul rax, rax, 2
00894 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
00898 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0089c b9 01 00 00 00 mov ecx, 1
008a1 48 6b c9 01 imul rcx, rcx, 1
008a5 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
008a9 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
008ad ba 01 00 00 00 mov edx, 1
008b2 48 6b d2 00 imul rdx, rdx, 0
008b6 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
008ba 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
008bf 89 95 54 01 00
00 mov DWORD PTR tv320[rbp], edx
008c5 44 8b c0 mov r8d, eax
008c8 8b d1 mov edx, ecx
008ca 8b 85 54 01 00
00 mov eax, DWORD PTR tv320[rbp]
008d0 8b c8 mov ecx, eax
008d2 e8 00 00 00 00 call stbi__compute_y
008d7 b9 01 00 00 00 mov ecx, 1
008dc 48 6b c9 00 imul rcx, rcx, 0
008e0 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
008e7 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1925 : dest[1] = src[3];
008ea b8 01 00 00 00 mov eax, 1
008ef 48 6b c0 03 imul rax, rax, 3
008f3 b9 01 00 00 00 mov ecx, 1
008f8 48 6b c9 01 imul rcx, rcx, 1
008fc 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00903 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00907 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
0090c 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1926 : }
0090f e9 47 ff ff ff jmp $LN37@stbi__conv
$LN38@stbi__conv:
; 1927 : break;
00914 e9 1b 01 00 00 jmp $LN5@stbi__conv
$LN56@stbi__conv:
; 1928 : STBI__CASE(4, 3)
00919 8b 85 98 01 00
00 mov eax, DWORD PTR x$[rbp]
0091f ff c8 dec eax
00921 89 45 04 mov DWORD PTR i$[rbp], eax
00924 eb 26 jmp SHORT $LN42@stbi__conv
$LN40@stbi__conv:
00926 8b 45 04 mov eax, DWORD PTR i$[rbp]
00929 ff c8 dec eax
0092b 89 45 04 mov DWORD PTR i$[rbp], eax
0092e 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
00932 48 83 c0 04 add rax, 4
00936 48 89 45 68 mov QWORD PTR src$1[rbp], rax
0093a 48 8b 85 88 00
00 00 mov rax, QWORD PTR dest$2[rbp]
00941 48 83 c0 03 add rax, 3
00945 48 89 85 88 00
00 00 mov QWORD PTR dest$2[rbp], rax
$LN42@stbi__conv:
0094c 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
00950 7c 74 jl SHORT $LN41@stbi__conv
; 1929 : {
; 1930 : dest[0] = src[0];
00952 b8 01 00 00 00 mov eax, 1
00957 48 6b c0 00 imul rax, rax, 0
0095b b9 01 00 00 00 mov ecx, 1
00960 48 6b c9 00 imul rcx, rcx, 0
00964 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
0096b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
0096f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00974 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1931 : dest[1] = src[1];
00977 b8 01 00 00 00 mov eax, 1
0097c 48 6b c0 01 imul rax, rax, 1
00980 b9 01 00 00 00 mov ecx, 1
00985 48 6b c9 01 imul rcx, rcx, 1
00989 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
00990 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
00994 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
00999 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1932 : dest[2] = src[2];
0099c b8 01 00 00 00 mov eax, 1
009a1 48 6b c0 02 imul rax, rax, 2
009a5 b9 01 00 00 00 mov ecx, 1
009aa 48 6b c9 02 imul rcx, rcx, 2
009ae 48 8b 95 88 00
00 00 mov rdx, QWORD PTR dest$2[rbp]
009b5 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
009b9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
009be 88 04 0a mov BYTE PTR [rdx+rcx], al
; 1933 : }
009c1 e9 60 ff ff ff jmp $LN40@stbi__conv
$LN41@stbi__conv:
; 1934 : break;
009c6 eb 6c jmp SHORT $LN5@stbi__conv
$LN57@stbi__conv:
; 1935 : default:
; 1936 : STBI_ASSERT(0);
009c8 33 c0 xor eax, eax
009ca 85 c0 test eax, eax
009cc 75 1c jne SHORT $LN63@stbi__conv
009ce 41 b8 90 07 00
00 mov r8d, 1936 ; 00000790H
009d4 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
009db 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_13COJANIEC@?$AA0@
009e2 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
009e8 33 c0 xor eax, eax
$LN63@stbi__conv:
; 1937 : STBI_FREE(data);
009ea 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
009f1 ff 15 00 00 00
00 call QWORD PTR __imp_free
009f7 90 npad 1
; 1938 : STBI_FREE(good);
009f8 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
009fc ff 15 00 00 00
00 call QWORD PTR __imp_free
00a02 90 npad 1
; 1939 : return stbi__errpuc("unsupported", "Unsupported format conversion");
00a03 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@MHDBFHD@unsupported@
00a0a e8 00 00 00 00 call stbi__err
00a0f 85 c0 test eax, eax
00a11 74 0d je SHORT $LN64@stbi__conv
00a13 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv353[rbp], 0
00a1e eb 0b jmp SHORT $LN65@stbi__conv
$LN64@stbi__conv:
00a20 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv353[rbp], 0
$LN65@stbi__conv:
00a2b 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv353[rbp]
00a32 eb 17 jmp SHORT $LN1@stbi__conv
$LN5@stbi__conv:
; 1940 : }
; 1941 : #undef STBI__CASE
; 1942 : }
00a34 e9 ae f6 ff ff jmp $LN2@stbi__conv
$LN3@stbi__conv:
; 1943 :
; 1944 : STBI_FREE(data);
00a39 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR data$[rbp]
00a40 ff 15 00 00 00
00 call QWORD PTR __imp_free
00a46 90 npad 1
; 1945 : return good;
00a47 48 8b 45 48 mov rax, QWORD PTR good$[rbp]
$LN1@stbi__conv:
; 1946 : }
00a4b 48 8d a5 68 01
00 00 lea rsp, QWORD PTR [rbp+360]
00a52 5f pop rdi
00a53 5d pop rbp
00a54 c3 ret 0
00a55 0f 1f 00 npad 3
$LN66@stbi__conv:
00a58 00 00 00 00 DD $LN45@stbi__conv
00a5c 00 00 00 00 DD $LN46@stbi__conv
00a60 00 00 00 00 DD $LN47@stbi__conv
00a64 00 00 00 00 DD $LN57@stbi__conv
00a68 00 00 00 00 DD $LN57@stbi__conv
00a6c 00 00 00 00 DD $LN57@stbi__conv
00a70 00 00 00 00 DD $LN57@stbi__conv
00a74 00 00 00 00 DD $LN48@stbi__conv
00a78 00 00 00 00 DD $LN57@stbi__conv
00a7c 00 00 00 00 DD $LN49@stbi__conv
00a80 00 00 00 00 DD $LN50@stbi__conv
00a84 00 00 00 00 DD $LN57@stbi__conv
00a88 00 00 00 00 DD $LN57@stbi__conv
00a8c 00 00 00 00 DD $LN57@stbi__conv
00a90 00 00 00 00 DD $LN57@stbi__conv
00a94 00 00 00 00 DD $LN52@stbi__conv
00a98 00 00 00 00 DD $LN53@stbi__conv
00a9c 00 00 00 00 DD $LN57@stbi__conv
00aa0 00 00 00 00 DD $LN51@stbi__conv
00aa4 00 00 00 00 DD $LN57@stbi__conv
00aa8 00 00 00 00 DD $LN57@stbi__conv
00aac 00 00 00 00 DD $LN57@stbi__conv
00ab0 00 00 00 00 DD $LN57@stbi__conv
00ab4 00 00 00 00 DD $LN54@stbi__conv
00ab8 00 00 00 00 DD $LN55@stbi__conv
00abc 00 00 00 00 DD $LN56@stbi__conv
stbi__convert_format ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__compute_y
_TEXT SEGMENT
r$ = 224
g$ = 232
b$ = 240
stbi__compute_y PROC ; COMDAT
; 1828 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000d 55 push rbp
0000e 57 push rdi
0000f 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00027 90 npad 1
; 1829 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8);
00028 6b 85 e0 00 00
00 4d imul eax, DWORD PTR r$[rbp], 77 ; 0000004dH
0002f 69 8d e8 00 00
00 96 00 00 00 imul ecx, DWORD PTR g$[rbp], 150 ; 00000096H
00039 03 c1 add eax, ecx
0003b 6b 8d f0 00 00
00 1d imul ecx, DWORD PTR b$[rbp], 29
00042 03 c1 add eax, ecx
00044 c1 f8 08 sar eax, 8
; 1830 : }
00047 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0004e 5f pop rdi
0004f 5d pop rbp
00050 c3 ret 0
stbi__compute_y ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__get32le
_TEXT SEGMENT
z$ = 4
s$ = 256
stbi__get32le PROC ; COMDAT
; 1802 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1803 : stbi__uint32 z = stbi__get16le(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get16le
0002c 89 45 04 mov DWORD PTR z$[rbp], eax
; 1804 : z += (stbi__uint32)stbi__get16le(s) << 16;
0002f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__get16le
0003b c1 e0 10 shl eax, 16
0003e 8b 4d 04 mov ecx, DWORD PTR z$[rbp]
00041 03 c8 add ecx, eax
00043 8b c1 mov eax, ecx
00045 89 45 04 mov DWORD PTR z$[rbp], eax
; 1805 : return z;
00048 8b 45 04 mov eax, DWORD PTR z$[rbp]
; 1806 : }
0004b 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00052 5f pop rdi
00053 5d pop rbp
00054 c3 ret 0
stbi__get32le ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__get16le
_TEXT SEGMENT
z$ = 4
s$ = 256
stbi__get16le PROC ; COMDAT
; 1794 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1795 : int z = stbi__get8(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get8
0002c 0f b6 c0 movzx eax, al
0002f 89 45 04 mov DWORD PTR z$[rbp], eax
; 1796 : return z + (stbi__get8(s) << 8);
00032 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00039 e8 00 00 00 00 call stbi__get8
0003e 0f b6 c0 movzx eax, al
00041 c1 e0 08 shl eax, 8
00044 8b 4d 04 mov ecx, DWORD PTR z$[rbp]
00047 03 c8 add ecx, eax
00049 8b c1 mov eax, ecx
; 1797 : }
0004b 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00052 5f pop rdi
00053 5d pop rbp
00054 c3 ret 0
stbi__get16le ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__get32be
_TEXT SEGMENT
z$ = 4
tv66 = 212
s$ = 256
stbi__get32be PROC ; COMDAT
; 1784 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1785 : stbi__uint32 z = stbi__get16be(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get16be
0002c 89 45 04 mov DWORD PTR z$[rbp], eax
; 1786 : return (z << 16) + stbi__get16be(s);
0002f 8b 45 04 mov eax, DWORD PTR z$[rbp]
00032 c1 e0 10 shl eax, 16
00035 89 85 d4 00 00
00 mov DWORD PTR tv66[rbp], eax
0003b 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00042 e8 00 00 00 00 call stbi__get16be
00047 8b 8d d4 00 00
00 mov ecx, DWORD PTR tv66[rbp]
0004d 03 c8 add ecx, eax
0004f 8b c1 mov eax, ecx
; 1787 : }
00051 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00058 5f pop rdi
00059 5d pop rbp
0005a c3 ret 0
stbi__get32be ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__get16be
_TEXT SEGMENT
z$ = 4
tv67 = 212
s$ = 256
stbi__get16be PROC ; COMDAT
; 1774 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1775 : int z = stbi__get8(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get8
0002c 0f b6 c0 movzx eax, al
0002f 89 45 04 mov DWORD PTR z$[rbp], eax
; 1776 : return (z << 8) + stbi__get8(s);
00032 8b 45 04 mov eax, DWORD PTR z$[rbp]
00035 c1 e0 08 shl eax, 8
00038 89 85 d4 00 00
00 mov DWORD PTR tv67[rbp], eax
0003e 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00045 e8 00 00 00 00 call stbi__get8
0004a 0f b6 c0 movzx eax, al
0004d 8b 8d d4 00 00
00 mov ecx, DWORD PTR tv67[rbp]
00053 03 c8 add ecx, eax
00055 8b c1 mov eax, ecx
; 1777 : }
00057 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
0005e 5f pop rdi
0005f 5d pop rbp
00060 c3 ret 0
stbi__get16be ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__getn
_TEXT SEGMENT
blen$1 = 4
res$2 = 36
count$3 = 68
tv87 = 276
s$ = 320
buffer$ = 328
n$ = 336
stbi__getn PROC ; COMDAT
; 1746 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 1747 : if (s->io.read) {
0002a 48 8b 85 40 01
00 00 mov rax, QWORD PTR s$[rbp]
00031 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
00036 0f 84 e1 00 00
00 je $LN2@stbi__getn
; 1748 : int blen = (int)(s->img_buffer_end - s->img_buffer);
0003c 48 8b 85 40 01
00 00 mov rax, QWORD PTR s$[rbp]
00043 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0004a 48 8b 89 c0 00
00 00 mov rcx, QWORD PTR [rcx+192]
00051 48 8b 80 c8 00
00 00 mov rax, QWORD PTR [rax+200]
00058 48 2b c1 sub rax, rcx
0005b 89 45 04 mov DWORD PTR blen$1[rbp], eax
; 1749 : if (blen < n) {
0005e 8b 85 50 01 00
00 mov eax, DWORD PTR n$[rbp]
00064 39 45 04 cmp DWORD PTR blen$1[rbp], eax
00067 0f 8d b0 00 00
00 jge $LN3@stbi__getn
; 1750 : int res, count;
; 1751 :
; 1752 : memcpy(buffer, s->img_buffer, blen);
0006d 48 63 45 04 movsxd rax, DWORD PTR blen$1[rbp]
00071 4c 8b c0 mov r8, rax
00074 48 8b 85 40 01
00 00 mov rax, QWORD PTR s$[rbp]
0007b 48 8b 90 c0 00
00 00 mov rdx, QWORD PTR [rax+192]
00082 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR buffer$[rbp]
00089 e8 00 00 00 00 call memcpy
0008e 90 npad 1
; 1753 :
; 1754 : count = (s->io.read)(s->io_user_data, (char *)buffer + blen, n - blen);
0008f 8b 45 04 mov eax, DWORD PTR blen$1[rbp]
00092 8b 8d 50 01 00
00 mov ecx, DWORD PTR n$[rbp]
00098 2b c8 sub ecx, eax
0009a 8b c1 mov eax, ecx
0009c 48 63 4d 04 movsxd rcx, DWORD PTR blen$1[rbp]
000a0 48 8b 95 48 01
00 00 mov rdx, QWORD PTR buffer$[rbp]
000a7 48 03 d1 add rdx, rcx
000aa 48 8b ca mov rcx, rdx
000ad 44 8b c0 mov r8d, eax
000b0 48 8b d1 mov rdx, rcx
000b3 48 8b 85 40 01
00 00 mov rax, QWORD PTR s$[rbp]
000ba 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
000be 48 8b 85 40 01
00 00 mov rax, QWORD PTR s$[rbp]
000c5 ff 50 10 call QWORD PTR [rax+16]
000c8 89 45 44 mov DWORD PTR count$3[rbp], eax
; 1755 : res = (count == (n - blen));
000cb 8b 45 04 mov eax, DWORD PTR blen$1[rbp]
000ce 8b 8d 50 01 00
00 mov ecx, DWORD PTR n$[rbp]
000d4 2b c8 sub ecx, eax
000d6 8b c1 mov eax, ecx
000d8 39 45 44 cmp DWORD PTR count$3[rbp], eax
000db 75 0c jne SHORT $LN7@stbi__getn
000dd c7 85 14 01 00
00 01 00 00 00 mov DWORD PTR tv87[rbp], 1
000e7 eb 0a jmp SHORT $LN8@stbi__getn
$LN7@stbi__getn:
000e9 c7 85 14 01 00
00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
$LN8@stbi__getn:
000f3 8b 85 14 01 00
00 mov eax, DWORD PTR tv87[rbp]
000f9 89 45 24 mov DWORD PTR res$2[rbp], eax
; 1756 : s->img_buffer = s->img_buffer_end;
000fc 48 8b 85 40 01
00 00 mov rax, QWORD PTR s$[rbp]
00103 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0010a 48 8b 89 c8 00
00 00 mov rcx, QWORD PTR [rcx+200]
00111 48 89 88 c0 00
00 00 mov QWORD PTR [rax+192], rcx
; 1757 : return res;
00118 8b 45 24 mov eax, DWORD PTR res$2[rbp]
0011b eb 78 jmp SHORT $LN1@stbi__getn
$LN3@stbi__getn:
$LN2@stbi__getn:
; 1758 : }
; 1759 : }
; 1760 :
; 1761 : if (s->img_buffer + n <= s->img_buffer_end) {
0011d 48 63 85 50 01
00 00 movsxd rax, DWORD PTR n$[rbp]
00124 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0012b 48 03 81 c0 00
00 00 add rax, QWORD PTR [rcx+192]
00132 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00139 48 3b 81 c8 00
00 00 cmp rax, QWORD PTR [rcx+200]
00140 77 51 ja SHORT $LN4@stbi__getn
; 1762 : memcpy(buffer, s->img_buffer, n);
00142 48 63 85 50 01
00 00 movsxd rax, DWORD PTR n$[rbp]
00149 4c 8b c0 mov r8, rax
0014c 48 8b 85 40 01
00 00 mov rax, QWORD PTR s$[rbp]
00153 48 8b 90 c0 00
00 00 mov rdx, QWORD PTR [rax+192]
0015a 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR buffer$[rbp]
00161 e8 00 00 00 00 call memcpy
00166 90 npad 1
; 1763 : s->img_buffer += n;
00167 48 63 85 50 01
00 00 movsxd rax, DWORD PTR n$[rbp]
0016e 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00175 48 03 81 c0 00
00 00 add rax, QWORD PTR [rcx+192]
0017c 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00183 48 89 81 c0 00
00 00 mov QWORD PTR [rcx+192], rax
; 1764 : return 1;
0018a b8 01 00 00 00 mov eax, 1
0018f eb 04 jmp SHORT $LN1@stbi__getn
; 1765 : } else
00191 eb 02 jmp SHORT $LN5@stbi__getn
$LN4@stbi__getn:
; 1766 : return 0;
00193 33 c0 xor eax, eax
$LN5@stbi__getn:
$LN1@stbi__getn:
; 1767 : }
00195 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
0019c 5f pop rdi
0019d 5d pop rbp
0019e c3 ret 0
stbi__getn ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__skip
_TEXT SEGMENT
blen$1 = 4
s$ = 256
n$ = 264
stbi__skip PROC ; COMDAT
; 1723 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 1724 : if (n == 0)
00024 83 bd 08 01 00
00 00 cmp DWORD PTR n$[rbp], 0
0002b 75 05 jne SHORT $LN2@stbi__skip
; 1725 : return; // already there!
0002d e9 cb 00 00 00 jmp $LN1@stbi__skip
$LN2@stbi__skip:
; 1726 : if (n < 0) {
00032 83 bd 08 01 00
00 00 cmp DWORD PTR n$[rbp], 0
00039 7d 21 jge SHORT $LN3@stbi__skip
; 1727 : s->img_buffer = s->img_buffer_end;
0003b 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00042 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00049 48 8b 89 c8 00
00 00 mov rcx, QWORD PTR [rcx+200]
00050 48 89 88 c0 00
00 00 mov QWORD PTR [rax+192], rcx
; 1728 : return;
00057 e9 a1 00 00 00 jmp $LN1@stbi__skip
$LN3@stbi__skip:
; 1729 : }
; 1730 : if (s->io.read) {
0005c 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00063 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
00068 74 70 je SHORT $LN4@stbi__skip
; 1731 : int blen = (int)(s->img_buffer_end - s->img_buffer);
0006a 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00071 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00078 48 8b 89 c0 00
00 00 mov rcx, QWORD PTR [rcx+192]
0007f 48 8b 80 c8 00
00 00 mov rax, QWORD PTR [rax+200]
00086 48 2b c1 sub rax, rcx
00089 89 45 04 mov DWORD PTR blen$1[rbp], eax
; 1732 : if (blen < n) {
0008c 8b 85 08 01 00
00 mov eax, DWORD PTR n$[rbp]
00092 39 45 04 cmp DWORD PTR blen$1[rbp], eax
00095 7d 43 jge SHORT $LN5@stbi__skip
; 1733 : s->img_buffer = s->img_buffer_end;
00097 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
0009e 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a5 48 8b 89 c8 00
00 00 mov rcx, QWORD PTR [rcx+200]
000ac 48 89 88 c0 00
00 00 mov QWORD PTR [rax+192], rcx
; 1734 : (s->io.skip)(s->io_user_data, n - blen);
000b3 8b 45 04 mov eax, DWORD PTR blen$1[rbp]
000b6 8b 8d 08 01 00
00 mov ecx, DWORD PTR n$[rbp]
000bc 2b c8 sub ecx, eax
000be 8b c1 mov eax, ecx
000c0 8b d0 mov edx, eax
000c2 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
000c9 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
000cd 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
000d4 ff 50 18 call QWORD PTR [rax+24]
000d7 90 npad 1
; 1735 : return;
000d8 eb 23 jmp SHORT $LN1@stbi__skip
$LN5@stbi__skip:
$LN4@stbi__skip:
; 1736 : }
; 1737 : }
; 1738 : s->img_buffer += n;
000da 48 63 85 08 01
00 00 movsxd rax, DWORD PTR n$[rbp]
000e1 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000e8 48 03 81 c0 00
00 00 add rax, QWORD PTR [rcx+192]
000ef 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000f6 48 89 81 c0 00
00 00 mov QWORD PTR [rcx+192], rax
$LN1@stbi__skip:
; 1739 : }
000fd 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00104 5f pop rdi
00105 5d pop rbp
00106 c3 ret 0
stbi__skip ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__at_eof
_TEXT SEGMENT
tv76 = 192
s$ = 240
stbi__at_eof PROC ; COMDAT
; 1703 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1704 : if (s->io.read) {
00020 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00027 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
0002c 74 31 je SHORT $LN2@stbi__at_e
; 1705 : if (!(s->io.eof)(s->io_user_data))
0002e 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00035 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
00039 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00040 ff 50 20 call QWORD PTR [rax+32]
00043 85 c0 test eax, eax
00045 75 04 jne SHORT $LN3@stbi__at_e
; 1706 : return 0;
00047 33 c0 xor eax, eax
00049 eb 4e jmp SHORT $LN1@stbi__at_e
$LN3@stbi__at_e:
; 1707 : // if feof() is true, check if buffer = end
; 1708 : // special case: we've only got the special 0 character at the end
; 1709 : if (s->read_from_callbacks == 0)
0004b 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00052 83 78 30 00 cmp DWORD PTR [rax+48], 0
00056 75 07 jne SHORT $LN4@stbi__at_e
; 1710 : return 1;
00058 b8 01 00 00 00 mov eax, 1
0005d eb 3a jmp SHORT $LN1@stbi__at_e
$LN4@stbi__at_e:
$LN2@stbi__at_e:
; 1711 : }
; 1712 :
; 1713 : return s->img_buffer >= s->img_buffer_end;
0005f 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00066 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0006d 48 8b 89 c8 00
00 00 mov rcx, QWORD PTR [rcx+200]
00074 48 39 88 c0 00
00 00 cmp QWORD PTR [rax+192], rcx
0007b 72 0c jb SHORT $LN6@stbi__at_e
0007d c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv76[rbp], 1
00087 eb 0a jmp SHORT $LN7@stbi__at_e
$LN6@stbi__at_e:
00089 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv76[rbp], 0
$LN7@stbi__at_e:
00093 8b 85 c0 00 00
00 mov eax, DWORD PTR tv76[rbp]
$LN1@stbi__at_e:
; 1714 : }
00099 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000a0 5f pop rdi
000a1 5d pop rbp
000a2 c3 ret 0
stbi__at_eof ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__get8
_TEXT SEGMENT
tv72 = 192
tv81 = 192
s$ = 240
stbi__get8 PROC ; COMDAT
; 1689 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1690 : if (s->img_buffer < s->img_buffer_end)
00020 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00027 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0002e 48 8b 89 c8 00
00 00 mov rcx, QWORD PTR [rcx+200]
00035 48 39 88 c0 00
00 00 cmp QWORD PTR [rax+192], rcx
0003c 73 3f jae SHORT $LN2@stbi__get8
; 1691 : return *s->img_buffer++;
0003e 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00045 48 8b 80 c0 00
00 00 mov rax, QWORD PTR [rax+192]
0004c 0f b6 00 movzx eax, BYTE PTR [rax]
0004f 88 85 c0 00 00
00 mov BYTE PTR tv72[rbp], al
00055 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0005c 48 8b 80 c0 00
00 00 mov rax, QWORD PTR [rax+192]
00063 48 ff c0 inc rax
00066 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0006d 48 89 81 c0 00
00 00 mov QWORD PTR [rcx+192], rax
00074 0f b6 85 c0 00
00 00 movzx eax, BYTE PTR tv72[rbp]
0007b eb 5b jmp SHORT $LN1@stbi__get8
$LN2@stbi__get8:
; 1692 : if (s->read_from_callbacks) {
0007d 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00084 83 78 30 00 cmp DWORD PTR [rax+48], 0
00088 74 4c je SHORT $LN3@stbi__get8
; 1693 : stbi__refill_buffer(s);
0008a 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR s$[rbp]
00091 e8 00 00 00 00 call stbi__refill_buffer
00096 90 npad 1
; 1694 : return *s->img_buffer++;
00097 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0009e 48 8b 80 c0 00
00 00 mov rax, QWORD PTR [rax+192]
000a5 0f b6 00 movzx eax, BYTE PTR [rax]
000a8 88 85 c0 00 00
00 mov BYTE PTR tv81[rbp], al
000ae 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
000b5 48 8b 80 c0 00
00 00 mov rax, QWORD PTR [rax+192]
000bc 48 ff c0 inc rax
000bf 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR s$[rbp]
000c6 48 89 81 c0 00
00 00 mov QWORD PTR [rcx+192], rax
000cd 0f b6 85 c0 00
00 00 movzx eax, BYTE PTR tv81[rbp]
000d4 eb 02 jmp SHORT $LN1@stbi__get8
$LN3@stbi__get8:
; 1695 : }
; 1696 : return 0;
000d6 32 c0 xor al, al
$LN1@stbi__get8:
; 1697 : }
000d8 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000df 5f pop rdi
000e0 5d pop rbp
000e1 c3 ret 0
stbi__get8 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__loadf_main
_TEXT SEGMENT
data$ = 8
ri$4 = 40
hdr_data$5 = 88
tv89 = 292
tv129 = 296
__$ArrayPad$ = 304
s$ = 352
x$ = 360
y$ = 368
comp$ = 376
req_comp$ = 384
stbi__loadf_main PROC ; COMDAT
; 1526 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 78 01
00 00 sub rsp, 376 ; 00000178H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 22 00 00 00 mov ecx, 34 ; 00000022H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 98
01 00 00 mov rcx, QWORD PTR [rsp+408]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 30 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1527 : unsigned char *data;
; 1528 : #ifndef STBI_NO_HDR
; 1529 : if (stbi__hdr_test(s)) {
00059 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR s$[rbp]
00060 e8 00 00 00 00 call stbi__hdr_test
00065 85 c0 test eax, eax
00067 74 71 je SHORT $LN2@stbi__load
; 1530 : stbi__result_info ri;
; 1531 : float *hdr_data = stbi__hdr_load(s, x, y, comp, req_comp, &ri);
00069 48 8d 45 28 lea rax, QWORD PTR ri$4[rbp]
0006d 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
00072 8b 85 80 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00078 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007c 4c 8b 8d 78 01
00 00 mov r9, QWORD PTR comp$[rbp]
00083 4c 8b 85 70 01
00 00 mov r8, QWORD PTR y$[rbp]
0008a 48 8b 95 68 01
00 00 mov rdx, QWORD PTR x$[rbp]
00091 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR s$[rbp]
00098 e8 00 00 00 00 call stbi__hdr_load
0009d 48 89 45 58 mov QWORD PTR hdr_data$5[rbp], rax
; 1532 : if (hdr_data)
000a1 48 83 7d 58 00 cmp QWORD PTR hdr_data$5[rbp], 0
000a6 74 29 je SHORT $LN3@stbi__load
; 1533 : stbi__float_postprocess(hdr_data, x, y, comp, req_comp);
000a8 8b 85 80 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
000ae 89 44 24 20 mov DWORD PTR [rsp+32], eax
000b2 4c 8b 8d 78 01
00 00 mov r9, QWORD PTR comp$[rbp]
000b9 4c 8b 85 70 01
00 00 mov r8, QWORD PTR y$[rbp]
000c0 48 8b 95 68 01
00 00 mov rdx, QWORD PTR x$[rbp]
000c7 48 8b 4d 58 mov rcx, QWORD PTR hdr_data$5[rbp]
000cb e8 00 00 00 00 call stbi__float_postprocess
000d0 90 npad 1
$LN3@stbi__load:
; 1534 : return hdr_data;
000d1 48 8b 45 58 mov rax, QWORD PTR hdr_data$5[rbp]
000d5 e9 b0 00 00 00 jmp $LN1@stbi__load
$LN2@stbi__load:
; 1535 : }
; 1536 : #endif
; 1537 : data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp);
000da 8b 85 80 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
000e0 89 44 24 20 mov DWORD PTR [rsp+32], eax
000e4 4c 8b 8d 78 01
00 00 mov r9, QWORD PTR comp$[rbp]
000eb 4c 8b 85 70 01
00 00 mov r8, QWORD PTR y$[rbp]
000f2 48 8b 95 68 01
00 00 mov rdx, QWORD PTR x$[rbp]
000f9 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR s$[rbp]
00100 e8 00 00 00 00 call stbi__load_and_postprocess_8bit
00105 48 89 45 08 mov QWORD PTR data$[rbp], rax
; 1538 : if (data)
00109 48 83 7d 08 00 cmp QWORD PTR data$[rbp], 0
0010e 74 4b je SHORT $LN4@stbi__load
; 1539 : return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp);
00110 83 bd 80 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
00117 74 0e je SHORT $LN6@stbi__load
00119 8b 85 80 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
0011f 89 85 24 01 00
00 mov DWORD PTR tv89[rbp], eax
00125 eb 0f jmp SHORT $LN7@stbi__load
$LN6@stbi__load:
00127 48 8b 85 78 01
00 00 mov rax, QWORD PTR comp$[rbp]
0012e 8b 00 mov eax, DWORD PTR [rax]
00130 89 85 24 01 00
00 mov DWORD PTR tv89[rbp], eax
$LN7@stbi__load:
00136 44 8b 8d 24 01
00 00 mov r9d, DWORD PTR tv89[rbp]
0013d 48 8b 85 70 01
00 00 mov rax, QWORD PTR y$[rbp]
00144 44 8b 00 mov r8d, DWORD PTR [rax]
00147 48 8b 85 68 01
00 00 mov rax, QWORD PTR x$[rbp]
0014e 8b 10 mov edx, DWORD PTR [rax]
00150 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp]
00154 e8 00 00 00 00 call stbi__ldr_to_hdr
00159 eb 2f jmp SHORT $LN1@stbi__load
$LN4@stbi__load:
; 1540 : return stbi__errpf("unknown image type", "Image not of any known type, or corrupt");
0015b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BD@CBEDEJPH@unknown?5image?5type@
00162 e8 00 00 00 00 call stbi__err
00167 85 c0 test eax, eax
00169 74 0d je SHORT $LN8@stbi__load
0016b 48 c7 85 28 01
00 00 00 00 00
00 mov QWORD PTR tv129[rbp], 0
00176 eb 0b jmp SHORT $LN9@stbi__load
$LN8@stbi__load:
00178 48 c7 85 28 01
00 00 00 00 00
00 mov QWORD PTR tv129[rbp], 0
$LN9@stbi__load:
00183 48 8b 85 28 01
00 00 mov rax, QWORD PTR tv129[rbp]
$LN1@stbi__load:
; 1541 : }
0018a 48 8b f8 mov rdi, rax
0018d 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00191 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__loadf_main$rtcFrameData
00198 e8 00 00 00 00 call _RTC_CheckStackVars
0019d 48 8b c7 mov rax, rdi
001a0 48 8b 8d 30 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
001a7 48 33 cd xor rcx, rbp
001aa e8 00 00 00 00 call __security_check_cookie
001af 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
001b6 5f pop rdi
001b7 5d pop rbp
001b8 c3 ret 0
stbi__loadf_main ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__fopen
_TEXT SEGMENT
f$ = 8
__$ArrayPad$ = 216
filename$ = 256
mode$ = 264
stbi__fopen PROC ; COMDAT
; 1396 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001d b9 0a 00 00 00 mov ecx, 10
00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00027 f3 ab rep stosd
00029 48 8b 8c 24 28
01 00 00 mov rcx, QWORD PTR [rsp+296]
00031 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00038 48 33 c5 xor rax, rbp
0003b 48 89 85 d8 00
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00042 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004e 90 npad 1
; 1397 : FILE *f;
; 1398 : #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8)
; 1399 : wchar_t wMode[64];
; 1400 : wchar_t wFilename[1024];
; 1401 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename,
; 1402 : sizeof(wFilename) / sizeof(*wFilename)))
; 1403 : return 0;
; 1404 :
; 1405 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode,
; 1406 : sizeof(wMode) / sizeof(*wMode)))
; 1407 : return 0;
; 1408 :
; 1409 : #if defined(_MSC_VER) && _MSC_VER >= 1400
; 1410 : if (0 != _wfopen_s(&f, wFilename, wMode))
; 1411 : f = 0;
; 1412 : #else
; 1413 : f = _wfopen(wFilename, wMode);
; 1414 : #endif
; 1415 :
; 1416 : #elif defined(_MSC_VER) && _MSC_VER >= 1400
; 1417 : if (0 != fopen_s(&f, filename, mode))
0004f 4c 8b 85 08 01
00 00 mov r8, QWORD PTR mode$[rbp]
00056 48 8b 95 00 01
00 00 mov rdx, QWORD PTR filename$[rbp]
0005d 48 8d 4d 08 lea rcx, QWORD PTR f$[rbp]
00061 ff 15 00 00 00
00 call QWORD PTR __imp_fopen_s
00067 85 c0 test eax, eax
00069 74 08 je SHORT $LN2@stbi__fope
; 1418 : f = 0;
0006b 48 c7 45 08 00
00 00 00 mov QWORD PTR f$[rbp], 0
$LN2@stbi__fope:
; 1419 : #else
; 1420 : f = fopen(filename, mode);
; 1421 : #endif
; 1422 : return f;
00073 48 8b 45 08 mov rax, QWORD PTR f$[rbp]
; 1423 : }
00077 48 8b f8 mov rdi, rax
0007a 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0007e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__fopen$rtcFrameData
00085 e8 00 00 00 00 call _RTC_CheckStackVars
0008a 48 8b c7 mov rax, rdi
0008d 48 8b 8d d8 00
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00094 48 33 cd xor rcx, rbp
00097 e8 00 00 00 00 call __security_check_cookie
0009c 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000a3 5f pop rdi
000a4 5d pop rbp
000a5 c3 ret 0
stbi__fopen ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__float_postprocess
_TEXT SEGMENT
channels$1 = 4
tv77 = 212
tv81 = 212
result$ = 256
x$ = 264
y$ = 272
comp$ = 280
req_comp$ = 288
stbi__float_postprocess PROC ; COMDAT
; 1367 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 1368 : if (stbi__vertically_flip_on_load && result != NULL) {
0002f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
00034 8b c0 mov eax, eax
00036 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0003c 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00045 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00049 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
0004d 74 25 je SHORT $LN4@stbi__floa
0004f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
00054 8b c0 mov eax, eax
00056 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0005c 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00065 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00069 8b 04 08 mov eax, DWORD PTR [rax+rcx]
0006c 89 85 d4 00 00
00 mov DWORD PTR tv77[rbp], eax
00072 eb 0c jmp SHORT $LN5@stbi__floa
$LN4@stbi__floa:
00074 8b 05 00 00 00
00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
0007a 89 85 d4 00 00
00 mov DWORD PTR tv77[rbp], eax
$LN5@stbi__floa:
00080 83 bd d4 00 00
00 00 cmp DWORD PTR tv77[rbp], 0
00087 74 64 je SHORT $LN2@stbi__floa
00089 48 83 bd 00 01
00 00 00 cmp QWORD PTR result$[rbp], 0
00091 74 5a je SHORT $LN2@stbi__floa
; 1369 : int channels = req_comp ? req_comp : *comp;
00093 83 bd 20 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
0009a 74 0e je SHORT $LN6@stbi__floa
0009c 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
000a2 89 85 d4 00 00
00 mov DWORD PTR tv81[rbp], eax
000a8 eb 0f jmp SHORT $LN7@stbi__floa
$LN6@stbi__floa:
000aa 48 8b 85 18 01
00 00 mov rax, QWORD PTR comp$[rbp]
000b1 8b 00 mov eax, DWORD PTR [rax]
000b3 89 85 d4 00 00
00 mov DWORD PTR tv81[rbp], eax
$LN7@stbi__floa:
000b9 8b 85 d4 00 00
00 mov eax, DWORD PTR tv81[rbp]
000bf 89 45 04 mov DWORD PTR channels$1[rbp], eax
; 1370 : stbi__vertical_flip(result, *x, *y, channels * sizeof(float));
000c2 48 63 45 04 movsxd rax, DWORD PTR channels$1[rbp]
000c6 48 c1 e0 02 shl rax, 2
000ca 44 8b c8 mov r9d, eax
000cd 48 8b 85 10 01
00 00 mov rax, QWORD PTR y$[rbp]
000d4 44 8b 00 mov r8d, DWORD PTR [rax]
000d7 48 8b 85 08 01
00 00 mov rax, QWORD PTR x$[rbp]
000de 8b 10 mov edx, DWORD PTR [rax]
000e0 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR result$[rbp]
000e7 e8 00 00 00 00 call stbi__vertical_flip
000ec 90 npad 1
$LN2@stbi__floa:
; 1371 : }
; 1372 : }
000ed 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
000f4 5f pop rdi
000f5 5d pop rbp
000f6 c3 ret 0
stbi__float_postprocess ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__load_and_postprocess_16bit
_TEXT SEGMENT
ri$ = 8
result$ = 56
channels$4 = 84
tv82 = 292
tv132 = 292
tv135 = 292
__$ArrayPad$ = 296
s$ = 336
x$ = 344
y$ = 352
comp$ = 360
req_comp$ = 368
stbi__load_and_postprocess_16bit PROC ; COMDAT
; 1338 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 78 01
00 00 sub rsp, 376 ; 00000178H
0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
00022 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
00027 b9 1e 00 00 00 mov ecx, 30
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 98
01 00 00 mov rcx, QWORD PTR [rsp+408]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 28 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1339 : stbi__result_info ri;
; 1340 : void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16);
00059 c7 44 24 30 10
00 00 00 mov DWORD PTR [rsp+48], 16
00061 48 8d 45 08 lea rax, QWORD PTR ri$[rbp]
00065 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
0006a 8b 85 70 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
00074 4c 8b 8d 68 01
00 00 mov r9, QWORD PTR comp$[rbp]
0007b 4c 8b 85 60 01
00 00 mov r8, QWORD PTR y$[rbp]
00082 48 8b 95 58 01
00 00 mov rdx, QWORD PTR x$[rbp]
00089 48 8b 8d 50 01
00 00 mov rcx, QWORD PTR s$[rbp]
00090 e8 00 00 00 00 call stbi__load_main
00095 48 89 45 38 mov QWORD PTR result$[rbp], rax
; 1341 :
; 1342 : if (result == NULL)
00099 48 83 7d 38 00 cmp QWORD PTR result$[rbp], 0
0009e 75 07 jne SHORT $LN2@stbi__load
; 1343 : return NULL;
000a0 33 c0 xor eax, eax
000a2 e9 36 01 00 00 jmp $LN1@stbi__load
$LN2@stbi__load:
; 1344 :
; 1345 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.
; 1346 : STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);
000a7 83 7d 08 08 cmp DWORD PTR ri$[rbp], 8
000ab 74 22 je SHORT $LN6@stbi__load
000ad 83 7d 08 10 cmp DWORD PTR ri$[rbp], 16
000b1 74 1c je SHORT $LN6@stbi__load
000b3 41 b8 42 05 00
00 mov r8d, 1346 ; 00000542H
000b9 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
000c0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@
000c7 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
000cd 33 c0 xor eax, eax
$LN6@stbi__load:
; 1347 :
; 1348 : if (ri.bits_per_channel != 16) {
000cf 83 7d 08 10 cmp DWORD PTR ri$[rbp], 16
000d3 74 54 je SHORT $LN3@stbi__load
; 1349 : result = stbi__convert_8_to_16((stbi_uc *)result, *x, *y,
000d5 83 bd 70 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
000dc 75 11 jne SHORT $LN7@stbi__load
000de 48 8b 85 68 01
00 00 mov rax, QWORD PTR comp$[rbp]
000e5 8b 00 mov eax, DWORD PTR [rax]
000e7 89 85 24 01 00
00 mov DWORD PTR tv82[rbp], eax
000ed eb 0c jmp SHORT $LN8@stbi__load
$LN7@stbi__load:
000ef 8b 85 70 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
000f5 89 85 24 01 00
00 mov DWORD PTR tv82[rbp], eax
$LN8@stbi__load:
000fb 44 8b 8d 24 01
00 00 mov r9d, DWORD PTR tv82[rbp]
00102 48 8b 85 60 01
00 00 mov rax, QWORD PTR y$[rbp]
00109 44 8b 00 mov r8d, DWORD PTR [rax]
0010c 48 8b 85 58 01
00 00 mov rax, QWORD PTR x$[rbp]
00113 8b 10 mov edx, DWORD PTR [rax]
00115 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
00119 e8 00 00 00 00 call stbi__convert_8_to_16
0011e 48 89 45 38 mov QWORD PTR result$[rbp], rax
; 1350 : req_comp == 0 ? *comp : req_comp);
; 1351 : ri.bits_per_channel = 16;
00122 c7 45 08 10 00
00 00 mov DWORD PTR ri$[rbp], 16
$LN3@stbi__load:
; 1352 : }
; 1353 :
; 1354 : // @TODO: move stbi__convert_format16 to here
; 1355 : // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision
; 1356 :
; 1357 : if (stbi__vertically_flip_on_load) {
00129 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
0012e 8b c0 mov eax, eax
00130 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00136 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
0013f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00143 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
00147 74 25 je SHORT $LN9@stbi__load
00149 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
0014e 8b c0 mov eax, eax
00150 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00156 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
0015f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00163 8b 04 08 mov eax, DWORD PTR [rax+rcx]
00166 89 85 24 01 00
00 mov DWORD PTR tv132[rbp], eax
0016c eb 0c jmp SHORT $LN10@stbi__load
$LN9@stbi__load:
0016e 8b 05 00 00 00
00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
00174 89 85 24 01 00
00 mov DWORD PTR tv132[rbp], eax
$LN10@stbi__load:
0017a 83 bd 24 01 00
00 00 cmp DWORD PTR tv132[rbp], 0
00181 74 56 je SHORT $LN4@stbi__load
; 1358 : int channels = req_comp ? req_comp : *comp;
00183 83 bd 70 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
0018a 74 0e je SHORT $LN11@stbi__load
0018c 8b 85 70 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00192 89 85 24 01 00
00 mov DWORD PTR tv135[rbp], eax
00198 eb 0f jmp SHORT $LN12@stbi__load
$LN11@stbi__load:
0019a 48 8b 85 68 01
00 00 mov rax, QWORD PTR comp$[rbp]
001a1 8b 00 mov eax, DWORD PTR [rax]
001a3 89 85 24 01 00
00 mov DWORD PTR tv135[rbp], eax
$LN12@stbi__load:
001a9 8b 85 24 01 00
00 mov eax, DWORD PTR tv135[rbp]
001af 89 45 54 mov DWORD PTR channels$4[rbp], eax
; 1359 : stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16));
001b2 48 63 45 54 movsxd rax, DWORD PTR channels$4[rbp]
001b6 48 d1 e0 shl rax, 1
001b9 44 8b c8 mov r9d, eax
001bc 48 8b 85 60 01
00 00 mov rax, QWORD PTR y$[rbp]
001c3 44 8b 00 mov r8d, DWORD PTR [rax]
001c6 48 8b 85 58 01
00 00 mov rax, QWORD PTR x$[rbp]
001cd 8b 10 mov edx, DWORD PTR [rax]
001cf 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
001d3 e8 00 00 00 00 call stbi__vertical_flip
001d8 90 npad 1
$LN4@stbi__load:
; 1360 : }
; 1361 :
; 1362 : return (stbi__uint16 *)result;
001d9 48 8b 45 38 mov rax, QWORD PTR result$[rbp]
$LN1@stbi__load:
; 1363 : }
001dd 48 8b f8 mov rdi, rax
001e0 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
001e4 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__load_and_postprocess_16bit$rtcFrameData
001eb e8 00 00 00 00 call _RTC_CheckStackVars
001f0 48 8b c7 mov rax, rdi
001f3 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
001fa 48 33 cd xor rcx, rbp
001fd e8 00 00 00 00 call __security_check_cookie
00202 48 8d a5 38 01
00 00 lea rsp, QWORD PTR [rbp+312]
00209 5f pop rdi
0020a 5d pop rbp
0020b c3 ret 0
stbi__load_and_postprocess_16bit ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__load_and_postprocess_8bit
_TEXT SEGMENT
ri$ = 8
result$ = 56
channels$4 = 84
tv82 = 292
tv132 = 292
tv135 = 292
__$ArrayPad$ = 296
s$ = 336
x$ = 344
y$ = 352
comp$ = 360
req_comp$ = 368
stbi__load_and_postprocess_8bit PROC ; COMDAT
; 1310 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 78 01
00 00 sub rsp, 376 ; 00000178H
0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
00022 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
00027 b9 1e 00 00 00 mov ecx, 30
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 98
01 00 00 mov rcx, QWORD PTR [rsp+408]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 28 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1311 : stbi__result_info ri;
; 1312 : void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8);
00059 c7 44 24 30 08
00 00 00 mov DWORD PTR [rsp+48], 8
00061 48 8d 45 08 lea rax, QWORD PTR ri$[rbp]
00065 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
0006a 8b 85 70 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
00074 4c 8b 8d 68 01
00 00 mov r9, QWORD PTR comp$[rbp]
0007b 4c 8b 85 60 01
00 00 mov r8, QWORD PTR y$[rbp]
00082 48 8b 95 58 01
00 00 mov rdx, QWORD PTR x$[rbp]
00089 48 8b 8d 50 01
00 00 mov rcx, QWORD PTR s$[rbp]
00090 e8 00 00 00 00 call stbi__load_main
00095 48 89 45 38 mov QWORD PTR result$[rbp], rax
; 1313 :
; 1314 : if (result == NULL)
00099 48 83 7d 38 00 cmp QWORD PTR result$[rbp], 0
0009e 75 07 jne SHORT $LN2@stbi__load
; 1315 : return NULL;
000a0 33 c0 xor eax, eax
000a2 e9 30 01 00 00 jmp $LN1@stbi__load
$LN2@stbi__load:
; 1316 :
; 1317 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.
; 1318 : STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);
000a7 83 7d 08 08 cmp DWORD PTR ri$[rbp], 8
000ab 74 22 je SHORT $LN6@stbi__load
000ad 83 7d 08 10 cmp DWORD PTR ri$[rbp], 16
000b1 74 1c je SHORT $LN6@stbi__load
000b3 41 b8 26 05 00
00 mov r8d, 1318 ; 00000526H
000b9 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
000c0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@
000c7 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
000cd 33 c0 xor eax, eax
$LN6@stbi__load:
; 1319 :
; 1320 : if (ri.bits_per_channel != 8) {
000cf 83 7d 08 08 cmp DWORD PTR ri$[rbp], 8
000d3 74 54 je SHORT $LN3@stbi__load
; 1321 : result = stbi__convert_16_to_8((stbi__uint16 *)result, *x, *y,
000d5 83 bd 70 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
000dc 75 11 jne SHORT $LN7@stbi__load
000de 48 8b 85 68 01
00 00 mov rax, QWORD PTR comp$[rbp]
000e5 8b 00 mov eax, DWORD PTR [rax]
000e7 89 85 24 01 00
00 mov DWORD PTR tv82[rbp], eax
000ed eb 0c jmp SHORT $LN8@stbi__load
$LN7@stbi__load:
000ef 8b 85 70 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
000f5 89 85 24 01 00
00 mov DWORD PTR tv82[rbp], eax
$LN8@stbi__load:
000fb 44 8b 8d 24 01
00 00 mov r9d, DWORD PTR tv82[rbp]
00102 48 8b 85 60 01
00 00 mov rax, QWORD PTR y$[rbp]
00109 44 8b 00 mov r8d, DWORD PTR [rax]
0010c 48 8b 85 58 01
00 00 mov rax, QWORD PTR x$[rbp]
00113 8b 10 mov edx, DWORD PTR [rax]
00115 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
00119 e8 00 00 00 00 call stbi__convert_16_to_8
0011e 48 89 45 38 mov QWORD PTR result$[rbp], rax
; 1322 : req_comp == 0 ? *comp : req_comp);
; 1323 : ri.bits_per_channel = 8;
00122 c7 45 08 08 00
00 00 mov DWORD PTR ri$[rbp], 8
$LN3@stbi__load:
; 1324 : }
; 1325 :
; 1326 : // @TODO: move stbi__convert_format to here
; 1327 :
; 1328 : if (stbi__vertically_flip_on_load) {
00129 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
0012e 8b c0 mov eax, eax
00130 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00136 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
0013f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00143 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
00147 74 25 je SHORT $LN9@stbi__load
00149 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
0014e 8b c0 mov eax, eax
00150 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00156 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
0015f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00163 8b 04 08 mov eax, DWORD PTR [rax+rcx]
00166 89 85 24 01 00
00 mov DWORD PTR tv132[rbp], eax
0016c eb 0c jmp SHORT $LN10@stbi__load
$LN9@stbi__load:
0016e 8b 05 00 00 00
00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
00174 89 85 24 01 00
00 mov DWORD PTR tv132[rbp], eax
$LN10@stbi__load:
0017a 83 bd 24 01 00
00 00 cmp DWORD PTR tv132[rbp], 0
00181 74 50 je SHORT $LN4@stbi__load
; 1329 : int channels = req_comp ? req_comp : *comp;
00183 83 bd 70 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
0018a 74 0e je SHORT $LN11@stbi__load
0018c 8b 85 70 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00192 89 85 24 01 00
00 mov DWORD PTR tv135[rbp], eax
00198 eb 0f jmp SHORT $LN12@stbi__load
$LN11@stbi__load:
0019a 48 8b 85 68 01
00 00 mov rax, QWORD PTR comp$[rbp]
001a1 8b 00 mov eax, DWORD PTR [rax]
001a3 89 85 24 01 00
00 mov DWORD PTR tv135[rbp], eax
$LN12@stbi__load:
001a9 8b 85 24 01 00
00 mov eax, DWORD PTR tv135[rbp]
001af 89 45 54 mov DWORD PTR channels$4[rbp], eax
; 1330 : stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc));
001b2 44 8b 4d 54 mov r9d, DWORD PTR channels$4[rbp]
001b6 48 8b 85 60 01
00 00 mov rax, QWORD PTR y$[rbp]
001bd 44 8b 00 mov r8d, DWORD PTR [rax]
001c0 48 8b 85 58 01
00 00 mov rax, QWORD PTR x$[rbp]
001c7 8b 10 mov edx, DWORD PTR [rax]
001c9 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
001cd e8 00 00 00 00 call stbi__vertical_flip
001d2 90 npad 1
$LN4@stbi__load:
; 1331 : }
; 1332 :
; 1333 : return (unsigned char *)result;
001d3 48 8b 45 38 mov rax, QWORD PTR result$[rbp]
$LN1@stbi__load:
; 1334 : }
001d7 48 8b f8 mov rdi, rax
001da 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
001de 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__load_and_postprocess_8bit$rtcFrameData
001e5 e8 00 00 00 00 call _RTC_CheckStackVars
001ea 48 8b c7 mov rax, rdi
001ed 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
001f4 48 33 cd xor rcx, rbp
001f7 e8 00 00 00 00 call __security_check_cookie
001fc 48 8d a5 38 01
00 00 lea rsp, QWORD PTR [rbp+312]
00203 5f pop rdi
00204 5d pop rbp
00205 c3 ret 0
stbi__load_and_postprocess_8bit ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__vertical_flip_slices
_TEXT SEGMENT
slice$ = 4
slice_size$ = 36
bytes$ = 72
image$ = 320
w$ = 328
h$ = 336
z$ = 344
bytes_per_pixel$ = 352
stbi__vertical_flip_slices PROC ; COMDAT
; 1296 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002d 90 npad 1
; 1297 : int slice;
; 1298 : int slice_size = w * h * bytes_per_pixel;
0002e 8b 85 48 01 00
00 mov eax, DWORD PTR w$[rbp]
00034 0f af 85 50 01
00 00 imul eax, DWORD PTR h$[rbp]
0003b 0f af 85 60 01
00 00 imul eax, DWORD PTR bytes_per_pixel$[rbp]
00042 89 45 24 mov DWORD PTR slice_size$[rbp], eax
; 1299 :
; 1300 : stbi_uc *bytes = (stbi_uc *)image;
00045 48 8b 85 40 01
00 00 mov rax, QWORD PTR image$[rbp]
0004c 48 89 45 48 mov QWORD PTR bytes$[rbp], rax
; 1301 : for (slice = 0; slice < z; ++slice) {
00050 c7 45 04 00 00
00 00 mov DWORD PTR slice$[rbp], 0
00057 eb 08 jmp SHORT $LN4@stbi__vert
$LN2@stbi__vert:
00059 8b 45 04 mov eax, DWORD PTR slice$[rbp]
0005c ff c0 inc eax
0005e 89 45 04 mov DWORD PTR slice$[rbp], eax
$LN4@stbi__vert:
00061 8b 85 58 01 00
00 mov eax, DWORD PTR z$[rbp]
00067 39 45 04 cmp DWORD PTR slice$[rbp], eax
0006a 7d 32 jge SHORT $LN3@stbi__vert
; 1302 : stbi__vertical_flip(bytes, w, h, bytes_per_pixel);
0006c 44 8b 8d 60 01
00 00 mov r9d, DWORD PTR bytes_per_pixel$[rbp]
00073 44 8b 85 50 01
00 00 mov r8d, DWORD PTR h$[rbp]
0007a 8b 95 48 01 00
00 mov edx, DWORD PTR w$[rbp]
00080 48 8b 4d 48 mov rcx, QWORD PTR bytes$[rbp]
00084 e8 00 00 00 00 call stbi__vertical_flip
00089 90 npad 1
; 1303 : bytes += slice_size;
0008a 48 63 45 24 movsxd rax, DWORD PTR slice_size$[rbp]
0008e 48 8b 4d 48 mov rcx, QWORD PTR bytes$[rbp]
00092 48 03 c8 add rcx, rax
00095 48 8b c1 mov rax, rcx
00098 48 89 45 48 mov QWORD PTR bytes$[rbp], rax
; 1304 : }
0009c eb bb jmp SHORT $LN2@stbi__vert
$LN3@stbi__vert:
; 1305 : }
0009e 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
000a5 5f pop rdi
000a6 5d pop rbp
000a7 c3 ret 0
stbi__vertical_flip_slices ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__vertical_flip
_TEXT SEGMENT
row$ = 4
bytes_per_row$ = 40
temp$ = 80
bytes$ = 2152
row0$4 = 2184
row1$5 = 2216
bytes_left$6 = 2248
bytes_copy$7 = 2280
tv80 = 3256
__$ArrayPad$ = 3264
image$ = 3312
w$ = 3320
h$ = 3328
bytes_per_pixel$ = 3336
stbi__vertical_flip PROC ; COMDAT
; 1271 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec f8 0c
00 00 sub rsp, 3320 ; 00000cf8H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00026 b9 46 02 00 00 mov ecx, 582 ; 00000246H
0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00030 f3 ab rep stosd
00032 48 8b 8c 24 18
0d 00 00 mov rcx, QWORD PTR [rsp+3352]
0003a 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00041 48 33 c5 xor rax, rbp
00044 48 89 85 c0 0c
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00057 90 npad 1
; 1272 : int row;
; 1273 : size_t bytes_per_row = (size_t)w * bytes_per_pixel;
00058 48 63 85 f8 0c
00 00 movsxd rax, DWORD PTR w$[rbp]
0005f 48 63 8d 08 0d
00 00 movsxd rcx, DWORD PTR bytes_per_pixel$[rbp]
00066 48 0f af c1 imul rax, rcx
0006a 48 89 45 28 mov QWORD PTR bytes_per_row$[rbp], rax
; 1274 : stbi_uc temp[2048];
; 1275 : stbi_uc *bytes = (stbi_uc *)image;
0006e 48 8b 85 f0 0c
00 00 mov rax, QWORD PTR image$[rbp]
00075 48 89 85 68 08
00 00 mov QWORD PTR bytes$[rbp], rax
; 1276 :
; 1277 : for (row = 0; row < (h >> 1); row++) {
0007c c7 45 04 00 00
00 00 mov DWORD PTR row$[rbp], 0
00083 eb 08 jmp SHORT $LN4@stbi__vert
$LN2@stbi__vert:
00085 8b 45 04 mov eax, DWORD PTR row$[rbp]
00088 ff c0 inc eax
0008a 89 45 04 mov DWORD PTR row$[rbp], eax
$LN4@stbi__vert:
0008d 8b 85 00 0d 00
00 mov eax, DWORD PTR h$[rbp]
00093 d1 f8 sar eax, 1
00095 39 45 04 cmp DWORD PTR row$[rbp], eax
00098 0f 8d 3c 01 00
00 jge $LN3@stbi__vert
; 1278 : stbi_uc *row0 = bytes + row * bytes_per_row;
0009e 48 63 45 04 movsxd rax, DWORD PTR row$[rbp]
000a2 48 0f af 45 28 imul rax, QWORD PTR bytes_per_row$[rbp]
000a7 48 8b 8d 68 08
00 00 mov rcx, QWORD PTR bytes$[rbp]
000ae 48 03 c8 add rcx, rax
000b1 48 8b c1 mov rax, rcx
000b4 48 89 85 88 08
00 00 mov QWORD PTR row0$4[rbp], rax
; 1279 : stbi_uc *row1 = bytes + (h - row - 1) * bytes_per_row;
000bb 8b 45 04 mov eax, DWORD PTR row$[rbp]
000be 8b 8d 00 0d 00
00 mov ecx, DWORD PTR h$[rbp]
000c4 2b c8 sub ecx, eax
000c6 8b c1 mov eax, ecx
000c8 ff c8 dec eax
000ca 48 98 cdqe
000cc 48 0f af 45 28 imul rax, QWORD PTR bytes_per_row$[rbp]
000d1 48 8b 8d 68 08
00 00 mov rcx, QWORD PTR bytes$[rbp]
000d8 48 03 c8 add rcx, rax
000db 48 8b c1 mov rax, rcx
000de 48 89 85 a8 08
00 00 mov QWORD PTR row1$5[rbp], rax
; 1280 : // swap row0 with row1
; 1281 : size_t bytes_left = bytes_per_row;
000e5 48 8b 45 28 mov rax, QWORD PTR bytes_per_row$[rbp]
000e9 48 89 85 c8 08
00 00 mov QWORD PTR bytes_left$6[rbp], rax
$LN5@stbi__vert:
; 1282 : while (bytes_left) {
000f0 48 83 bd c8 08
00 00 00 cmp QWORD PTR bytes_left$6[rbp], 0
000f8 0f 84 d7 00 00
00 je $LN6@stbi__vert
; 1283 : size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp);
000fe 48 81 bd c8 08
00 00 00 08 00
00 cmp QWORD PTR bytes_left$6[rbp], 2048 ; 00000800H
00109 73 10 jae SHORT $LN8@stbi__vert
0010b 48 8b 85 c8 08
00 00 mov rax, QWORD PTR bytes_left$6[rbp]
00112 48 89 85 b8 0c
00 00 mov QWORD PTR tv80[rbp], rax
00119 eb 0b jmp SHORT $LN9@stbi__vert
$LN8@stbi__vert:
0011b 48 c7 85 b8 0c
00 00 00 08 00
00 mov QWORD PTR tv80[rbp], 2048 ; 00000800H
$LN9@stbi__vert:
00126 48 8b 85 b8 0c
00 00 mov rax, QWORD PTR tv80[rbp]
0012d 48 89 85 e8 08
00 00 mov QWORD PTR bytes_copy$7[rbp], rax
; 1284 : memcpy(temp, row0, bytes_copy);
00134 4c 8b 85 e8 08
00 00 mov r8, QWORD PTR bytes_copy$7[rbp]
0013b 48 8b 95 88 08
00 00 mov rdx, QWORD PTR row0$4[rbp]
00142 48 8d 4d 50 lea rcx, QWORD PTR temp$[rbp]
00146 e8 00 00 00 00 call memcpy
0014b 90 npad 1
; 1285 : memcpy(row0, row1, bytes_copy);
0014c 4c 8b 85 e8 08
00 00 mov r8, QWORD PTR bytes_copy$7[rbp]
00153 48 8b 95 a8 08
00 00 mov rdx, QWORD PTR row1$5[rbp]
0015a 48 8b 8d 88 08
00 00 mov rcx, QWORD PTR row0$4[rbp]
00161 e8 00 00 00 00 call memcpy
00166 90 npad 1
; 1286 : memcpy(row1, temp, bytes_copy);
00167 4c 8b 85 e8 08
00 00 mov r8, QWORD PTR bytes_copy$7[rbp]
0016e 48 8d 55 50 lea rdx, QWORD PTR temp$[rbp]
00172 48 8b 8d a8 08
00 00 mov rcx, QWORD PTR row1$5[rbp]
00179 e8 00 00 00 00 call memcpy
0017e 90 npad 1
; 1287 : row0 += bytes_copy;
0017f 48 8b 85 e8 08
00 00 mov rax, QWORD PTR bytes_copy$7[rbp]
00186 48 8b 8d 88 08
00 00 mov rcx, QWORD PTR row0$4[rbp]
0018d 48 03 c8 add rcx, rax
00190 48 8b c1 mov rax, rcx
00193 48 89 85 88 08
00 00 mov QWORD PTR row0$4[rbp], rax
; 1288 : row1 += bytes_copy;
0019a 48 8b 85 e8 08
00 00 mov rax, QWORD PTR bytes_copy$7[rbp]
001a1 48 8b 8d a8 08
00 00 mov rcx, QWORD PTR row1$5[rbp]
001a8 48 03 c8 add rcx, rax
001ab 48 8b c1 mov rax, rcx
001ae 48 89 85 a8 08
00 00 mov QWORD PTR row1$5[rbp], rax
; 1289 : bytes_left -= bytes_copy;
001b5 48 8b 85 e8 08
00 00 mov rax, QWORD PTR bytes_copy$7[rbp]
001bc 48 8b 8d c8 08
00 00 mov rcx, QWORD PTR bytes_left$6[rbp]
001c3 48 2b c8 sub rcx, rax
001c6 48 8b c1 mov rax, rcx
001c9 48 89 85 c8 08
00 00 mov QWORD PTR bytes_left$6[rbp], rax
; 1290 : }
001d0 e9 1b ff ff ff jmp $LN5@stbi__vert
$LN6@stbi__vert:
; 1291 : }
001d5 e9 ab fe ff ff jmp $LN2@stbi__vert
$LN3@stbi__vert:
; 1292 : }
001da 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
001de 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__vertical_flip$rtcFrameData
001e5 e8 00 00 00 00 call _RTC_CheckStackVars
001ea 48 8b 8d c0 0c
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
001f1 48 33 cd xor rcx, rbp
001f4 e8 00 00 00 00 call __security_check_cookie
001f9 48 8d a5 d8 0c
00 00 lea rsp, QWORD PTR [rbp+3288]
00200 5f pop rdi
00201 5d pop rbp
00202 c3 ret 0
stbi__vertical_flip ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__convert_8_to_16
_TEXT SEGMENT
i$ = 4
img_len$ = 36
enlarged$ = 72
tv74 = 280
orig$ = 320
w$ = 328
h$ = 336
channels$ = 344
stbi__convert_8_to_16 PROC ; COMDAT
; 1252 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002d 90 npad 1
; 1253 : int i;
; 1254 : int img_len = w * h * channels;
0002e 8b 85 48 01 00
00 mov eax, DWORD PTR w$[rbp]
00034 0f af 85 50 01
00 00 imul eax, DWORD PTR h$[rbp]
0003b 0f af 85 58 01
00 00 imul eax, DWORD PTR channels$[rbp]
00042 89 45 24 mov DWORD PTR img_len$[rbp], eax
; 1255 : stbi__uint16 *enlarged;
; 1256 :
; 1257 : enlarged = (stbi__uint16 *)stbi__malloc(img_len * 2);
00045 8b 45 24 mov eax, DWORD PTR img_len$[rbp]
00048 d1 e0 shl eax, 1
0004a 48 98 cdqe
0004c 48 8b c8 mov rcx, rax
0004f e8 00 00 00 00 call stbi__malloc
00054 48 89 45 48 mov QWORD PTR enlarged$[rbp], rax
; 1258 : if (enlarged == NULL)
00058 48 83 7d 48 00 cmp QWORD PTR enlarged$[rbp], 0
0005d 75 31 jne SHORT $LN5@stbi__conv
; 1259 : return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory");
0005f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00066 e8 00 00 00 00 call stbi__err
0006b 85 c0 test eax, eax
0006d 74 0d je SHORT $LN7@stbi__conv
0006f 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv74[rbp], 0
0007a eb 0b jmp SHORT $LN8@stbi__conv
$LN7@stbi__conv:
0007c 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv74[rbp], 0
$LN8@stbi__conv:
00087 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv74[rbp]
0008e eb 5c jmp SHORT $LN1@stbi__conv
$LN5@stbi__conv:
; 1260 :
; 1261 : for (i = 0; i < img_len; ++i)
00090 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00097 eb 08 jmp SHORT $LN4@stbi__conv
$LN2@stbi__conv:
00099 8b 45 04 mov eax, DWORD PTR i$[rbp]
0009c ff c0 inc eax
0009e 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__conv:
000a1 8b 45 24 mov eax, DWORD PTR img_len$[rbp]
000a4 39 45 04 cmp DWORD PTR i$[rbp], eax
000a7 7d 31 jge SHORT $LN3@stbi__conv
; 1262 : enlarged[i] =
000a9 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000ad 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR orig$[rbp]
000b4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000b8 c1 e0 08 shl eax, 8
000bb 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
000bf 48 8b 95 40 01
00 00 mov rdx, QWORD PTR orig$[rbp]
000c6 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
000ca 03 c1 add eax, ecx
000cc 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
000d0 48 8b 55 48 mov rdx, QWORD PTR enlarged$[rbp]
000d4 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
000d8 eb bf jmp SHORT $LN2@stbi__conv
$LN3@stbi__conv:
; 1263 : (stbi__uint16)((orig[i] << 8) +
; 1264 : orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff
; 1265 :
; 1266 : STBI_FREE(orig);
000da 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR orig$[rbp]
000e1 ff 15 00 00 00
00 call QWORD PTR __imp_free
000e7 90 npad 1
; 1267 : return enlarged;
000e8 48 8b 45 48 mov rax, QWORD PTR enlarged$[rbp]
$LN1@stbi__conv:
; 1268 : }
000ec 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
000f3 5f pop rdi
000f4 5d pop rbp
000f5 c3 ret 0
stbi__convert_8_to_16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__convert_16_to_8
_TEXT SEGMENT
i$ = 4
img_len$ = 36
reduced$ = 72
tv73 = 280
orig$ = 320
w$ = 328
h$ = 336
channels$ = 344
stbi__convert_16_to_8 PROC ; COMDAT
; 1233 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002d 90 npad 1
; 1234 : int i;
; 1235 : int img_len = w * h * channels;
0002e 8b 85 48 01 00
00 mov eax, DWORD PTR w$[rbp]
00034 0f af 85 50 01
00 00 imul eax, DWORD PTR h$[rbp]
0003b 0f af 85 58 01
00 00 imul eax, DWORD PTR channels$[rbp]
00042 89 45 24 mov DWORD PTR img_len$[rbp], eax
; 1236 : stbi_uc *reduced;
; 1237 :
; 1238 : reduced = (stbi_uc *)stbi__malloc(img_len);
00045 48 63 45 24 movsxd rax, DWORD PTR img_len$[rbp]
00049 48 8b c8 mov rcx, rax
0004c e8 00 00 00 00 call stbi__malloc
00051 48 89 45 48 mov QWORD PTR reduced$[rbp], rax
; 1239 : if (reduced == NULL)
00055 48 83 7d 48 00 cmp QWORD PTR reduced$[rbp], 0
0005a 75 31 jne SHORT $LN5@stbi__conv
; 1240 : return stbi__errpuc("outofmem", "Out of memory");
0005c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00063 e8 00 00 00 00 call stbi__err
00068 85 c0 test eax, eax
0006a 74 0d je SHORT $LN7@stbi__conv
0006c 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv73[rbp], 0
00077 eb 0b jmp SHORT $LN8@stbi__conv
$LN7@stbi__conv:
00079 48 c7 85 18 01
00 00 00 00 00
00 mov QWORD PTR tv73[rbp], 0
$LN8@stbi__conv:
00084 48 8b 85 18 01
00 00 mov rax, QWORD PTR tv73[rbp]
0008b eb 4f jmp SHORT $LN1@stbi__conv
$LN5@stbi__conv:
; 1241 :
; 1242 : for (i = 0; i < img_len; ++i)
0008d c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
00094 eb 08 jmp SHORT $LN4@stbi__conv
$LN2@stbi__conv:
00096 8b 45 04 mov eax, DWORD PTR i$[rbp]
00099 ff c0 inc eax
0009b 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__conv:
0009e 8b 45 24 mov eax, DWORD PTR img_len$[rbp]
000a1 39 45 04 cmp DWORD PTR i$[rbp], eax
000a4 7d 24 jge SHORT $LN3@stbi__conv
; 1243 : reduced[i] =
000a6 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
000aa 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR orig$[rbp]
000b1 0f b7 04 41 movzx eax, WORD PTR [rcx+rax*2]
000b5 c1 f8 08 sar eax, 8
000b8 25 ff 00 00 00 and eax, 255 ; 000000ffH
000bd 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
000c1 48 8b 55 48 mov rdx, QWORD PTR reduced$[rbp]
000c5 88 04 0a mov BYTE PTR [rdx+rcx], al
000c8 eb cc jmp SHORT $LN2@stbi__conv
$LN3@stbi__conv:
; 1244 : (stbi_uc)((orig[i] >> 8) &
; 1245 : 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling
; 1246 :
; 1247 : STBI_FREE(orig);
000ca 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR orig$[rbp]
000d1 ff 15 00 00 00
00 call QWORD PTR __imp_free
000d7 90 npad 1
; 1248 : return reduced;
000d8 48 8b 45 48 mov rax, QWORD PTR reduced$[rbp]
$LN1@stbi__conv:
; 1249 : }
000dc 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
000e3 5f pop rdi
000e4 5d pop rbp
000e5 c3 ret 0
stbi__convert_16_to_8 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__load_main
_TEXT SEGMENT
hdr$1 = 8
tv185 = 212
tv203 = 216
s$ = 256
x$ = 264
y$ = 272
comp$ = 280
req_comp$ = 288
ri$ = 296
bpc$ = 304
stbi__load_main PROC ; COMDAT
; 1172 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 1173 : memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields
0002f 41 b8 0c 00 00
00 mov r8d, 12
00035 33 d2 xor edx, edx
00037 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR ri$[rbp]
0003e e8 00 00 00 00 call memset
00043 90 npad 1
; 1174 : ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed
00044 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
0004b c7 00 08 00 00
00 mov DWORD PTR [rax], 8
; 1175 : ri->channel_order =
00051 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
00058 c7 40 08 00 00
00 00 mov DWORD PTR [rax+8], 0
; 1176 : STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order
; 1177 : ri->num_channels = 0;
0005f 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
00066 c7 40 04 00 00
00 00 mov DWORD PTR [rax+4], 0
; 1178 :
; 1179 : // test the formats with a very explicit header first (at least a FOURCC
; 1180 : // or distinctive magic number first)
; 1181 : #ifndef STBI_NO_PNG
; 1182 : if (stbi__png_test(s))
0006d 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00074 e8 00 00 00 00 call stbi__png_test
00079 85 c0 test eax, eax
0007b 74 3c je SHORT $LN2@stbi__load
; 1183 : return stbi__png_load(s, x, y, comp, req_comp, ri);
0007d 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
00084 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
00089 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
0008f 89 44 24 20 mov DWORD PTR [rsp+32], eax
00093 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
0009a 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
000a1 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
000a8 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000af e8 00 00 00 00 call stbi__png_load
000b4 e9 e4 02 00 00 jmp $LN1@stbi__load
$LN2@stbi__load:
; 1184 : #endif
; 1185 : #ifndef STBI_NO_BMP
; 1186 : if (stbi__bmp_test(s))
000b9 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c0 e8 00 00 00 00 call stbi__bmp_test
000c5 85 c0 test eax, eax
000c7 74 3c je SHORT $LN3@stbi__load
; 1187 : return stbi__bmp_load(s, x, y, comp, req_comp, ri);
000c9 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
000d0 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
000d5 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
000db 89 44 24 20 mov DWORD PTR [rsp+32], eax
000df 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
000e6 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
000ed 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
000f4 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000fb e8 00 00 00 00 call stbi__bmp_load
00100 e9 98 02 00 00 jmp $LN1@stbi__load
$LN3@stbi__load:
; 1188 : #endif
; 1189 : #ifndef STBI_NO_GIF
; 1190 : if (stbi__gif_test(s))
00105 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0010c e8 00 00 00 00 call stbi__gif_test
00111 85 c0 test eax, eax
00113 74 3c je SHORT $LN4@stbi__load
; 1191 : return stbi__gif_load(s, x, y, comp, req_comp, ri);
00115 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
0011c 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
00121 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00127 89 44 24 20 mov DWORD PTR [rsp+32], eax
0012b 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
00132 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
00139 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
00140 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00147 e8 00 00 00 00 call stbi__gif_load
0014c e9 4c 02 00 00 jmp $LN1@stbi__load
$LN4@stbi__load:
; 1192 : #endif
; 1193 : #ifndef STBI_NO_PSD
; 1194 : if (stbi__psd_test(s))
00151 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00158 e8 00 00 00 00 call stbi__psd_test
0015d 85 c0 test eax, eax
0015f 74 46 je SHORT $LN5@stbi__load
; 1195 : return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc);
00161 8b 85 30 01 00
00 mov eax, DWORD PTR bpc$[rbp]
00167 89 44 24 30 mov DWORD PTR [rsp+48], eax
0016b 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
00172 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
00177 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
0017d 89 44 24 20 mov DWORD PTR [rsp+32], eax
00181 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
00188 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
0018f 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
00196 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0019d e8 00 00 00 00 call stbi__psd_load
001a2 e9 f6 01 00 00 jmp $LN1@stbi__load
$LN5@stbi__load:
; 1196 : #else
; 1197 : STBI_NOTUSED(bpc);
; 1198 : #endif
; 1199 : #ifndef STBI_NO_PIC
; 1200 : if (stbi__pic_test(s))
001a7 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
001ae e8 00 00 00 00 call stbi__pic_test
001b3 85 c0 test eax, eax
001b5 74 3c je SHORT $LN6@stbi__load
; 1201 : return stbi__pic_load(s, x, y, comp, req_comp, ri);
001b7 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
001be 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
001c3 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
001c9 89 44 24 20 mov DWORD PTR [rsp+32], eax
001cd 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
001d4 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
001db 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
001e2 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
001e9 e8 00 00 00 00 call stbi__pic_load
001ee e9 aa 01 00 00 jmp $LN1@stbi__load
$LN6@stbi__load:
; 1202 : #endif
; 1203 :
; 1204 : // then the formats that can end up attempting to load with just 1 or 2
; 1205 : // bytes matching expectations; these are prone to false positives, so
; 1206 : // try them later
; 1207 : #ifndef STBI_NO_JPEG
; 1208 : if (stbi__jpeg_test(s))
001f3 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
001fa e8 00 00 00 00 call stbi__jpeg_test
001ff 85 c0 test eax, eax
00201 74 3c je SHORT $LN7@stbi__load
; 1209 : return stbi__jpeg_load(s, x, y, comp, req_comp, ri);
00203 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
0020a 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
0020f 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00215 89 44 24 20 mov DWORD PTR [rsp+32], eax
00219 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
00220 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
00227 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
0022e 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00235 e8 00 00 00 00 call stbi__jpeg_load
0023a e9 5e 01 00 00 jmp $LN1@stbi__load
$LN7@stbi__load:
; 1210 : #endif
; 1211 : #ifndef STBI_NO_PNM
; 1212 : if (stbi__pnm_test(s))
0023f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00246 e8 00 00 00 00 call stbi__pnm_test
0024b 85 c0 test eax, eax
0024d 74 3c je SHORT $LN8@stbi__load
; 1213 : return stbi__pnm_load(s, x, y, comp, req_comp, ri);
0024f 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
00256 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
0025b 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00261 89 44 24 20 mov DWORD PTR [rsp+32], eax
00265 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
0026c 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
00273 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
0027a 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00281 e8 00 00 00 00 call stbi__pnm_load
00286 e9 12 01 00 00 jmp $LN1@stbi__load
$LN8@stbi__load:
; 1214 : #endif
; 1215 :
; 1216 : #ifndef STBI_NO_HDR
; 1217 : if (stbi__hdr_test(s)) {
0028b 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00292 e8 00 00 00 00 call stbi__hdr_test
00297 85 c0 test eax, eax
00299 0f 84 86 00 00
00 je $LN9@stbi__load
; 1218 : float *hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri);
0029f 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
002a6 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
002ab 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
002b1 89 44 24 20 mov DWORD PTR [rsp+32], eax
002b5 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
002bc 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
002c3 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
002ca 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
002d1 e8 00 00 00 00 call stbi__hdr_load
002d6 48 89 45 08 mov QWORD PTR hdr$1[rbp], rax
; 1219 : return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);
002da 83 bd 20 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
002e1 74 0e je SHORT $LN12@stbi__load
002e3 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
002e9 89 85 d4 00 00
00 mov DWORD PTR tv185[rbp], eax
002ef eb 0f jmp SHORT $LN13@stbi__load
$LN12@stbi__load:
002f1 48 8b 85 18 01
00 00 mov rax, QWORD PTR comp$[rbp]
002f8 8b 00 mov eax, DWORD PTR [rax]
002fa 89 85 d4 00 00
00 mov DWORD PTR tv185[rbp], eax
$LN13@stbi__load:
00300 44 8b 8d d4 00
00 00 mov r9d, DWORD PTR tv185[rbp]
00307 48 8b 85 10 01
00 00 mov rax, QWORD PTR y$[rbp]
0030e 44 8b 00 mov r8d, DWORD PTR [rax]
00311 48 8b 85 08 01
00 00 mov rax, QWORD PTR x$[rbp]
00318 8b 10 mov edx, DWORD PTR [rax]
0031a 48 8b 4d 08 mov rcx, QWORD PTR hdr$1[rbp]
0031e e8 00 00 00 00 call stbi__hdr_to_ldr
00323 eb 78 jmp SHORT $LN1@stbi__load
$LN9@stbi__load:
; 1220 : }
; 1221 : #endif
; 1222 :
; 1223 : #ifndef STBI_NO_TGA
; 1224 : // test tga last because it's a crappy test!
; 1225 : if (stbi__tga_test(s))
00325 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0032c e8 00 00 00 00 call stbi__tga_test
00331 85 c0 test eax, eax
00333 74 39 je SHORT $LN10@stbi__load
; 1226 : return stbi__tga_load(s, x, y, comp, req_comp, ri);
00335 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
0033c 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
00341 8b 85 20 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00347 89 44 24 20 mov DWORD PTR [rsp+32], eax
0034b 4c 8b 8d 18 01
00 00 mov r9, QWORD PTR comp$[rbp]
00352 4c 8b 85 10 01
00 00 mov r8, QWORD PTR y$[rbp]
00359 48 8b 95 08 01
00 00 mov rdx, QWORD PTR x$[rbp]
00360 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00367 e8 00 00 00 00 call stbi__tga_load
0036c eb 2f jmp SHORT $LN1@stbi__load
$LN10@stbi__load:
; 1227 : #endif
; 1228 :
; 1229 : return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt");
0036e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BD@CBEDEJPH@unknown?5image?5type@
00375 e8 00 00 00 00 call stbi__err
0037a 85 c0 test eax, eax
0037c 74 0d je SHORT $LN14@stbi__load
0037e 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv203[rbp], 0
00389 eb 0b jmp SHORT $LN15@stbi__load
$LN14@stbi__load:
0038b 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv203[rbp], 0
$LN15@stbi__load:
00396 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv203[rbp]
$LN1@stbi__load:
; 1230 : }
0039d 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
003a4 5f pop rdi
003a5 5d pop rbp
003a6 c3 ret 0
stbi__load_main ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__hdr_to_ldr
_TEXT SEGMENT
i$ = 4
k$ = 36
n$ = 68
output$ = 104
z$1 = 132
z$2 = 164
tv75 = 376
tv93 = 376
data$ = 416
x$ = 424
y$ = 432
comp$ = 440
stbi__hdr_to_ldr PROC ; COMDAT
; 2110 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002d 90 npad 1
; 2111 : int i, k, n;
; 2112 : stbi_uc *output;
; 2113 : if (!data)
0002e 48 83 bd a0 01
00 00 00 cmp QWORD PTR data$[rbp], 0
00036 75 07 jne SHORT $LN8@stbi__hdr_
; 2114 : return NULL;
00038 33 c0 xor eax, eax
0003a e9 3e 02 00 00 jmp $LN1@stbi__hdr_
$LN8@stbi__hdr_:
; 2115 : output = (stbi_uc *)stbi__malloc_mad3(x, y, comp, 0);
0003f 45 33 c9 xor r9d, r9d
00042 44 8b 85 b8 01
00 00 mov r8d, DWORD PTR comp$[rbp]
00049 8b 95 b0 01 00
00 mov edx, DWORD PTR y$[rbp]
0004f 8b 8d a8 01 00
00 mov ecx, DWORD PTR x$[rbp]
00055 e8 00 00 00 00 call stbi__malloc_mad3
0005a 48 89 45 68 mov QWORD PTR output$[rbp], rax
; 2116 : if (output == NULL) {
0005e 48 83 7d 68 00 cmp QWORD PTR output$[rbp], 0
00063 75 42 jne SHORT $LN9@stbi__hdr_
; 2117 : STBI_FREE(data);
00065 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR data$[rbp]
0006c ff 15 00 00 00
00 call QWORD PTR __imp_free
00072 90 npad 1
; 2118 : return stbi__errpuc("outofmem", "Out of memory");
00073 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0007a e8 00 00 00 00 call stbi__err
0007f 85 c0 test eax, eax
00081 74 0d je SHORT $LN18@stbi__hdr_
00083 48 c7 85 78 01
00 00 00 00 00
00 mov QWORD PTR tv75[rbp], 0
0008e eb 0b jmp SHORT $LN19@stbi__hdr_
$LN18@stbi__hdr_:
00090 48 c7 85 78 01
00 00 00 00 00
00 mov QWORD PTR tv75[rbp], 0
$LN19@stbi__hdr_:
0009b 48 8b 85 78 01
00 00 mov rax, QWORD PTR tv75[rbp]
000a2 e9 d6 01 00 00 jmp $LN1@stbi__hdr_
$LN9@stbi__hdr_:
; 2119 : }
; 2120 : // compute number of non-alpha components
; 2121 : if (comp & 1)
000a7 8b 85 b8 01 00
00 mov eax, DWORD PTR comp$[rbp]
000ad 83 e0 01 and eax, 1
000b0 85 c0 test eax, eax
000b2 74 0b je SHORT $LN10@stbi__hdr_
; 2122 : n = comp;
000b4 8b 85 b8 01 00
00 mov eax, DWORD PTR comp$[rbp]
000ba 89 45 44 mov DWORD PTR n$[rbp], eax
000bd eb 0b jmp SHORT $LN11@stbi__hdr_
$LN10@stbi__hdr_:
; 2123 : else
; 2124 : n = comp - 1;
000bf 8b 85 b8 01 00
00 mov eax, DWORD PTR comp$[rbp]
000c5 ff c8 dec eax
000c7 89 45 44 mov DWORD PTR n$[rbp], eax
$LN11@stbi__hdr_:
; 2125 : for (i = 0; i < x * y; ++i) {
000ca c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
000d1 eb 08 jmp SHORT $LN4@stbi__hdr_
$LN2@stbi__hdr_:
000d3 8b 45 04 mov eax, DWORD PTR i$[rbp]
000d6 ff c0 inc eax
000d8 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__hdr_:
000db 8b 85 a8 01 00
00 mov eax, DWORD PTR x$[rbp]
000e1 0f af 85 b0 01
00 00 imul eax, DWORD PTR y$[rbp]
000e8 39 45 04 cmp DWORD PTR i$[rbp], eax
000eb 0f 8d 7a 01 00
00 jge $LN3@stbi__hdr_
; 2126 : for (k = 0; k < n; ++k) {
000f1 c7 45 24 00 00
00 00 mov DWORD PTR k$[rbp], 0
000f8 eb 08 jmp SHORT $LN7@stbi__hdr_
$LN5@stbi__hdr_:
000fa 8b 45 24 mov eax, DWORD PTR k$[rbp]
000fd ff c0 inc eax
000ff 89 45 24 mov DWORD PTR k$[rbp], eax
$LN7@stbi__hdr_:
00102 8b 45 44 mov eax, DWORD PTR n$[rbp]
00105 39 45 24 cmp DWORD PTR k$[rbp], eax
00108 0f 8d bf 00 00
00 jge $LN6@stbi__hdr_
; 2127 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i,
0010e f3 0f 5a 05 00
00 00 00 cvtss2sd xmm0, DWORD PTR stbi__h2l_gamma_i
00116 8b 45 04 mov eax, DWORD PTR i$[rbp]
00119 0f af 85 b8 01
00 00 imul eax, DWORD PTR comp$[rbp]
00120 03 45 24 add eax, DWORD PTR k$[rbp]
00123 48 98 cdqe
00125 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR data$[rbp]
0012c f3 0f 10 0c 81 movss xmm1, DWORD PTR [rcx+rax*4]
00131 f3 0f 59 0d 00
00 00 00 mulss xmm1, DWORD PTR stbi__h2l_scale_i
00139 f3 0f 5a c9 cvtss2sd xmm1, xmm1
0013d f2 0f 11 8d 78
01 00 00 movsd QWORD PTR tv93[rbp], xmm1
00145 0f 28 c8 movaps xmm1, xmm0
00148 f2 0f 10 85 78
01 00 00 movsd xmm0, QWORD PTR tv93[rbp]
00150 e8 00 00 00 00 call pow
00155 f2 0f 5a c0 cvtsd2ss xmm0, xmm0
00159 f3 0f 59 05 00
00 00 00 mulss xmm0, DWORD PTR __real@437f0000
00161 f3 0f 58 05 00
00 00 00 addss xmm0, DWORD PTR __real@3f000000
00169 f3 0f 11 85 84
00 00 00 movss DWORD PTR z$1[rbp], xmm0
; 2128 : stbi__h2l_gamma_i) *
; 2129 : 255 +
; 2130 : 0.5f;
; 2131 : if (z < 0)
00171 0f 57 c0 xorps xmm0, xmm0
00174 0f 2f 85 84 00
00 00 comiss xmm0, DWORD PTR z$1[rbp]
0017b 76 0b jbe SHORT $LN12@stbi__hdr_
; 2132 : z = 0;
0017d 0f 57 c0 xorps xmm0, xmm0
00180 f3 0f 11 85 84
00 00 00 movss DWORD PTR z$1[rbp], xmm0
$LN12@stbi__hdr_:
; 2133 : if (z > 255)
00188 f3 0f 10 85 84
00 00 00 movss xmm0, DWORD PTR z$1[rbp]
00190 0f 2f 05 00 00
00 00 comiss xmm0, DWORD PTR __real@437f0000
00197 76 10 jbe SHORT $LN13@stbi__hdr_
; 2134 : z = 255;
00199 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@437f0000
001a1 f3 0f 11 85 84
00 00 00 movss DWORD PTR z$1[rbp], xmm0
$LN13@stbi__hdr_:
; 2135 : output[i * comp + k] = (stbi_uc)stbi__float2int(z);
001a9 f3 0f 2c 85 84
00 00 00 cvttss2si eax, DWORD PTR z$1[rbp]
001b1 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
001b4 0f af 8d b8 01
00 00 imul ecx, DWORD PTR comp$[rbp]
001bb 03 4d 24 add ecx, DWORD PTR k$[rbp]
001be 48 63 c9 movsxd rcx, ecx
001c1 48 8b 55 68 mov rdx, QWORD PTR output$[rbp]
001c5 88 04 0a mov BYTE PTR [rdx+rcx], al
; 2136 : }
001c8 e9 2d ff ff ff jmp $LN5@stbi__hdr_
$LN6@stbi__hdr_:
; 2137 : if (k < comp) {
001cd 8b 85 b8 01 00
00 mov eax, DWORD PTR comp$[rbp]
001d3 39 45 24 cmp DWORD PTR k$[rbp], eax
001d6 0f 8d 8a 00 00
00 jge $LN14@stbi__hdr_
; 2138 : float z = data[i * comp + k] * 255 + 0.5f;
001dc 8b 45 04 mov eax, DWORD PTR i$[rbp]
001df 0f af 85 b8 01
00 00 imul eax, DWORD PTR comp$[rbp]
001e6 03 45 24 add eax, DWORD PTR k$[rbp]
001e9 48 98 cdqe
001eb 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR data$[rbp]
001f2 f3 0f 10 04 81 movss xmm0, DWORD PTR [rcx+rax*4]
001f7 f3 0f 59 05 00
00 00 00 mulss xmm0, DWORD PTR __real@437f0000
001ff f3 0f 58 05 00
00 00 00 addss xmm0, DWORD PTR __real@3f000000
00207 f3 0f 11 85 a4
00 00 00 movss DWORD PTR z$2[rbp], xmm0
; 2139 : if (z < 0)
0020f 0f 57 c0 xorps xmm0, xmm0
00212 0f 2f 85 a4 00
00 00 comiss xmm0, DWORD PTR z$2[rbp]
00219 76 0b jbe SHORT $LN15@stbi__hdr_
; 2140 : z = 0;
0021b 0f 57 c0 xorps xmm0, xmm0
0021e f3 0f 11 85 a4
00 00 00 movss DWORD PTR z$2[rbp], xmm0
$LN15@stbi__hdr_:
; 2141 : if (z > 255)
00226 f3 0f 10 85 a4
00 00 00 movss xmm0, DWORD PTR z$2[rbp]
0022e 0f 2f 05 00 00
00 00 comiss xmm0, DWORD PTR __real@437f0000
00235 76 10 jbe SHORT $LN16@stbi__hdr_
; 2142 : z = 255;
00237 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@437f0000
0023f f3 0f 11 85 a4
00 00 00 movss DWORD PTR z$2[rbp], xmm0
$LN16@stbi__hdr_:
; 2143 : output[i * comp + k] = (stbi_uc)stbi__float2int(z);
00247 f3 0f 2c 85 a4
00 00 00 cvttss2si eax, DWORD PTR z$2[rbp]
0024f 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
00252 0f af 8d b8 01
00 00 imul ecx, DWORD PTR comp$[rbp]
00259 03 4d 24 add ecx, DWORD PTR k$[rbp]
0025c 48 63 c9 movsxd rcx, ecx
0025f 48 8b 55 68 mov rdx, QWORD PTR output$[rbp]
00263 88 04 0a mov BYTE PTR [rdx+rcx], al
$LN14@stbi__hdr_:
; 2144 : }
; 2145 : }
00266 e9 68 fe ff ff jmp $LN2@stbi__hdr_
$LN3@stbi__hdr_:
; 2146 : STBI_FREE(data);
0026b 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR data$[rbp]
00272 ff 15 00 00 00
00 call QWORD PTR __imp_free
00278 90 npad 1
; 2147 : return output;
00279 48 8b 45 68 mov rax, QWORD PTR output$[rbp]
$LN1@stbi__hdr_:
; 2148 : }
0027d 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
00284 5f pop rdi
00285 5d pop rbp
00286 c3 ret 0
stbi__hdr_to_ldr ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__ldr_to_hdr
_TEXT SEGMENT
i$ = 4
k$ = 36
n$ = 68
output$ = 104
tv76 = 312
tv133 = 312
data$ = 352
x$ = 360
y$ = 368
comp$ = 376
stbi__ldr_to_hdr PROC ; COMDAT
; 2075 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 78 01
00 00 sub rsp, 376 ; 00000178H
0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00021 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002d 90 npad 1
; 2076 : int i, k, n;
; 2077 : float *output;
; 2078 : if (!data)
0002e 48 83 bd 60 01
00 00 00 cmp QWORD PTR data$[rbp], 0
00036 75 07 jne SHORT $LN11@stbi__ldr_
; 2079 : return NULL;
00038 33 c0 xor eax, eax
0003a e9 d2 01 00 00 jmp $LN1@stbi__ldr_
$LN11@stbi__ldr_:
; 2080 : output = (float *)stbi__malloc_mad4(x, y, comp, sizeof(float), 0);
0003f c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
00047 41 b9 04 00 00
00 mov r9d, 4
0004d 44 8b 85 78 01
00 00 mov r8d, DWORD PTR comp$[rbp]
00054 8b 95 70 01 00
00 mov edx, DWORD PTR y$[rbp]
0005a 8b 8d 68 01 00
00 mov ecx, DWORD PTR x$[rbp]
00060 e8 00 00 00 00 call stbi__malloc_mad4
00065 48 89 45 68 mov QWORD PTR output$[rbp], rax
; 2081 : if (output == NULL) {
00069 48 83 7d 68 00 cmp QWORD PTR output$[rbp], 0
0006e 75 42 jne SHORT $LN12@stbi__ldr_
; 2082 : STBI_FREE(data);
00070 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR data$[rbp]
00077 ff 15 00 00 00
00 call QWORD PTR __imp_free
0007d 90 npad 1
; 2083 : return stbi__errpf("outofmem", "Out of memory");
0007e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00085 e8 00 00 00 00 call stbi__err
0008a 85 c0 test eax, eax
0008c 74 0d je SHORT $LN17@stbi__ldr_
0008e 48 c7 85 38 01
00 00 00 00 00
00 mov QWORD PTR tv76[rbp], 0
00099 eb 0b jmp SHORT $LN18@stbi__ldr_
$LN17@stbi__ldr_:
0009b 48 c7 85 38 01
00 00 00 00 00
00 mov QWORD PTR tv76[rbp], 0
$LN18@stbi__ldr_:
000a6 48 8b 85 38 01
00 00 mov rax, QWORD PTR tv76[rbp]
000ad e9 5f 01 00 00 jmp $LN1@stbi__ldr_
$LN12@stbi__ldr_:
; 2084 : }
; 2085 : // compute number of non-alpha components
; 2086 : if (comp & 1)
000b2 8b 85 78 01 00
00 mov eax, DWORD PTR comp$[rbp]
000b8 83 e0 01 and eax, 1
000bb 85 c0 test eax, eax
000bd 74 0b je SHORT $LN13@stbi__ldr_
; 2087 : n = comp;
000bf 8b 85 78 01 00
00 mov eax, DWORD PTR comp$[rbp]
000c5 89 45 44 mov DWORD PTR n$[rbp], eax
000c8 eb 0b jmp SHORT $LN14@stbi__ldr_
$LN13@stbi__ldr_:
; 2088 : else
; 2089 : n = comp - 1;
000ca 8b 85 78 01 00
00 mov eax, DWORD PTR comp$[rbp]
000d0 ff c8 dec eax
000d2 89 45 44 mov DWORD PTR n$[rbp], eax
$LN14@stbi__ldr_:
; 2090 : for (i = 0; i < x * y; ++i) {
000d5 c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
000dc eb 08 jmp SHORT $LN4@stbi__ldr_
$LN2@stbi__ldr_:
000de 8b 45 04 mov eax, DWORD PTR i$[rbp]
000e1 ff c0 inc eax
000e3 89 45 04 mov DWORD PTR i$[rbp], eax
$LN4@stbi__ldr_:
000e6 8b 85 68 01 00
00 mov eax, DWORD PTR x$[rbp]
000ec 0f af 85 70 01
00 00 imul eax, DWORD PTR y$[rbp]
000f3 39 45 04 cmp DWORD PTR i$[rbp], eax
000f6 0f 8d 95 00 00
00 jge $LN3@stbi__ldr_
; 2091 : for (k = 0; k < n; ++k) {
000fc c7 45 24 00 00
00 00 mov DWORD PTR k$[rbp], 0
00103 eb 08 jmp SHORT $LN7@stbi__ldr_
$LN5@stbi__ldr_:
00105 8b 45 24 mov eax, DWORD PTR k$[rbp]
00108 ff c0 inc eax
0010a 89 45 24 mov DWORD PTR k$[rbp], eax
$LN7@stbi__ldr_:
0010d 8b 45 44 mov eax, DWORD PTR n$[rbp]
00110 39 45 24 cmp DWORD PTR k$[rbp], eax
00113 7d 77 jge SHORT $LN6@stbi__ldr_
; 2092 : output[i * comp + k] =
00115 f3 0f 5a 05 00
00 00 00 cvtss2sd xmm0, DWORD PTR stbi__l2h_gamma
0011d 8b 45 04 mov eax, DWORD PTR i$[rbp]
00120 0f af 85 78 01
00 00 imul eax, DWORD PTR comp$[rbp]
00127 03 45 24 add eax, DWORD PTR k$[rbp]
0012a 48 98 cdqe
0012c 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR data$[rbp]
00133 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00137 f3 0f 2a c8 cvtsi2ss xmm1, eax
0013b f3 0f 5e 0d 00
00 00 00 divss xmm1, DWORD PTR __real@437f0000
00143 f3 0f 5a c9 cvtss2sd xmm1, xmm1
00147 f2 0f 11 8d 38
01 00 00 movsd QWORD PTR tv133[rbp], xmm1
0014f 0f 28 c8 movaps xmm1, xmm0
00152 f2 0f 10 85 38
01 00 00 movsd xmm0, QWORD PTR tv133[rbp]
0015a e8 00 00 00 00 call pow
0015f f3 0f 5a 0d 00
00 00 00 cvtss2sd xmm1, DWORD PTR stbi__l2h_scale
00167 f2 0f 59 c1 mulsd xmm0, xmm1
0016b f2 0f 5a c0 cvtsd2ss xmm0, xmm0
0016f 8b 45 04 mov eax, DWORD PTR i$[rbp]
00172 0f af 85 78 01
00 00 imul eax, DWORD PTR comp$[rbp]
00179 03 45 24 add eax, DWORD PTR k$[rbp]
0017c 48 98 cdqe
0017e 48 8b 4d 68 mov rcx, QWORD PTR output$[rbp]
00182 f3 0f 11 04 81 movss DWORD PTR [rcx+rax*4], xmm0
; 2093 : (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) *
; 2094 : stbi__l2h_scale);
; 2095 : }
00187 e9 79 ff ff ff jmp $LN5@stbi__ldr_
$LN6@stbi__ldr_:
; 2096 : }
0018c e9 4d ff ff ff jmp $LN2@stbi__ldr_
$LN3@stbi__ldr_:
; 2097 : if (n < comp) {
00191 8b 85 78 01 00
00 mov eax, DWORD PTR comp$[rbp]
00197 39 45 44 cmp DWORD PTR n$[rbp], eax
0019a 7d 63 jge SHORT $LN15@stbi__ldr_
; 2098 : for (i = 0; i < x * y; ++i) {
0019c c7 45 04 00 00
00 00 mov DWORD PTR i$[rbp], 0
001a3 eb 08 jmp SHORT $LN10@stbi__ldr_
$LN8@stbi__ldr_:
001a5 8b 45 04 mov eax, DWORD PTR i$[rbp]
001a8 ff c0 inc eax
001aa 89 45 04 mov DWORD PTR i$[rbp], eax
$LN10@stbi__ldr_:
001ad 8b 85 68 01 00
00 mov eax, DWORD PTR x$[rbp]
001b3 0f af 85 70 01
00 00 imul eax, DWORD PTR y$[rbp]
001ba 39 45 04 cmp DWORD PTR i$[rbp], eax
001bd 7d 40 jge SHORT $LN9@stbi__ldr_
; 2099 : output[i * comp + n] = data[i * comp + n] / 255.0f;
001bf 8b 45 04 mov eax, DWORD PTR i$[rbp]
001c2 0f af 85 78 01
00 00 imul eax, DWORD PTR comp$[rbp]
001c9 03 45 44 add eax, DWORD PTR n$[rbp]
001cc 48 98 cdqe
001ce 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR data$[rbp]
001d5 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
001d9 f3 0f 2a c0 cvtsi2ss xmm0, eax
001dd f3 0f 5e 05 00
00 00 00 divss xmm0, DWORD PTR __real@437f0000
001e5 8b 45 04 mov eax, DWORD PTR i$[rbp]
001e8 0f af 85 78 01
00 00 imul eax, DWORD PTR comp$[rbp]
001ef 03 45 44 add eax, DWORD PTR n$[rbp]
001f2 48 98 cdqe
001f4 48 8b 4d 68 mov rcx, QWORD PTR output$[rbp]
001f8 f3 0f 11 04 81 movss DWORD PTR [rcx+rax*4], xmm0
; 2100 : }
001fd eb a6 jmp SHORT $LN8@stbi__ldr_
$LN9@stbi__ldr_:
$LN15@stbi__ldr_:
; 2101 : }
; 2102 : STBI_FREE(data);
001ff 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR data$[rbp]
00206 ff 15 00 00 00
00 call QWORD PTR __imp_free
0020c 90 npad 1
; 2103 : return output;
0020d 48 8b 45 68 mov rax, QWORD PTR output$[rbp]
$LN1@stbi__ldr_:
; 2104 : }
00211 48 8d a5 48 01
00 00 lea rsp, QWORD PTR [rbp+328]
00218 5f pop rdi
00219 5d pop rbp
0021a c3 ret 0
stbi__ldr_to_hdr ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__mul2shorts_valid
_TEXT SEGMENT
tv69 = 192
tv73 = 192
tv77 = 192
tv80 = 192
tv68 = 196
a$ = 240
b$ = 248
stbi__mul2shorts_valid PROC ; COMDAT
; 1109 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00008 55 push rbp
00009 57 push rdi
0000a 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00016 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00022 90 npad 1
; 1110 : if (b == 0 || b == -1)
00023 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
0002a 74 09 je SHORT $LN3@stbi__mul2
0002c 83 bd f8 00 00
00 ff cmp DWORD PTR b$[rbp], -1
00033 75 0a jne SHORT $LN2@stbi__mul2
$LN3@stbi__mul2:
; 1111 : return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow
00035 b8 01 00 00 00 mov eax, 1
0003a e9 e9 00 00 00 jmp $LN1@stbi__mul2
$LN2@stbi__mul2:
; 1112 : if ((a >= 0) == (b >= 0))
0003f 83 bd f0 00 00
00 00 cmp DWORD PTR a$[rbp], 0
00046 7c 0c jl SHORT $LN9@stbi__mul2
00048 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv69[rbp], 1
00052 eb 0a jmp SHORT $LN10@stbi__mul2
$LN9@stbi__mul2:
00054 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv69[rbp], 0
$LN10@stbi__mul2:
0005e 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
00065 7c 0c jl SHORT $LN7@stbi__mul2
00067 c7 85 c4 00 00
00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
00071 eb 0a jmp SHORT $LN8@stbi__mul2
$LN7@stbi__mul2:
00073 c7 85 c4 00 00
00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
$LN8@stbi__mul2:
0007d 8b 85 c4 00 00
00 mov eax, DWORD PTR tv68[rbp]
00083 39 85 c0 00 00
00 cmp DWORD PTR tv69[rbp], eax
00089 75 32 jne SHORT $LN4@stbi__mul2
; 1113 : return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid
0008b b8 ff 7f 00 00 mov eax, 32767 ; 00007fffH
00090 99 cdq
00091 f7 bd f8 00 00
00 idiv DWORD PTR b$[rbp]
00097 39 85 f0 00 00
00 cmp DWORD PTR a$[rbp], eax
0009d 7f 0c jg SHORT $LN11@stbi__mul2
0009f c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv73[rbp], 1
000a9 eb 0a jmp SHORT $LN12@stbi__mul2
$LN11@stbi__mul2:
000ab c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
$LN12@stbi__mul2:
000b5 8b 85 c0 00 00
00 mov eax, DWORD PTR tv73[rbp]
000bb eb 6b jmp SHORT $LN1@stbi__mul2
$LN4@stbi__mul2:
; 1114 : if (b < 0)
000bd 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
000c4 7d 32 jge SHORT $LN5@stbi__mul2
; 1115 : return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN
000c6 b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H
000cb 99 cdq
000cc f7 bd f8 00 00
00 idiv DWORD PTR b$[rbp]
000d2 39 85 f0 00 00
00 cmp DWORD PTR a$[rbp], eax
000d8 7f 0c jg SHORT $LN13@stbi__mul2
000da c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv77[rbp], 1
000e4 eb 0a jmp SHORT $LN14@stbi__mul2
$LN13@stbi__mul2:
000e6 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv77[rbp], 0
$LN14@stbi__mul2:
000f0 8b 85 c0 00 00
00 mov eax, DWORD PTR tv77[rbp]
000f6 eb 30 jmp SHORT $LN1@stbi__mul2
$LN5@stbi__mul2:
; 1116 : return a >= SHRT_MIN / b;
000f8 b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H
000fd 99 cdq
000fe f7 bd f8 00 00
00 idiv DWORD PTR b$[rbp]
00104 39 85 f0 00 00
00 cmp DWORD PTR a$[rbp], eax
0010a 7c 0c jl SHORT $LN15@stbi__mul2
0010c c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv80[rbp], 1
00116 eb 0a jmp SHORT $LN16@stbi__mul2
$LN15@stbi__mul2:
00118 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv80[rbp], 0
$LN16@stbi__mul2:
00122 8b 85 c0 00 00
00 mov eax, DWORD PTR tv80[rbp]
$LN1@stbi__mul2:
; 1117 : }
00128 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
0012f 5f pop rdi
00130 5d pop rbp
00131 c3 ret 0
stbi__mul2shorts_valid ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__addints_valid
_TEXT SEGMENT
tv67 = 192
tv73 = 192
tv76 = 192
tv66 = 196
a$ = 240
b$ = 248
stbi__addints_valid PROC ; COMDAT
; 1097 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00008 55 push rbp
00009 57 push rdi
0000a 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00016 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00022 90 npad 1
; 1098 : if ((a >= 0) != (b >= 0))
00023 83 bd f0 00 00
00 00 cmp DWORD PTR a$[rbp], 0
0002a 7c 0c jl SHORT $LN7@stbi__addi
0002c c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
00036 eb 0a jmp SHORT $LN8@stbi__addi
$LN7@stbi__addi:
00038 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
$LN8@stbi__addi:
00042 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
00049 7c 0c jl SHORT $LN5@stbi__addi
0004b c7 85 c4 00 00
00 01 00 00 00 mov DWORD PTR tv66[rbp], 1
00055 eb 0a jmp SHORT $LN6@stbi__addi
$LN5@stbi__addi:
00057 c7 85 c4 00 00
00 00 00 00 00 mov DWORD PTR tv66[rbp], 0
$LN6@stbi__addi:
00061 8b 85 c4 00 00
00 mov eax, DWORD PTR tv66[rbp]
00067 39 85 c0 00 00
00 cmp DWORD PTR tv67[rbp], eax
0006d 74 07 je SHORT $LN2@stbi__addi
; 1099 : return 1; // a and b have different signs, so no overflow
0006f b8 01 00 00 00 mov eax, 1
00074 eb 72 jmp SHORT $LN1@stbi__addi
$LN2@stbi__addi:
; 1100 : if (a < 0 && b < 0)
00076 83 bd f0 00 00
00 00 cmp DWORD PTR a$[rbp], 0
0007d 7d 3a jge SHORT $LN3@stbi__addi
0007f 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
00086 7d 31 jge SHORT $LN3@stbi__addi
; 1101 : return a >=
00088 b8 00 00 00 80 mov eax, -2147483648 ; ffffffff80000000H
0008d 2b 85 f8 00 00
00 sub eax, DWORD PTR b$[rbp]
00093 39 85 f0 00 00
00 cmp DWORD PTR a$[rbp], eax
00099 7c 0c jl SHORT $LN9@stbi__addi
0009b c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv73[rbp], 1
000a5 eb 0a jmp SHORT $LN10@stbi__addi
$LN9@stbi__addi:
000a7 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
$LN10@stbi__addi:
000b1 8b 85 c0 00 00
00 mov eax, DWORD PTR tv73[rbp]
000b7 eb 2f jmp SHORT $LN1@stbi__addi
$LN3@stbi__addi:
; 1102 : INT_MIN -
; 1103 : b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0.
; 1104 : return a <= INT_MAX - b;
000b9 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH
000be 2b 85 f8 00 00
00 sub eax, DWORD PTR b$[rbp]
000c4 39 85 f0 00 00
00 cmp DWORD PTR a$[rbp], eax
000ca 7f 0c jg SHORT $LN11@stbi__addi
000cc c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv76[rbp], 1
000d6 eb 0a jmp SHORT $LN12@stbi__addi
$LN11@stbi__addi:
000d8 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv76[rbp], 0
$LN12@stbi__addi:
000e2 8b 85 c0 00 00
00 mov eax, DWORD PTR tv76[rbp]
$LN1@stbi__addi:
; 1105 : }
000e8 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000ef 5f pop rdi
000f0 5d pop rbp
000f1 c3 ret 0
stbi__addints_valid ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__malloc_mad4
_TEXT SEGMENT
a$ = 224
b$ = 232
c$ = 240
d$ = 248
add$ = 256
stbi__malloc_mad4 PROC ; COMDAT
; 1088 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00012 55 push rbp
00013 57 push rdi
00014 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0001b 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00020 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002c 90 npad 1
; 1089 : if (!stbi__mad4sizes_valid(a, b, c, d, add))
0002d 8b 85 00 01 00
00 mov eax, DWORD PTR add$[rbp]
00033 89 44 24 20 mov DWORD PTR [rsp+32], eax
00037 44 8b 8d f8 00
00 00 mov r9d, DWORD PTR d$[rbp]
0003e 44 8b 85 f0 00
00 00 mov r8d, DWORD PTR c$[rbp]
00045 8b 95 e8 00 00
00 mov edx, DWORD PTR b$[rbp]
0004b 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00051 e8 00 00 00 00 call stbi__mad4sizes_valid
00056 85 c0 test eax, eax
00058 75 04 jne SHORT $LN2@stbi__mall
; 1090 : return NULL;
0005a 33 c0 xor eax, eax
0005c eb 2b jmp SHORT $LN1@stbi__mall
$LN2@stbi__mall:
; 1091 : return stbi__malloc(a * b * c * d + add);
0005e 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
00064 0f af 85 e8 00
00 00 imul eax, DWORD PTR b$[rbp]
0006b 0f af 85 f0 00
00 00 imul eax, DWORD PTR c$[rbp]
00072 0f af 85 f8 00
00 00 imul eax, DWORD PTR d$[rbp]
00079 03 85 00 01 00
00 add eax, DWORD PTR add$[rbp]
0007f 48 98 cdqe
00081 48 8b c8 mov rcx, rax
00084 e8 00 00 00 00 call stbi__malloc
$LN1@stbi__mall:
; 1092 : }
00089 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00090 5f pop rdi
00091 5d pop rbp
00092 c3 ret 0
stbi__malloc_mad4 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__malloc_mad3
_TEXT SEGMENT
a$ = 224
b$ = 232
c$ = 240
add$ = 248
stbi__malloc_mad3 PROC ; COMDAT
; 1080 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00012 55 push rbp
00013 57 push rdi
00014 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0001b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00020 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002c 90 npad 1
; 1081 : if (!stbi__mad3sizes_valid(a, b, c, add))
0002d 44 8b 8d f8 00
00 00 mov r9d, DWORD PTR add$[rbp]
00034 44 8b 85 f0 00
00 00 mov r8d, DWORD PTR c$[rbp]
0003b 8b 95 e8 00 00
00 mov edx, DWORD PTR b$[rbp]
00041 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00047 e8 00 00 00 00 call stbi__mad3sizes_valid
0004c 85 c0 test eax, eax
0004e 75 04 jne SHORT $LN2@stbi__mall
; 1082 : return NULL;
00050 33 c0 xor eax, eax
00052 eb 24 jmp SHORT $LN1@stbi__mall
$LN2@stbi__mall:
; 1083 : return stbi__malloc(a * b * c + add);
00054 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
0005a 0f af 85 e8 00
00 00 imul eax, DWORD PTR b$[rbp]
00061 0f af 85 f0 00
00 00 imul eax, DWORD PTR c$[rbp]
00068 03 85 f8 00 00
00 add eax, DWORD PTR add$[rbp]
0006e 48 98 cdqe
00070 48 8b c8 mov rcx, rax
00073 e8 00 00 00 00 call stbi__malloc
$LN1@stbi__mall:
; 1084 : }
00078 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0007f 5f pop rdi
00080 5d pop rbp
00081 c3 ret 0
stbi__malloc_mad3 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__malloc_mad2
_TEXT SEGMENT
a$ = 224
b$ = 232
add$ = 240
stbi__malloc_mad2 PROC ; COMDAT
; 1072 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000d 55 push rbp
0000e 57 push rdi
0000f 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00027 90 npad 1
; 1073 : if (!stbi__mad2sizes_valid(a, b, add))
00028 44 8b 85 f0 00
00 00 mov r8d, DWORD PTR add$[rbp]
0002f 8b 95 e8 00 00
00 mov edx, DWORD PTR b$[rbp]
00035 8b 8d e0 00 00
00 mov ecx, DWORD PTR a$[rbp]
0003b e8 00 00 00 00 call stbi__mad2sizes_valid
00040 85 c0 test eax, eax
00042 75 04 jne SHORT $LN2@stbi__mall
; 1074 : return NULL;
00044 33 c0 xor eax, eax
00046 eb 1d jmp SHORT $LN1@stbi__mall
$LN2@stbi__mall:
; 1075 : return stbi__malloc(a * b + add);
00048 8b 85 e0 00 00
00 mov eax, DWORD PTR a$[rbp]
0004e 0f af 85 e8 00
00 00 imul eax, DWORD PTR b$[rbp]
00055 03 85 f0 00 00
00 add eax, DWORD PTR add$[rbp]
0005b 48 98 cdqe
0005d 48 8b c8 mov rcx, rax
00060 e8 00 00 00 00 call stbi__malloc
$LN1@stbi__mall:
; 1076 : }
00065 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0006c 5f pop rdi
0006d 5d pop rbp
0006e c3 ret 0
stbi__malloc_mad2 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__mad4sizes_valid
_TEXT SEGMENT
tv86 = 192
a$ = 240
b$ = 248
c$ = 256
d$ = 264
add$ = 272
stbi__mad4sizes_valid PROC ; COMDAT
; 1062 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00012 55 push rbp
00013 57 push rdi
00014 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0001b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00020 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002c 90 npad 1
; 1063 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) &&
0002d 8b 95 f8 00 00
00 mov edx, DWORD PTR b$[rbp]
00033 8b 8d f0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00039 e8 00 00 00 00 call stbi__mul2sizes_valid
0003e 85 c0 test eax, eax
00040 74 7b je SHORT $LN3@stbi__mad4
00042 8b 85 f0 00 00
00 mov eax, DWORD PTR a$[rbp]
00048 0f af 85 f8 00
00 00 imul eax, DWORD PTR b$[rbp]
0004f 8b 95 00 01 00
00 mov edx, DWORD PTR c$[rbp]
00055 8b c8 mov ecx, eax
00057 e8 00 00 00 00 call stbi__mul2sizes_valid
0005c 85 c0 test eax, eax
0005e 74 5d je SHORT $LN3@stbi__mad4
00060 8b 85 f0 00 00
00 mov eax, DWORD PTR a$[rbp]
00066 0f af 85 f8 00
00 00 imul eax, DWORD PTR b$[rbp]
0006d 0f af 85 00 01
00 00 imul eax, DWORD PTR c$[rbp]
00074 8b 95 08 01 00
00 mov edx, DWORD PTR d$[rbp]
0007a 8b c8 mov ecx, eax
0007c e8 00 00 00 00 call stbi__mul2sizes_valid
00081 85 c0 test eax, eax
00083 74 38 je SHORT $LN3@stbi__mad4
00085 8b 85 f0 00 00
00 mov eax, DWORD PTR a$[rbp]
0008b 0f af 85 f8 00
00 00 imul eax, DWORD PTR b$[rbp]
00092 0f af 85 00 01
00 00 imul eax, DWORD PTR c$[rbp]
00099 0f af 85 08 01
00 00 imul eax, DWORD PTR d$[rbp]
000a0 8b 95 10 01 00
00 mov edx, DWORD PTR add$[rbp]
000a6 8b c8 mov ecx, eax
000a8 e8 00 00 00 00 call stbi__addsizes_valid
000ad 85 c0 test eax, eax
000af 74 0c je SHORT $LN3@stbi__mad4
000b1 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv86[rbp], 1
000bb eb 0a jmp SHORT $LN4@stbi__mad4
$LN3@stbi__mad4:
000bd c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv86[rbp], 0
$LN4@stbi__mad4:
000c7 8b 85 c0 00 00
00 mov eax, DWORD PTR tv86[rbp]
; 1064 : stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add);
; 1065 : }
000cd 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000d4 5f pop rdi
000d5 5d pop rbp
000d6 c3 ret 0
stbi__mad4sizes_valid ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__mad3sizes_valid
_TEXT SEGMENT
tv79 = 192
a$ = 240
b$ = 248
c$ = 256
add$ = 264
stbi__mad3sizes_valid PROC ; COMDAT
; 1054 : {
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00012 55 push rbp
00013 57 push rdi
00014 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0001b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00020 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002c 90 npad 1
; 1055 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) &&
0002d 8b 95 f8 00 00
00 mov edx, DWORD PTR b$[rbp]
00033 8b 8d f0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00039 e8 00 00 00 00 call stbi__mul2sizes_valid
0003e 85 c0 test eax, eax
00040 74 4f je SHORT $LN3@stbi__mad3
00042 8b 85 f0 00 00
00 mov eax, DWORD PTR a$[rbp]
00048 0f af 85 f8 00
00 00 imul eax, DWORD PTR b$[rbp]
0004f 8b 95 00 01 00
00 mov edx, DWORD PTR c$[rbp]
00055 8b c8 mov ecx, eax
00057 e8 00 00 00 00 call stbi__mul2sizes_valid
0005c 85 c0 test eax, eax
0005e 74 31 je SHORT $LN3@stbi__mad3
00060 8b 85 f0 00 00
00 mov eax, DWORD PTR a$[rbp]
00066 0f af 85 f8 00
00 00 imul eax, DWORD PTR b$[rbp]
0006d 0f af 85 00 01
00 00 imul eax, DWORD PTR c$[rbp]
00074 8b 95 08 01 00
00 mov edx, DWORD PTR add$[rbp]
0007a 8b c8 mov ecx, eax
0007c e8 00 00 00 00 call stbi__addsizes_valid
00081 85 c0 test eax, eax
00083 74 0c je SHORT $LN3@stbi__mad3
00085 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv79[rbp], 1
0008f eb 0a jmp SHORT $LN4@stbi__mad3
$LN3@stbi__mad3:
00091 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv79[rbp], 0
$LN4@stbi__mad3:
0009b 8b 85 c0 00 00
00 mov eax, DWORD PTR tv79[rbp]
; 1056 : stbi__addsizes_valid(a * b * c, add);
; 1057 : }
000a1 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000a8 5f pop rdi
000a9 5d pop rbp
000aa c3 ret 0
stbi__mad3sizes_valid ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__mad2sizes_valid
_TEXT SEGMENT
tv73 = 192
a$ = 240
b$ = 248
add$ = 256
stbi__mad2sizes_valid PROC ; COMDAT
; 1047 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
0000d 55 push rbp
0000e 57 push rdi
0000f 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00027 90 npad 1
; 1048 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add);
00028 8b 95 f8 00 00
00 mov edx, DWORD PTR b$[rbp]
0002e 8b 8d f0 00 00
00 mov ecx, DWORD PTR a$[rbp]
00034 e8 00 00 00 00 call stbi__mul2sizes_valid
00039 85 c0 test eax, eax
0003b 74 2a je SHORT $LN3@stbi__mad2
0003d 8b 85 f0 00 00
00 mov eax, DWORD PTR a$[rbp]
00043 0f af 85 f8 00
00 00 imul eax, DWORD PTR b$[rbp]
0004a 8b 95 00 01 00
00 mov edx, DWORD PTR add$[rbp]
00050 8b c8 mov ecx, eax
00052 e8 00 00 00 00 call stbi__addsizes_valid
00057 85 c0 test eax, eax
00059 74 0c je SHORT $LN3@stbi__mad2
0005b c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv73[rbp], 1
00065 eb 0a jmp SHORT $LN4@stbi__mad2
$LN3@stbi__mad2:
00067 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
$LN4@stbi__mad2:
00071 8b 85 c0 00 00
00 mov eax, DWORD PTR tv73[rbp]
; 1049 : }
00077 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
0007e 5f pop rdi
0007f 5d pop rbp
00080 c3 ret 0
stbi__mad2sizes_valid ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__mul2sizes_valid
_TEXT SEGMENT
tv69 = 192
a$ = 240
b$ = 248
stbi__mul2sizes_valid PROC ; COMDAT
; 1034 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00008 55 push rbp
00009 57 push rdi
0000a 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00016 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00022 90 npad 1
; 1035 : if (a < 0 || b < 0)
00023 83 bd f0 00 00
00 00 cmp DWORD PTR a$[rbp], 0
0002a 7c 09 jl SHORT $LN3@stbi__mul2
0002c 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
00033 7d 04 jge SHORT $LN2@stbi__mul2
$LN3@stbi__mul2:
; 1036 : return 0;
00035 33 c0 xor eax, eax
00037 eb 40 jmp SHORT $LN1@stbi__mul2
$LN2@stbi__mul2:
; 1037 : if (b == 0)
00039 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
00040 75 07 jne SHORT $LN4@stbi__mul2
; 1038 : return 1; // mul-by-0 is always safe
00042 b8 01 00 00 00 mov eax, 1
00047 eb 30 jmp SHORT $LN1@stbi__mul2
$LN4@stbi__mul2:
; 1039 : // portable way to check for no overflows in a*b
; 1040 : return a <= INT_MAX / b;
00049 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH
0004e 99 cdq
0004f f7 bd f8 00 00
00 idiv DWORD PTR b$[rbp]
00055 39 85 f0 00 00
00 cmp DWORD PTR a$[rbp], eax
0005b 7f 0c jg SHORT $LN6@stbi__mul2
0005d c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv69[rbp], 1
00067 eb 0a jmp SHORT $LN7@stbi__mul2
$LN6@stbi__mul2:
00069 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv69[rbp], 0
$LN7@stbi__mul2:
00073 8b 85 c0 00 00
00 mov eax, DWORD PTR tv69[rbp]
$LN1@stbi__mul2:
; 1041 : }
00079 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
00080 5f pop rdi
00081 5d pop rbp
00082 c3 ret 0
stbi__mul2sizes_valid ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__addsizes_valid
_TEXT SEGMENT
tv67 = 192
a$ = 240
b$ = 248
stbi__addsizes_valid PROC ; COMDAT
; 1021 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00008 55 push rbp
00009 57 push rdi
0000a 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00016 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00022 90 npad 1
; 1022 : if (b < 0)
00023 83 bd f8 00 00
00 00 cmp DWORD PTR b$[rbp], 0
0002a 7d 04 jge SHORT $LN2@stbi__adds
; 1023 : return 0;
0002c 33 c0 xor eax, eax
0002e eb 2f jmp SHORT $LN1@stbi__adds
$LN2@stbi__adds:
; 1024 : // now 0 <= b <= INT_MAX, hence also
; 1025 : // 0 <= INT_MAX - b <= INTMAX.
; 1026 : // And "a + b <= INT_MAX" (which might overflow) is the
; 1027 : // same as a <= INT_MAX - b (no overflow)
; 1028 : return a <= INT_MAX - b;
00030 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH
00035 2b 85 f8 00 00
00 sub eax, DWORD PTR b$[rbp]
0003b 39 85 f0 00 00
00 cmp DWORD PTR a$[rbp], eax
00041 7f 0c jg SHORT $LN4@stbi__adds
00043 c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
0004d eb 0a jmp SHORT $LN5@stbi__adds
$LN4@stbi__adds:
0004f c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
$LN5@stbi__adds:
00059 8b 85 c0 00 00
00 mov eax, DWORD PTR tv67[rbp]
$LN1@stbi__adds:
; 1029 : }
0005f 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
00066 5f pop rdi
00067 5d pop rbp
00068 c3 ret 0
stbi__addsizes_valid ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__malloc
_TEXT SEGMENT
size$ = 224
stbi__malloc PROC ; COMDAT
; 1004 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1005 : return STBI_MALLOC(size);
00020 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR size$[rbp]
00027 ff 15 00 00 00
00 call QWORD PTR __imp_malloc
; 1006 : }
0002d 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00034 5f pop rdi
00035 5d pop rbp
00036 c3 ret 0
stbi__malloc ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__err
_TEXT SEGMENT
str$ = 224
stbi__err PROC ; COMDAT
; 997 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 998 : stbi__g_failure_reason = str;
00020 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__g_failure_reason
00025 8b c0 mov eax, eax
00027 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0002d 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00036 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
0003a 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR str$[rbp]
00041 48 89 14 08 mov QWORD PTR [rax+rcx], rdx
; 999 : return 0;
00045 33 c0 xor eax, eax
; 1000 : }
00047 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0004e 5f pop rdi
0004f 5d pop rbp
00050 c3 ret 0
stbi__err ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_is16
_TEXT SEGMENT
s$ = 224
stbi__pnm_is16 PROC ; COMDAT
; 8552 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 8553 : if (stbi__pnm_info(s, NULL, NULL, NULL) == 16)
00020 45 33 c9 xor r9d, r9d
00023 45 33 c0 xor r8d, r8d
00026 33 d2 xor edx, edx
00028 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0002f e8 00 00 00 00 call stbi__pnm_info
00034 83 f8 10 cmp eax, 16
00037 75 07 jne SHORT $LN2@stbi__pnm_
; 8554 : return 1;
00039 b8 01 00 00 00 mov eax, 1
0003e eb 02 jmp SHORT $LN1@stbi__pnm_
$LN2@stbi__pnm_:
; 8555 : return 0;
00040 33 c0 xor eax, eax
$LN1@stbi__pnm_:
; 8556 : }
00042 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00049 5f pop rdi
0004a 5d pop rbp
0004b c3 ret 0
stbi__pnm_is16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_info
_TEXT SEGMENT
maxv$ = 4
dummy$ = 36
c$ = 68
p$ = 100
t$ = 132
tv81 = 340
__$ArrayPad$ = 344
s$ = 384
x$ = 392
y$ = 400
comp$ = 408
stbi__pnm_info PROC ; COMDAT
; 8505 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 88 01
00 00 sub rsp, 392 ; 00000188H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 2a 00 00 00 mov ecx, 42 ; 0000002aH
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 a8
01 00 00 mov rcx, QWORD PTR [rsp+424]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 58 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8506 : int maxv, dummy;
; 8507 : char c, p, t;
; 8508 :
; 8509 : if (!x)
00059 48 83 bd 88 01
00 00 00 cmp QWORD PTR x$[rbp], 0
00061 75 0b jne SHORT $LN2@stbi__pnm_
; 8510 : x = &dummy;
00063 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
00067 48 89 85 88 01
00 00 mov QWORD PTR x$[rbp], rax
$LN2@stbi__pnm_:
; 8511 : if (!y)
0006e 48 83 bd 90 01
00 00 00 cmp QWORD PTR y$[rbp], 0
00076 75 0b jne SHORT $LN3@stbi__pnm_
; 8512 : y = &dummy;
00078 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
0007c 48 89 85 90 01
00 00 mov QWORD PTR y$[rbp], rax
$LN3@stbi__pnm_:
; 8513 : if (!comp)
00083 48 83 bd 98 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
0008b 75 0b jne SHORT $LN4@stbi__pnm_
; 8514 : comp = &dummy;
0008d 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
00091 48 89 85 98 01
00 00 mov QWORD PTR comp$[rbp], rax
$LN4@stbi__pnm_:
; 8515 :
; 8516 : stbi__rewind(s);
00098 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
0009f e8 00 00 00 00 call stbi__rewind
000a4 90 npad 1
; 8517 :
; 8518 : // Get identifier
; 8519 : p = (char)stbi__get8(s);
000a5 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
000ac e8 00 00 00 00 call stbi__get8
000b1 88 45 64 mov BYTE PTR p$[rbp], al
; 8520 : t = (char)stbi__get8(s);
000b4 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
000bb e8 00 00 00 00 call stbi__get8
000c0 88 85 84 00 00
00 mov BYTE PTR t$[rbp], al
; 8521 : if (p != 'P' || (t != '5' && t != '6')) {
000c6 0f be 45 64 movsx eax, BYTE PTR p$[rbp]
000ca 83 f8 50 cmp eax, 80 ; 00000050H
000cd 75 18 jne SHORT $LN6@stbi__pnm_
000cf 0f be 85 84 00
00 00 movsx eax, BYTE PTR t$[rbp]
000d6 83 f8 35 cmp eax, 53 ; 00000035H
000d9 74 20 je SHORT $LN5@stbi__pnm_
000db 0f be 85 84 00
00 00 movsx eax, BYTE PTR t$[rbp]
000e2 83 f8 36 cmp eax, 54 ; 00000036H
000e5 74 14 je SHORT $LN5@stbi__pnm_
$LN6@stbi__pnm_:
; 8522 : stbi__rewind(s);
000e7 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
000ee e8 00 00 00 00 call stbi__rewind
000f3 90 npad 1
; 8523 : return 0;
000f4 33 c0 xor eax, eax
000f6 e9 1f 01 00 00 jmp $LN1@stbi__pnm_
$LN5@stbi__pnm_:
; 8524 : }
; 8525 :
; 8526 : *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm
000fb 0f be 85 84 00
00 00 movsx eax, BYTE PTR t$[rbp]
00102 83 f8 36 cmp eax, 54 ; 00000036H
00105 75 0c jne SHORT $LN14@stbi__pnm_
00107 c7 85 54 01 00
00 03 00 00 00 mov DWORD PTR tv81[rbp], 3
00111 eb 0a jmp SHORT $LN15@stbi__pnm_
$LN14@stbi__pnm_:
00113 c7 85 54 01 00
00 01 00 00 00 mov DWORD PTR tv81[rbp], 1
$LN15@stbi__pnm_:
0011d 48 8b 85 98 01
00 00 mov rax, QWORD PTR comp$[rbp]
00124 8b 8d 54 01 00
00 mov ecx, DWORD PTR tv81[rbp]
0012a 89 08 mov DWORD PTR [rax], ecx
; 8527 :
; 8528 : c = (char)stbi__get8(s);
0012c 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
00133 e8 00 00 00 00 call stbi__get8
00138 88 45 44 mov BYTE PTR c$[rbp], al
; 8529 : stbi__pnm_skip_whitespace(s, &c);
0013b 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
0013f 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
00146 e8 00 00 00 00 call stbi__pnm_skip_whitespace
0014b 90 npad 1
; 8530 :
; 8531 : *x = stbi__pnm_getinteger(s, &c); // read width
0014c 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
00150 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
00157 e8 00 00 00 00 call stbi__pnm_getinteger
0015c 48 8b 8d 88 01
00 00 mov rcx, QWORD PTR x$[rbp]
00163 89 01 mov DWORD PTR [rcx], eax
; 8532 : if (*x == 0)
00165 48 8b 85 88 01
00 00 mov rax, QWORD PTR x$[rbp]
0016c 83 38 00 cmp DWORD PTR [rax], 0
0016f 75 11 jne SHORT $LN7@stbi__pnm_
; 8533 : return stbi__err("invalid width", "PPM image header had zero or overflowing width");
00171 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@MKGNGALN@invalid?5width@
00178 e8 00 00 00 00 call stbi__err
0017d e9 98 00 00 00 jmp $LN1@stbi__pnm_
$LN7@stbi__pnm_:
; 8534 : stbi__pnm_skip_whitespace(s, &c);
00182 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
00186 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
0018d e8 00 00 00 00 call stbi__pnm_skip_whitespace
00192 90 npad 1
; 8535 :
; 8536 : *y = stbi__pnm_getinteger(s, &c); // read height
00193 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
00197 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
0019e e8 00 00 00 00 call stbi__pnm_getinteger
001a3 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR y$[rbp]
001aa 89 01 mov DWORD PTR [rcx], eax
; 8537 : if (*y == 0)
001ac 48 8b 85 90 01
00 00 mov rax, QWORD PTR y$[rbp]
001b3 83 38 00 cmp DWORD PTR [rax], 0
001b6 75 0e jne SHORT $LN8@stbi__pnm_
; 8538 : return stbi__err("invalid width", "PPM image header had zero or overflowing width");
001b8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@MKGNGALN@invalid?5width@
001bf e8 00 00 00 00 call stbi__err
001c4 eb 54 jmp SHORT $LN1@stbi__pnm_
$LN8@stbi__pnm_:
; 8539 : stbi__pnm_skip_whitespace(s, &c);
001c6 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
001ca 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
001d1 e8 00 00 00 00 call stbi__pnm_skip_whitespace
001d6 90 npad 1
; 8540 :
; 8541 : maxv = stbi__pnm_getinteger(s, &c); // read max value
001d7 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
001db 48 8b 8d 80 01
00 00 mov rcx, QWORD PTR s$[rbp]
001e2 e8 00 00 00 00 call stbi__pnm_getinteger
001e7 89 45 04 mov DWORD PTR maxv$[rbp], eax
; 8542 : if (maxv > 65535)
001ea 81 7d 04 ff ff
00 00 cmp DWORD PTR maxv$[rbp], 65535 ; 0000ffffH
001f1 7e 10 jle SHORT $LN9@stbi__pnm_
; 8543 : return stbi__err("max value > 65535",
001f3 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@
001fa e8 00 00 00 00 call stbi__err
001ff eb 19 jmp SHORT $LN1@stbi__pnm_
00201 eb 17 jmp SHORT $LN10@stbi__pnm_
$LN9@stbi__pnm_:
; 8544 : "PPM image supports only 8-bit and 16-bit images");
; 8545 : else if (maxv > 255)
00203 81 7d 04 ff 00
00 00 cmp DWORD PTR maxv$[rbp], 255 ; 000000ffH
0020a 7e 09 jle SHORT $LN11@stbi__pnm_
; 8546 : return 16;
0020c b8 10 00 00 00 mov eax, 16
00211 eb 07 jmp SHORT $LN1@stbi__pnm_
00213 eb 05 jmp SHORT $LN12@stbi__pnm_
$LN11@stbi__pnm_:
; 8547 : else
; 8548 : return 8;
00215 b8 08 00 00 00 mov eax, 8
$LN12@stbi__pnm_:
$LN10@stbi__pnm_:
$LN1@stbi__pnm_:
; 8549 : }
0021a 48 8b f8 mov rdi, rax
0021d 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00221 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__pnm_info$rtcFrameData
00228 e8 00 00 00 00 call _RTC_CheckStackVars
0022d 48 8b c7 mov rax, rdi
00230 48 8b 8d 58 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00237 48 33 cd xor rcx, rbp
0023a e8 00 00 00 00 call __security_check_cookie
0023f 48 8d a5 68 01
00 00 lea rsp, QWORD PTR [rbp+360]
00246 5f pop rdi
00247 5d pop rbp
00248 c3 ret 0
stbi__pnm_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_load
_TEXT SEGMENT
out$ = 8
tv160 = 212
tv80 = 216
tv86 = 216
tv138 = 216
tv154 = 216
tv172 = 216
s$ = 256
x$ = 264
y$ = 272
comp$ = 280
req_comp$ = 288
ri$ = 296
stbi__pnm_load PROC ; COMDAT
; 8420 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 18 01
00 00 sub rsp, 280 ; 00000118H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 8421 : stbi_uc *out;
; 8422 : STBI_NOTUSED(ri);
; 8423 :
; 8424 : ri->bits_per_channel =
0002f 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00036 48 83 c0 08 add rax, 8
0003a 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00041 48 83 c1 04 add rcx, 4
00045 48 8b 95 00 01
00 00 mov rdx, QWORD PTR s$[rbp]
0004c 4c 8b c8 mov r9, rax
0004f 4c 8b c1 mov r8, rcx
00052 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00059 e8 00 00 00 00 call stbi__pnm_info
0005e 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR ri$[rbp]
00065 89 01 mov DWORD PTR [rcx], eax
; 8425 : stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n);
; 8426 : if (ri->bits_per_channel == 0)
00067 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
0006e 83 38 00 cmp DWORD PTR [rax], 0
00071 75 07 jne SHORT $LN2@stbi__pnm_
; 8427 : return 0;
00073 33 c0 xor eax, eax
00075 e9 06 03 00 00 jmp $LN1@stbi__pnm_
$LN2@stbi__pnm_:
; 8428 :
; 8429 : if (s->img_y > STBI_MAX_DIMENSIONS)
0007a 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00081 81 78 04 00 00
00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
00088 76 34 jbe SHORT $LN3@stbi__pnm_
; 8430 : return stbi__errpuc("too large", "Very large image (corrupt?)");
0008a 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00091 e8 00 00 00 00 call stbi__err
00096 85 c0 test eax, eax
00098 74 0d je SHORT $LN14@stbi__pnm_
0009a 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv80[rbp], 0
000a5 eb 0b jmp SHORT $LN15@stbi__pnm_
$LN14@stbi__pnm_:
000a7 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv80[rbp], 0
$LN15@stbi__pnm_:
000b2 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv80[rbp]
000b9 e9 c2 02 00 00 jmp $LN1@stbi__pnm_
$LN3@stbi__pnm_:
; 8431 : if (s->img_x > STBI_MAX_DIMENSIONS)
000be 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
000c5 81 38 00 00 00
01 cmp DWORD PTR [rax], 16777216 ; 01000000H
000cb 76 34 jbe SHORT $LN4@stbi__pnm_
; 8432 : return stbi__errpuc("too large", "Very large image (corrupt?)");
000cd 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
000d4 e8 00 00 00 00 call stbi__err
000d9 85 c0 test eax, eax
000db 74 0d je SHORT $LN16@stbi__pnm_
000dd 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv86[rbp], 0
000e8 eb 0b jmp SHORT $LN17@stbi__pnm_
$LN16@stbi__pnm_:
000ea 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv86[rbp], 0
$LN17@stbi__pnm_:
000f5 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv86[rbp]
000fc e9 7f 02 00 00 jmp $LN1@stbi__pnm_
$LN4@stbi__pnm_:
; 8433 :
; 8434 : *x = s->img_x;
00101 48 8b 85 08 01
00 00 mov rax, QWORD PTR x$[rbp]
00108 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0010f 8b 09 mov ecx, DWORD PTR [rcx]
00111 89 08 mov DWORD PTR [rax], ecx
; 8435 : *y = s->img_y;
00113 48 8b 85 10 01
00 00 mov rax, QWORD PTR y$[rbp]
0011a 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00121 8b 49 04 mov ecx, DWORD PTR [rcx+4]
00124 89 08 mov DWORD PTR [rax], ecx
; 8436 : if (comp)
00126 48 83 bd 18 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
0012e 74 13 je SHORT $LN5@stbi__pnm_
; 8437 : *comp = s->img_n;
00130 48 8b 85 18 01
00 00 mov rax, QWORD PTR comp$[rbp]
00137 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0013e 8b 49 08 mov ecx, DWORD PTR [rcx+8]
00141 89 08 mov DWORD PTR [rax], ecx
$LN5@stbi__pnm_:
; 8438 :
; 8439 : if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0))
00143 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
0014a 8b 00 mov eax, DWORD PTR [rax]
0014c 99 cdq
0014d 83 e2 07 and edx, 7
00150 03 c2 add eax, edx
00152 c1 f8 03 sar eax, 3
00155 c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
0015d 44 8b c8 mov r9d, eax
00160 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00167 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
0016b 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00172 8b 10 mov edx, DWORD PTR [rax]
00174 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
0017b 8b 48 08 mov ecx, DWORD PTR [rax+8]
0017e e8 00 00 00 00 call stbi__mad4sizes_valid
00183 85 c0 test eax, eax
00185 75 34 jne SHORT $LN6@stbi__pnm_
; 8440 : return stbi__errpuc("too large", "PNM too large");
00187 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
0018e e8 00 00 00 00 call stbi__err
00193 85 c0 test eax, eax
00195 74 0d je SHORT $LN18@stbi__pnm_
00197 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv138[rbp], 0
001a2 eb 0b jmp SHORT $LN19@stbi__pnm_
$LN18@stbi__pnm_:
001a4 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv138[rbp], 0
$LN19@stbi__pnm_:
001af 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv138[rbp]
001b6 e9 c5 01 00 00 jmp $LN1@stbi__pnm_
$LN6@stbi__pnm_:
; 8441 :
; 8442 : out = (stbi_uc *)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8,
001bb 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
001c2 8b 00 mov eax, DWORD PTR [rax]
001c4 99 cdq
001c5 83 e2 07 and edx, 7
001c8 03 c2 add eax, edx
001ca c1 f8 03 sar eax, 3
001cd c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
001d5 44 8b c8 mov r9d, eax
001d8 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
001df 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
001e3 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
001ea 8b 10 mov edx, DWORD PTR [rax]
001ec 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
001f3 8b 48 08 mov ecx, DWORD PTR [rax+8]
001f6 e8 00 00 00 00 call stbi__malloc_mad4
001fb 48 89 45 08 mov QWORD PTR out$[rbp], rax
; 8443 : 0);
; 8444 : if (!out)
001ff 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
00204 75 34 jne SHORT $LN7@stbi__pnm_
; 8445 : return stbi__errpuc("outofmem", "Out of memory");
00206 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0020d e8 00 00 00 00 call stbi__err
00212 85 c0 test eax, eax
00214 74 0d je SHORT $LN20@stbi__pnm_
00216 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv154[rbp], 0
00221 eb 0b jmp SHORT $LN21@stbi__pnm_
$LN20@stbi__pnm_:
00223 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv154[rbp], 0
$LN21@stbi__pnm_:
0022e 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv154[rbp]
00235 e9 46 01 00 00 jmp $LN1@stbi__pnm_
$LN7@stbi__pnm_:
; 8446 : if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) {
0023a 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00241 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00248 8b 40 08 mov eax, DWORD PTR [rax+8]
0024b 0f af 01 imul eax, DWORD PTR [rcx]
0024e 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00255 0f af 41 04 imul eax, DWORD PTR [rcx+4]
00259 89 85 d4 00 00
00 mov DWORD PTR tv160[rbp], eax
0025f 48 8b 8d 28 01
00 00 mov rcx, QWORD PTR ri$[rbp]
00266 8b 01 mov eax, DWORD PTR [rcx]
00268 99 cdq
00269 83 e2 07 and edx, 7
0026c 03 c2 add eax, edx
0026e c1 f8 03 sar eax, 3
00271 8b 8d d4 00 00
00 mov ecx, DWORD PTR tv160[rbp]
00277 0f af c8 imul ecx, eax
0027a 8b c1 mov eax, ecx
0027c 44 8b c0 mov r8d, eax
0027f 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
00283 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0028a e8 00 00 00 00 call stbi__getn
0028f 85 c0 test eax, eax
00291 75 3f jne SHORT $LN8@stbi__pnm_
; 8447 : STBI_FREE(out);
00293 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00297 ff 15 00 00 00
00 call QWORD PTR __imp_free
0029d 90 npad 1
; 8448 : return stbi__errpuc("bad PNM", "PNM file truncated");
0029e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07IDKIDMGJ@bad?5PNM@
002a5 e8 00 00 00 00 call stbi__err
002aa 85 c0 test eax, eax
002ac 74 0d je SHORT $LN22@stbi__pnm_
002ae 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv172[rbp], 0
002b9 eb 0b jmp SHORT $LN23@stbi__pnm_
$LN22@stbi__pnm_:
002bb 48 c7 85 d8 00
00 00 00 00 00
00 mov QWORD PTR tv172[rbp], 0
$LN23@stbi__pnm_:
002c6 48 8b 85 d8 00
00 00 mov rax, QWORD PTR tv172[rbp]
002cd e9 ae 00 00 00 jmp $LN1@stbi__pnm_
$LN8@stbi__pnm_:
; 8449 : }
; 8450 :
; 8451 : if (req_comp && req_comp != s->img_n) {
002d2 83 bd 20 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
002d9 0f 84 9d 00 00
00 je $LN9@stbi__pnm_
002df 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
002e6 8b 40 08 mov eax, DWORD PTR [rax+8]
002e9 39 85 20 01 00
00 cmp DWORD PTR req_comp$[rbp], eax
002ef 0f 84 87 00 00
00 je $LN9@stbi__pnm_
; 8452 : if (ri->bits_per_channel == 16) {
002f5 48 8b 85 28 01
00 00 mov rax, QWORD PTR ri$[rbp]
002fc 83 38 10 cmp DWORD PTR [rax], 16
002ff 75 38 jne SHORT $LN10@stbi__pnm_
; 8453 : out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, s->img_n,
00301 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00308 8b 40 04 mov eax, DWORD PTR [rax+4]
0030b 89 44 24 20 mov DWORD PTR [rsp+32], eax
0030f 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00316 44 8b 08 mov r9d, DWORD PTR [rax]
00319 44 8b 85 20 01
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00320 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00327 8b 50 08 mov edx, DWORD PTR [rax+8]
0032a 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
0032e e8 00 00 00 00 call stbi__convert_format16
00333 48 89 45 08 mov QWORD PTR out$[rbp], rax
; 8454 : req_comp, s->img_x, s->img_y);
; 8455 : } else {
00337 eb 36 jmp SHORT $LN11@stbi__pnm_
$LN10@stbi__pnm_:
; 8456 : out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);
00339 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00340 8b 40 04 mov eax, DWORD PTR [rax+4]
00343 89 44 24 20 mov DWORD PTR [rsp+32], eax
00347 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
0034e 44 8b 08 mov r9d, DWORD PTR [rax]
00351 44 8b 85 20 01
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00358 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
0035f 8b 50 08 mov edx, DWORD PTR [rax+8]
00362 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00366 e8 00 00 00 00 call stbi__convert_format
0036b 48 89 45 08 mov QWORD PTR out$[rbp], rax
$LN11@stbi__pnm_:
; 8457 : }
; 8458 : if (out == NULL)
0036f 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
00374 75 06 jne SHORT $LN12@stbi__pnm_
; 8459 : return out; // stbi__convert_format frees input on failure
00376 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
0037a eb 04 jmp SHORT $LN1@stbi__pnm_
$LN12@stbi__pnm_:
$LN9@stbi__pnm_:
; 8460 : }
; 8461 : return out;
0037c 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
$LN1@stbi__pnm_:
; 8462 : }
00380 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00387 5f pop rdi
00388 5d pop rbp
00389 c3 ret 0
stbi__pnm_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pnm_test
_TEXT SEGMENT
p$ = 4
t$ = 36
s$ = 288
stbi__pnm_test PROC ; COMDAT
; 8407 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 8408 : char p, t;
; 8409 : p = (char)stbi__get8(s);
00020 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get8
0002c 88 45 04 mov BYTE PTR p$[rbp], al
; 8410 : t = (char)stbi__get8(s);
0002f 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__get8
0003b 88 45 24 mov BYTE PTR t$[rbp], al
; 8411 : if (p != 'P' || (t != '5' && t != '6')) {
0003e 0f be 45 04 movsx eax, BYTE PTR p$[rbp]
00042 83 f8 50 cmp eax, 80 ; 00000050H
00045 75 12 jne SHORT $LN3@stbi__pnm_
00047 0f be 45 24 movsx eax, BYTE PTR t$[rbp]
0004b 83 f8 35 cmp eax, 53 ; 00000035H
0004e 74 1a je SHORT $LN2@stbi__pnm_
00050 0f be 45 24 movsx eax, BYTE PTR t$[rbp]
00054 83 f8 36 cmp eax, 54 ; 00000036H
00057 74 11 je SHORT $LN2@stbi__pnm_
$LN3@stbi__pnm_:
; 8412 : stbi__rewind(s);
00059 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00060 e8 00 00 00 00 call stbi__rewind
00065 90 npad 1
; 8413 : return 0;
00066 33 c0 xor eax, eax
00068 eb 05 jmp SHORT $LN1@stbi__pnm_
$LN2@stbi__pnm_:
; 8414 : }
; 8415 : return 1;
0006a b8 01 00 00 00 mov eax, 1
$LN1@stbi__pnm_:
; 8416 : }
0006f 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00076 5f pop rdi
00077 5d pop rbp
00078 c3 ret 0
stbi__pnm_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_info
_TEXT SEGMENT
s$ = 224
x$ = 232
y$ = 240
comp$ = 248
stbi__gif_info PROC ; COMDAT
; 7942 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 7943 : return stbi__gif_info_raw(s, x, y, comp);
0002f 4c 8b 8d f8 00
00 00 mov r9, QWORD PTR comp$[rbp]
00036 4c 8b 85 f0 00
00 00 mov r8, QWORD PTR y$[rbp]
0003d 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR x$[rbp]
00044 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0004b e8 00 00 00 00 call stbi__gif_info_raw
; 7944 : }
00050 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00057 5f pop rdi
00058 5d pop rbp
00059 c3 ret 0
stbi__gif_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__load_gif_main
_TEXT SEGMENT
layers$4 = 4
u$5 = 40
out$6 = 72
two_back$7 = 104
g$8 = 144
stride$9 = 35092
out_size$10 = 35124
delays_size$11 = 35156
tmp$12 = 35192
new_delays$13 = 35224
tv137 = 36776
tv211 = 36776
__$ArrayPad$ = 36784
s$ = 36832
delays$ = 36840
x$ = 36848
y$ = 36856
z$ = 36864
comp$ = 36872
req_comp$ = 36880
stbi__load_gif_main PROC ; COMDAT
; 7819 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 b8 f8 8f 00 00 mov eax, 36856 ; 00008ff8H
0001b e8 00 00 00 00 call __chkstk
00020 48 2b e0 sub rsp, rax
00023 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00028 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
0002d b9 72 22 00 00 mov ecx, 8818 ; 00002272H
00032 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00037 f3 ab rep stosd
00039 48 8b 8c 24 18
90 00 00 mov rcx, QWORD PTR [rsp+36888]
00041 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00048 48 33 c5 xor rax, rbp
0004b 48 89 85 b0 8f
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00052 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00059 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0005e 90 npad 1
; 7820 : if (stbi__gif_test(s)) {
0005f 48 8b 8d e0 8f
00 00 mov rcx, QWORD PTR s$[rbp]
00066 e8 00 00 00 00 call stbi__gif_test
0006b 85 c0 test eax, eax
0006d 0f 84 9a 03 00
00 je $LN5@stbi__load
; 7821 : int layers = 0;
00073 c7 45 04 00 00
00 00 mov DWORD PTR layers$4[rbp], 0
; 7822 : stbi_uc *u = 0;
0007a 48 c7 45 28 00
00 00 00 mov QWORD PTR u$5[rbp], 0
; 7823 : stbi_uc *out = 0;
00082 48 c7 45 48 00
00 00 00 mov QWORD PTR out$6[rbp], 0
; 7824 : stbi_uc *two_back = 0;
0008a 48 c7 45 68 00
00 00 00 mov QWORD PTR two_back$7[rbp], 0
; 7825 : stbi__gif g;
; 7826 : int stride;
; 7827 : int out_size = 0;
00092 c7 85 34 89 00
00 00 00 00 00 mov DWORD PTR out_size$10[rbp], 0
; 7828 : int delays_size = 0;
0009c c7 85 54 89 00
00 00 00 00 00 mov DWORD PTR delays_size$11[rbp], 0
; 7829 :
; 7830 : STBI_NOTUSED(out_size);
; 7831 : STBI_NOTUSED(delays_size);
; 7832 :
; 7833 : memset(&g, 0, sizeof(g));
000a6 41 b8 70 88 00
00 mov r8d, 34928 ; 00008870H
000ac 33 d2 xor edx, edx
000ae 48 8d 8d 90 00
00 00 lea rcx, QWORD PTR g$8[rbp]
000b5 e8 00 00 00 00 call memset
000ba 90 npad 1
; 7834 : if (delays) {
000bb 48 83 bd e8 8f
00 00 00 cmp QWORD PTR delays$[rbp], 0
000c3 74 0e je SHORT $LN7@stbi__load
; 7835 : *delays = 0;
000c5 48 8b 85 e8 8f
00 00 mov rax, QWORD PTR delays$[rbp]
000cc 48 c7 00 00 00
00 00 mov QWORD PTR [rax], 0
$LN7@stbi__load:
$LN4@stbi__load:
; 7836 : }
; 7837 :
; 7838 : do {
; 7839 : u = stbi__gif_load_next(s, &g, comp, req_comp, two_back);
000d3 48 8b 45 68 mov rax, QWORD PTR two_back$7[rbp]
000d7 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
000dc 44 8b 8d 10 90
00 00 mov r9d, DWORD PTR req_comp$[rbp]
000e3 4c 8b 85 08 90
00 00 mov r8, QWORD PTR comp$[rbp]
000ea 48 8d 95 90 00
00 00 lea rdx, QWORD PTR g$8[rbp]
000f1 48 8b 8d e0 8f
00 00 mov rcx, QWORD PTR s$[rbp]
000f8 e8 00 00 00 00 call stbi__gif_load_next
000fd 48 89 45 28 mov QWORD PTR u$5[rbp], rax
; 7840 : if (u == (stbi_uc *)s)
00101 48 8b 85 e0 8f
00 00 mov rax, QWORD PTR s$[rbp]
00108 48 39 45 28 cmp QWORD PTR u$5[rbp], rax
0010c 75 08 jne SHORT $LN8@stbi__load
; 7841 : u = 0; // end of animated gif marker
0010e 48 c7 45 28 00
00 00 00 mov QWORD PTR u$5[rbp], 0
$LN8@stbi__load:
; 7842 :
; 7843 : if (u) {
00116 48 83 7d 28 00 cmp QWORD PTR u$5[rbp], 0
0011b 0f 84 61 02 00
00 je $LN9@stbi__load
; 7844 : *x = g.w;
00121 48 8b 85 f0 8f
00 00 mov rax, QWORD PTR x$[rbp]
00128 8b 8d 90 00 00
00 mov ecx, DWORD PTR g$8[rbp]
0012e 89 08 mov DWORD PTR [rax], ecx
; 7845 : *y = g.h;
00130 48 8b 85 f8 8f
00 00 mov rax, QWORD PTR y$[rbp]
00137 8b 8d 94 00 00
00 mov ecx, DWORD PTR g$8[rbp+4]
0013d 89 08 mov DWORD PTR [rax], ecx
; 7846 : ++layers;
0013f 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
00142 ff c0 inc eax
00144 89 45 04 mov DWORD PTR layers$4[rbp], eax
; 7847 : stride = g.w * g.h * 4;
00147 8b 85 90 00 00
00 mov eax, DWORD PTR g$8[rbp]
0014d 0f af 85 94 00
00 00 imul eax, DWORD PTR g$8[rbp+4]
00154 c1 e0 02 shl eax, 2
00157 89 85 14 89 00
00 mov DWORD PTR stride$9[rbp], eax
; 7848 :
; 7849 : if (out) {
0015d 48 83 7d 48 00 cmp QWORD PTR out$6[rbp], 0
00162 0f 84 05 01 00
00 je $LN10@stbi__load
; 7850 : void *tmp = (stbi_uc *)STBI_REALLOC_SIZED(out, out_size,
00168 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
0016b 0f af 85 14 89
00 00 imul eax, DWORD PTR stride$9[rbp]
00172 48 98 cdqe
00174 48 c7 c1 ff ff
ff ff mov rcx, -1
0017b 48 0f 40 c1 cmovo rax, rcx
0017f 48 8b d0 mov rdx, rax
00182 48 8b 4d 48 mov rcx, QWORD PTR out$6[rbp]
00186 ff 15 00 00 00
00 call QWORD PTR __imp_realloc
0018c 48 89 85 78 89
00 00 mov QWORD PTR tmp$12[rbp], rax
; 7851 : layers * stride);
; 7852 : if (!tmp)
00193 48 83 bd 78 89
00 00 00 cmp QWORD PTR tmp$12[rbp], 0
0019b 75 1e jne SHORT $LN12@stbi__load
; 7853 : return stbi__load_gif_main_outofmem(&g, out,
0019d 4c 8b 85 e8 8f
00 00 mov r8, QWORD PTR delays$[rbp]
001a4 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
001a8 48 8d 8d 90 00
00 00 lea rcx, QWORD PTR g$8[rbp]
001af e8 00 00 00 00 call stbi__load_gif_main_outofmem
001b4 e9 83 02 00 00 jmp $LN1@stbi__load
001b9 eb 1b jmp SHORT $LN13@stbi__load
$LN12@stbi__load:
; 7854 : delays);
; 7855 : else {
; 7856 : out = (stbi_uc *)tmp;
001bb 48 8b 85 78 89
00 00 mov rax, QWORD PTR tmp$12[rbp]
001c2 48 89 45 48 mov QWORD PTR out$6[rbp], rax
; 7857 : out_size = layers * stride;
001c6 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
001c9 0f af 85 14 89
00 00 imul eax, DWORD PTR stride$9[rbp]
001d0 89 85 34 89 00
00 mov DWORD PTR out_size$10[rbp], eax
$LN13@stbi__load:
; 7858 : }
; 7859 :
; 7860 : if (delays) {
001d6 48 83 bd e8 8f
00 00 00 cmp QWORD PTR delays$[rbp], 0
001de 0f 84 84 00 00
00 je $LN14@stbi__load
; 7861 : int *new_delays = (int *)STBI_REALLOC_SIZED(
001e4 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
001e8 48 89 85 a8 8f
00 00 mov QWORD PTR tv137[rbp], rax
001ef b8 04 00 00 00 mov eax, 4
001f4 48 8b 8d a8 8f
00 00 mov rcx, QWORD PTR tv137[rbp]
001fb 48 f7 e1 mul rcx
001fe 48 c7 c1 ff ff
ff ff mov rcx, -1
00205 48 0f 42 c1 cmovb rax, rcx
00209 48 8b d0 mov rdx, rax
0020c 48 8b 85 e8 8f
00 00 mov rax, QWORD PTR delays$[rbp]
00213 48 8b 08 mov rcx, QWORD PTR [rax]
00216 ff 15 00 00 00
00 call QWORD PTR __imp_realloc
0021c 48 89 85 98 89
00 00 mov QWORD PTR new_delays$13[rbp], rax
; 7862 : *delays, delays_size, sizeof(int) * layers);
; 7863 : if (!new_delays)
00223 48 83 bd 98 89
00 00 00 cmp QWORD PTR new_delays$13[rbp], 0
0022b 75 1c jne SHORT $LN15@stbi__load
; 7864 : return stbi__load_gif_main_outofmem(&g, out,
0022d 4c 8b 85 e8 8f
00 00 mov r8, QWORD PTR delays$[rbp]
00234 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
00238 48 8d 8d 90 00
00 00 lea rcx, QWORD PTR g$8[rbp]
0023f e8 00 00 00 00 call stbi__load_gif_main_outofmem
00244 e9 f3 01 00 00 jmp $LN1@stbi__load
$LN15@stbi__load:
; 7865 : delays);
; 7866 : *delays = new_delays;
00249 48 8b 85 e8 8f
00 00 mov rax, QWORD PTR delays$[rbp]
00250 48 8b 8d 98 89
00 00 mov rcx, QWORD PTR new_delays$13[rbp]
00257 48 89 08 mov QWORD PTR [rax], rcx
; 7867 : delays_size = layers * sizeof(int);
0025a 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
0025e 48 c1 e0 02 shl rax, 2
00262 89 85 54 89 00
00 mov DWORD PTR delays_size$11[rbp], eax
$LN14@stbi__load:
; 7868 : }
; 7869 : } else {
00268 e9 a6 00 00 00 jmp $LN11@stbi__load
$LN10@stbi__load:
; 7870 : out = (stbi_uc *)stbi__malloc(layers * stride);
0026d 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
00270 0f af 85 14 89
00 00 imul eax, DWORD PTR stride$9[rbp]
00277 48 98 cdqe
00279 48 8b c8 mov rcx, rax
0027c e8 00 00 00 00 call stbi__malloc
00281 48 89 45 48 mov QWORD PTR out$6[rbp], rax
; 7871 : if (!out)
00285 48 83 7d 48 00 cmp QWORD PTR out$6[rbp], 0
0028a 75 1c jne SHORT $LN16@stbi__load
; 7872 : return stbi__load_gif_main_outofmem(&g, out,
0028c 4c 8b 85 e8 8f
00 00 mov r8, QWORD PTR delays$[rbp]
00293 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
00297 48 8d 8d 90 00
00 00 lea rcx, QWORD PTR g$8[rbp]
0029e e8 00 00 00 00 call stbi__load_gif_main_outofmem
002a3 e9 94 01 00 00 jmp $LN1@stbi__load
$LN16@stbi__load:
; 7873 : delays);
; 7874 : out_size = layers * stride;
002a8 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
002ab 0f af 85 14 89
00 00 imul eax, DWORD PTR stride$9[rbp]
002b2 89 85 34 89 00
00 mov DWORD PTR out_size$10[rbp], eax
; 7875 : if (delays) {
002b8 48 83 bd e8 8f
00 00 00 cmp QWORD PTR delays$[rbp], 0
002c0 74 51 je SHORT $LN17@stbi__load
; 7876 : *delays = (int *)stbi__malloc(layers * sizeof(int));
002c2 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
002c6 48 c1 e0 02 shl rax, 2
002ca 48 8b c8 mov rcx, rax
002cd e8 00 00 00 00 call stbi__malloc
002d2 48 8b 8d e8 8f
00 00 mov rcx, QWORD PTR delays$[rbp]
002d9 48 89 01 mov QWORD PTR [rcx], rax
; 7877 : if (!*delays)
002dc 48 8b 85 e8 8f
00 00 mov rax, QWORD PTR delays$[rbp]
002e3 48 83 38 00 cmp QWORD PTR [rax], 0
002e7 75 1c jne SHORT $LN18@stbi__load
; 7878 : return stbi__load_gif_main_outofmem(&g, out,
002e9 4c 8b 85 e8 8f
00 00 mov r8, QWORD PTR delays$[rbp]
002f0 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
002f4 48 8d 8d 90 00
00 00 lea rcx, QWORD PTR g$8[rbp]
002fb e8 00 00 00 00 call stbi__load_gif_main_outofmem
00300 e9 37 01 00 00 jmp $LN1@stbi__load
$LN18@stbi__load:
; 7879 : delays);
; 7880 : delays_size = layers * sizeof(int);
00305 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
00309 48 c1 e0 02 shl rax, 2
0030d 89 85 54 89 00
00 mov DWORD PTR delays_size$11[rbp], eax
$LN17@stbi__load:
$LN11@stbi__load:
; 7881 : }
; 7882 : }
; 7883 : memcpy(out + ((layers - 1) * stride), u, stride);
00313 48 63 85 14 89
00 00 movsxd rax, DWORD PTR stride$9[rbp]
0031a 8b 4d 04 mov ecx, DWORD PTR layers$4[rbp]
0031d ff c9 dec ecx
0031f 0f af 8d 14 89
00 00 imul ecx, DWORD PTR stride$9[rbp]
00326 48 63 c9 movsxd rcx, ecx
00329 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
0032d 48 03 d1 add rdx, rcx
00330 48 8b ca mov rcx, rdx
00333 4c 8b c0 mov r8, rax
00336 48 8b 55 28 mov rdx, QWORD PTR u$5[rbp]
0033a e8 00 00 00 00 call memcpy
0033f 90 npad 1
; 7884 : if (layers >= 2) {
00340 83 7d 04 02 cmp DWORD PTR layers$4[rbp], 2
00344 7c 18 jl SHORT $LN19@stbi__load
; 7885 : two_back = out - 2 * stride;
00346 8b 85 14 89 00
00 mov eax, DWORD PTR stride$9[rbp]
0034c d1 e0 shl eax, 1
0034e 48 98 cdqe
00350 48 8b 4d 48 mov rcx, QWORD PTR out$6[rbp]
00354 48 2b c8 sub rcx, rax
00357 48 8b c1 mov rax, rcx
0035a 48 89 45 68 mov QWORD PTR two_back$7[rbp], rax
$LN19@stbi__load:
; 7886 : }
; 7887 :
; 7888 : if (delays) {
0035e 48 83 bd e8 8f
00 00 00 cmp QWORD PTR delays$[rbp], 0
00366 74 1a je SHORT $LN20@stbi__load
; 7889 : (*delays)[layers - 1U] = g.delay;
00368 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
0036b ff c8 dec eax
0036d 8b c0 mov eax, eax
0036f 48 8b 8d e8 8f
00 00 mov rcx, QWORD PTR delays$[rbp]
00376 48 8b 09 mov rcx, QWORD PTR [rcx]
00379 8b 95 f8 88 00
00 mov edx, DWORD PTR g$8[rbp+34920]
0037f 89 14 81 mov DWORD PTR [rcx+rax*4], edx
$LN20@stbi__load:
$LN9@stbi__load:
; 7890 : }
; 7891 : }
; 7892 : } while (u != 0);
00382 48 83 7d 28 00 cmp QWORD PTR u$5[rbp], 0
00387 0f 85 46 fd ff
ff jne $LN4@stbi__load
; 7893 :
; 7894 : // free temp buffer;
; 7895 : STBI_FREE(g.out);
0038d 48 8b 8d 98 00
00 00 mov rcx, QWORD PTR g$8[rbp+8]
00394 ff 15 00 00 00
00 call QWORD PTR __imp_free
0039a 90 npad 1
; 7896 : STBI_FREE(g.history);
0039b 48 8b 8d a8 00
00 00 mov rcx, QWORD PTR g$8[rbp+24]
003a2 ff 15 00 00 00
00 call QWORD PTR __imp_free
003a8 90 npad 1
; 7897 : STBI_FREE(g.background);
003a9 48 8b 8d a0 00
00 00 mov rcx, QWORD PTR g$8[rbp+16]
003b0 ff 15 00 00 00
00 call QWORD PTR __imp_free
003b6 90 npad 1
; 7898 :
; 7899 : // do the final conversion after loading everything;
; 7900 : if (req_comp && req_comp != 4)
003b7 83 bd 10 90 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
003be 74 39 je SHORT $LN21@stbi__load
003c0 83 bd 10 90 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
003c7 74 30 je SHORT $LN21@stbi__load
; 7901 : out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h);
003c9 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
003cc 0f af 85 90 00
00 00 imul eax, DWORD PTR g$8[rbp]
003d3 8b 8d 94 00 00
00 mov ecx, DWORD PTR g$8[rbp+4]
003d9 89 4c 24 20 mov DWORD PTR [rsp+32], ecx
003dd 44 8b c8 mov r9d, eax
003e0 44 8b 85 10 90
00 00 mov r8d, DWORD PTR req_comp$[rbp]
003e7 ba 04 00 00 00 mov edx, 4
003ec 48 8b 4d 48 mov rcx, QWORD PTR out$6[rbp]
003f0 e8 00 00 00 00 call stbi__convert_format
003f5 48 89 45 48 mov QWORD PTR out$6[rbp], rax
$LN21@stbi__load:
; 7902 :
; 7903 : *z = layers;
003f9 48 8b 85 00 90
00 00 mov rax, QWORD PTR z$[rbp]
00400 8b 4d 04 mov ecx, DWORD PTR layers$4[rbp]
00403 89 08 mov DWORD PTR [rax], ecx
; 7904 : return out;
00405 48 8b 45 48 mov rax, QWORD PTR out$6[rbp]
00409 eb 31 jmp SHORT $LN1@stbi__load
; 7905 : } else {
0040b eb 2f jmp SHORT $LN6@stbi__load
$LN5@stbi__load:
; 7906 : return stbi__errpuc("not GIF", "Image was not as a gif type.");
0040d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
00414 e8 00 00 00 00 call stbi__err
00419 85 c0 test eax, eax
0041b 74 0d je SHORT $LN23@stbi__load
0041d 48 c7 85 a8 8f
00 00 00 00 00
00 mov QWORD PTR tv211[rbp], 0
00428 eb 0b jmp SHORT $LN24@stbi__load
$LN23@stbi__load:
0042a 48 c7 85 a8 8f
00 00 00 00 00
00 mov QWORD PTR tv211[rbp], 0
$LN24@stbi__load:
00435 48 8b 85 a8 8f
00 00 mov rax, QWORD PTR tv211[rbp]
$LN6@stbi__load:
$LN1@stbi__load:
; 7907 : }
; 7908 : }
0043c 48 8b f8 mov rdi, rax
0043f 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00443 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__load_gif_main$rtcFrameData
0044a e8 00 00 00 00 call _RTC_CheckStackVars
0044f 48 8b c7 mov rax, rdi
00452 48 8b 8d b0 8f
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00459 48 33 cd xor rcx, rbp
0045c e8 00 00 00 00 call __security_check_cookie
00461 48 8d a5 c8 8f
00 00 lea rsp, QWORD PTR [rbp+36808]
00468 5f pop rdi
00469 5d pop rbp
0046a c3 ret 0
stbi__load_gif_main ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_load
_TEXT SEGMENT
u$ = 8
g$ = 48
__$ArrayPad$ = 36520
s$ = 36560
x$ = 36568
y$ = 36576
comp$ = 36584
req_comp$ = 36592
ri$ = 36600
stbi__gif_load PROC ; COMDAT
; 7912 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 b8 e8 8e 00 00 mov eax, 36584 ; 00008ee8H
0001b e8 00 00 00 00 call __chkstk
00020 48 2b e0 sub rsp, rax
00023 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00028 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
0002d b9 2e 22 00 00 mov ecx, 8750 ; 0000222eH
00032 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00037 f3 ab rep stosd
00039 48 8b 8c 24 08
8f 00 00 mov rcx, QWORD PTR [rsp+36616]
00041 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00048 48 33 c5 xor rax, rbp
0004b 48 89 85 a8 8e
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00052 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00059 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0005e 90 npad 1
; 7913 : stbi_uc *u = 0;
0005f 48 c7 45 08 00
00 00 00 mov QWORD PTR u$[rbp], 0
; 7914 : stbi__gif g;
; 7915 : memset(&g, 0, sizeof(g));
00067 41 b8 70 88 00
00 mov r8d, 34928 ; 00008870H
0006d 33 d2 xor edx, edx
0006f 48 8d 4d 30 lea rcx, QWORD PTR g$[rbp]
00073 e8 00 00 00 00 call memset
00078 90 npad 1
; 7916 : STBI_NOTUSED(ri);
; 7917 :
; 7918 : u = stbi__gif_load_next(s, &g, comp, req_comp, 0);
00079 48 c7 44 24 20
00 00 00 00 mov QWORD PTR [rsp+32], 0
00082 44 8b 8d f0 8e
00 00 mov r9d, DWORD PTR req_comp$[rbp]
00089 4c 8b 85 e8 8e
00 00 mov r8, QWORD PTR comp$[rbp]
00090 48 8d 55 30 lea rdx, QWORD PTR g$[rbp]
00094 48 8b 8d d0 8e
00 00 mov rcx, QWORD PTR s$[rbp]
0009b e8 00 00 00 00 call stbi__gif_load_next
000a0 48 89 45 08 mov QWORD PTR u$[rbp], rax
; 7919 : if (u == (stbi_uc *)s)
000a4 48 8b 85 d0 8e
00 00 mov rax, QWORD PTR s$[rbp]
000ab 48 39 45 08 cmp QWORD PTR u$[rbp], rax
000af 75 08 jne SHORT $LN2@stbi__gif_
; 7920 : u = 0; // end of animated gif marker
000b1 48 c7 45 08 00
00 00 00 mov QWORD PTR u$[rbp], 0
$LN2@stbi__gif_:
; 7921 : if (u) {
000b9 48 83 7d 08 00 cmp QWORD PTR u$[rbp], 0
000be 74 50 je SHORT $LN3@stbi__gif_
; 7922 : *x = g.w;
000c0 48 8b 85 d8 8e
00 00 mov rax, QWORD PTR x$[rbp]
000c7 8b 4d 30 mov ecx, DWORD PTR g$[rbp]
000ca 89 08 mov DWORD PTR [rax], ecx
; 7923 : *y = g.h;
000cc 48 8b 85 e0 8e
00 00 mov rax, QWORD PTR y$[rbp]
000d3 8b 4d 34 mov ecx, DWORD PTR g$[rbp+4]
000d6 89 08 mov DWORD PTR [rax], ecx
; 7924 :
; 7925 : // moved conversion to after successful load so that the same
; 7926 : // can be done for multiple frames.
; 7927 : if (req_comp && req_comp != 4)
000d8 83 bd f0 8e 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
000df 74 2d je SHORT $LN5@stbi__gif_
000e1 83 bd f0 8e 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
000e8 74 24 je SHORT $LN5@stbi__gif_
; 7928 : u = stbi__convert_format(u, 4, req_comp, g.w, g.h);
000ea 8b 45 34 mov eax, DWORD PTR g$[rbp+4]
000ed 89 44 24 20 mov DWORD PTR [rsp+32], eax
000f1 44 8b 4d 30 mov r9d, DWORD PTR g$[rbp]
000f5 44 8b 85 f0 8e
00 00 mov r8d, DWORD PTR req_comp$[rbp]
000fc ba 04 00 00 00 mov edx, 4
00101 48 8b 4d 08 mov rcx, QWORD PTR u$[rbp]
00105 e8 00 00 00 00 call stbi__convert_format
0010a 48 89 45 08 mov QWORD PTR u$[rbp], rax
$LN5@stbi__gif_:
; 7929 : } else if (g.out) {
0010e eb 12 jmp SHORT $LN4@stbi__gif_
$LN3@stbi__gif_:
00110 48 83 7d 38 00 cmp QWORD PTR g$[rbp+8], 0
00115 74 0b je SHORT $LN6@stbi__gif_
; 7930 : // if there was an error and we allocated an image buffer, free it!
; 7931 : STBI_FREE(g.out);
00117 48 8b 4d 38 mov rcx, QWORD PTR g$[rbp+8]
0011b ff 15 00 00 00
00 call QWORD PTR __imp_free
00121 90 npad 1
$LN6@stbi__gif_:
$LN4@stbi__gif_:
; 7932 : }
; 7933 :
; 7934 : // free buffers needed for multiple frame loading;
; 7935 : STBI_FREE(g.history);
00122 48 8b 4d 48 mov rcx, QWORD PTR g$[rbp+24]
00126 ff 15 00 00 00
00 call QWORD PTR __imp_free
0012c 90 npad 1
; 7936 : STBI_FREE(g.background);
0012d 48 8b 4d 40 mov rcx, QWORD PTR g$[rbp+16]
00131 ff 15 00 00 00
00 call QWORD PTR __imp_free
00137 90 npad 1
; 7937 :
; 7938 : return u;
00138 48 8b 45 08 mov rax, QWORD PTR u$[rbp]
; 7939 : }
0013c 48 8b f8 mov rdi, rax
0013f 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00143 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__gif_load$rtcFrameData
0014a e8 00 00 00 00 call _RTC_CheckStackVars
0014f 48 8b c7 mov rax, rdi
00152 48 8b 8d a8 8e
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00159 48 33 cd xor rcx, rbp
0015c e8 00 00 00 00 call __security_check_cookie
00161 48 8d a5 b8 8e
00 00 lea rsp, QWORD PTR [rbp+36536]
00168 5f pop rdi
00169 5d pop rbp
0016a c3 ret 0
stbi__gif_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__gif_test
_TEXT SEGMENT
r$ = 4
s$ = 256
stbi__gif_test PROC ; COMDAT
; 7417 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 7418 : int r = stbi__gif_test_raw(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__gif_test_raw
0002c 89 45 04 mov DWORD PTR r$[rbp], eax
; 7419 : stbi__rewind(s);
0002f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__rewind
0003b 90 npad 1
; 7420 : return r;
0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 7421 : }
0003f 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00046 5f pop rdi
00047 5d pop rbp
00048 c3 ret 0
stbi__gif_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pic_info
_TEXT SEGMENT
act_comp$ = 4
num_packets$ = 36
chained$ = 68
dummy$ = 100
packets$ = 136
packet$5 = 200
tv152 = 404
__$ArrayPad$ = 408
s$ = 448
x$ = 456
y$ = 464
comp$ = 472
stbi__pic_info PROC ; COMDAT
; 8333 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec c8 01
00 00 sub rsp, 456 ; 000001c8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 e8
01 00 00 mov rcx, QWORD PTR [rsp+488]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 98 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8334 : int act_comp = 0, num_packets = 0, chained, dummy;
00059 c7 45 04 00 00
00 00 mov DWORD PTR act_comp$[rbp], 0
00060 c7 45 24 00 00
00 00 mov DWORD PTR num_packets$[rbp], 0
; 8335 : stbi__pic_packet packets[10];
; 8336 :
; 8337 : if (!x)
00067 48 83 bd c8 01
00 00 00 cmp QWORD PTR x$[rbp], 0
0006f 75 0b jne SHORT $LN5@stbi__pic_
; 8338 : x = &dummy;
00071 48 8d 45 64 lea rax, QWORD PTR dummy$[rbp]
00075 48 89 85 c8 01
00 00 mov QWORD PTR x$[rbp], rax
$LN5@stbi__pic_:
; 8339 : if (!y)
0007c 48 83 bd d0 01
00 00 00 cmp QWORD PTR y$[rbp], 0
00084 75 0b jne SHORT $LN6@stbi__pic_
; 8340 : y = &dummy;
00086 48 8d 45 64 lea rax, QWORD PTR dummy$[rbp]
0008a 48 89 85 d0 01
00 00 mov QWORD PTR y$[rbp], rax
$LN6@stbi__pic_:
; 8341 : if (!comp)
00091 48 83 bd d8 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
00099 75 0b jne SHORT $LN7@stbi__pic_
; 8342 : comp = &dummy;
0009b 48 8d 45 64 lea rax, QWORD PTR dummy$[rbp]
0009f 48 89 85 d8 01
00 00 mov QWORD PTR comp$[rbp], rax
$LN7@stbi__pic_:
; 8343 :
; 8344 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) {
000a6 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_04KBFEPHFH@S?$IA?v4@
000ad 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000b4 e8 00 00 00 00 call stbi__pic_is4
000b9 85 c0 test eax, eax
000bb 75 14 jne SHORT $LN8@stbi__pic_
; 8345 : stbi__rewind(s);
000bd 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c4 e8 00 00 00 00 call stbi__rewind
000c9 90 npad 1
; 8346 : return 0;
000ca 33 c0 xor eax, eax
000cc e9 c3 01 00 00 jmp $LN1@stbi__pic_
$LN8@stbi__pic_:
; 8347 : }
; 8348 :
; 8349 : stbi__skip(s, 88);
000d1 ba 58 00 00 00 mov edx, 88 ; 00000058H
000d6 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000dd e8 00 00 00 00 call stbi__skip
000e2 90 npad 1
; 8350 :
; 8351 : *x = stbi__get16be(s);
000e3 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000ea e8 00 00 00 00 call stbi__get16be
000ef 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR x$[rbp]
000f6 89 01 mov DWORD PTR [rcx], eax
; 8352 : *y = stbi__get16be(s);
000f8 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000ff e8 00 00 00 00 call stbi__get16be
00104 48 8b 8d d0 01
00 00 mov rcx, QWORD PTR y$[rbp]
0010b 89 01 mov DWORD PTR [rcx], eax
; 8353 : if (stbi__at_eof(s)) {
0010d 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00114 e8 00 00 00 00 call stbi__at_eof
00119 85 c0 test eax, eax
0011b 74 14 je SHORT $LN9@stbi__pic_
; 8354 : stbi__rewind(s);
0011d 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00124 e8 00 00 00 00 call stbi__rewind
00129 90 npad 1
; 8355 : return 0;
0012a 33 c0 xor eax, eax
0012c e9 63 01 00 00 jmp $LN1@stbi__pic_
$LN9@stbi__pic_:
; 8356 : }
; 8357 : if ((*x) != 0 && (1 << 28) / (*x) < (*y)) {
00131 48 8b 85 c8 01
00 00 mov rax, QWORD PTR x$[rbp]
00138 83 38 00 cmp DWORD PTR [rax], 0
0013b 74 2e je SHORT $LN10@stbi__pic_
0013d b8 00 00 00 10 mov eax, 268435456 ; 10000000H
00142 99 cdq
00143 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR x$[rbp]
0014a f7 39 idiv DWORD PTR [rcx]
0014c 48 8b 8d d0 01
00 00 mov rcx, QWORD PTR y$[rbp]
00153 3b 01 cmp eax, DWORD PTR [rcx]
00155 7d 14 jge SHORT $LN10@stbi__pic_
; 8358 : stbi__rewind(s);
00157 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
0015e e8 00 00 00 00 call stbi__rewind
00163 90 npad 1
; 8359 : return 0;
00164 33 c0 xor eax, eax
00166 e9 29 01 00 00 jmp $LN1@stbi__pic_
$LN10@stbi__pic_:
; 8360 : }
; 8361 :
; 8362 : stbi__skip(s, 8);
0016b ba 08 00 00 00 mov edx, 8
00170 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00177 e8 00 00 00 00 call stbi__skip
0017c 90 npad 1
$LN4@stbi__pic_:
; 8363 :
; 8364 : do {
; 8365 : stbi__pic_packet *packet;
; 8366 :
; 8367 : if (num_packets == sizeof(packets) / sizeof(packets[0]))
0017d 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
00181 48 83 f8 0a cmp rax, 10
00185 75 07 jne SHORT $LN11@stbi__pic_
; 8368 : return 0;
00187 33 c0 xor eax, eax
00189 e9 06 01 00 00 jmp $LN1@stbi__pic_
$LN11@stbi__pic_:
; 8369 :
; 8370 : packet = &packets[num_packets++];
0018e 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
00192 48 6b c0 03 imul rax, rax, 3
00196 48 8d 84 05 88
00 00 00 lea rax, QWORD PTR packets$[rbp+rax]
0019e 48 89 85 c8 00
00 00 mov QWORD PTR packet$5[rbp], rax
001a5 8b 45 24 mov eax, DWORD PTR num_packets$[rbp]
001a8 ff c0 inc eax
001aa 89 45 24 mov DWORD PTR num_packets$[rbp], eax
; 8371 : chained = stbi__get8(s);
001ad 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001b4 e8 00 00 00 00 call stbi__get8
001b9 0f b6 c0 movzx eax, al
001bc 89 45 44 mov DWORD PTR chained$[rbp], eax
; 8372 : packet->size = stbi__get8(s);
001bf 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001c6 e8 00 00 00 00 call stbi__get8
001cb 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR packet$5[rbp]
001d2 88 01 mov BYTE PTR [rcx], al
; 8373 : packet->type = stbi__get8(s);
001d4 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001db e8 00 00 00 00 call stbi__get8
001e0 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR packet$5[rbp]
001e7 88 41 01 mov BYTE PTR [rcx+1], al
; 8374 : packet->channel = stbi__get8(s);
001ea 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001f1 e8 00 00 00 00 call stbi__get8
001f6 48 8b 8d c8 00
00 00 mov rcx, QWORD PTR packet$5[rbp]
001fd 88 41 02 mov BYTE PTR [rcx+2], al
; 8375 : act_comp |= packet->channel;
00200 48 8b 85 c8 00
00 00 mov rax, QWORD PTR packet$5[rbp]
00207 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
0020b 8b 4d 04 mov ecx, DWORD PTR act_comp$[rbp]
0020e 0b c8 or ecx, eax
00210 8b c1 mov eax, ecx
00212 89 45 04 mov DWORD PTR act_comp$[rbp], eax
; 8376 :
; 8377 : if (stbi__at_eof(s)) {
00215 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
0021c e8 00 00 00 00 call stbi__at_eof
00221 85 c0 test eax, eax
00223 74 11 je SHORT $LN12@stbi__pic_
; 8378 : stbi__rewind(s);
00225 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
0022c e8 00 00 00 00 call stbi__rewind
00231 90 npad 1
; 8379 : return 0;
00232 33 c0 xor eax, eax
00234 eb 5e jmp SHORT $LN1@stbi__pic_
$LN12@stbi__pic_:
; 8380 : }
; 8381 : if (packet->size != 8) {
00236 48 8b 85 c8 00
00 00 mov rax, QWORD PTR packet$5[rbp]
0023d 0f b6 00 movzx eax, BYTE PTR [rax]
00240 83 f8 08 cmp eax, 8
00243 74 11 je SHORT $LN13@stbi__pic_
; 8382 : stbi__rewind(s);
00245 48 8b 8d c0 01
00 00 mov rcx, QWORD PTR s$[rbp]
0024c e8 00 00 00 00 call stbi__rewind
00251 90 npad 1
; 8383 : return 0;
00252 33 c0 xor eax, eax
00254 eb 3e jmp SHORT $LN1@stbi__pic_
$LN13@stbi__pic_:
; 8384 : }
; 8385 : } while (chained);
00256 83 7d 44 00 cmp DWORD PTR chained$[rbp], 0
0025a 0f 85 1d ff ff
ff jne $LN4@stbi__pic_
; 8386 :
; 8387 : *comp = (act_comp & 0x10 ? 4 : 3);
00260 8b 45 04 mov eax, DWORD PTR act_comp$[rbp]
00263 83 e0 10 and eax, 16
00266 85 c0 test eax, eax
00268 74 0c je SHORT $LN15@stbi__pic_
0026a c7 85 94 01 00
00 04 00 00 00 mov DWORD PTR tv152[rbp], 4
00274 eb 0a jmp SHORT $LN16@stbi__pic_
$LN15@stbi__pic_:
00276 c7 85 94 01 00
00 03 00 00 00 mov DWORD PTR tv152[rbp], 3
$LN16@stbi__pic_:
00280 48 8b 85 d8 01
00 00 mov rax, QWORD PTR comp$[rbp]
00287 8b 8d 94 01 00
00 mov ecx, DWORD PTR tv152[rbp]
0028d 89 08 mov DWORD PTR [rax], ecx
; 8388 :
; 8389 : return 1;
0028f b8 01 00 00 00 mov eax, 1
$LN1@stbi__pic_:
; 8390 : }
00294 48 8b f8 mov rdi, rax
00297 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0029b 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__pic_info$rtcFrameData
002a2 e8 00 00 00 00 call _RTC_CheckStackVars
002a7 48 8b c7 mov rax, rdi
002aa 48 8b 8d 98 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
002b1 48 33 cd xor rcx, rbp
002b4 e8 00 00 00 00 call __security_check_cookie
002b9 48 8d a5 a8 01
00 00 lea rsp, QWORD PTR [rbp+424]
002c0 5f pop rdi
002c1 5d pop rbp
002c2 c3 ret 0
stbi__pic_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pic_load
_TEXT SEGMENT
result$ = 8
i$ = 36
x$ = 68
y$ = 100
internal_comp$ = 132
tv76 = 344
tv81 = 344
tv88 = 344
tv130 = 344
tv143 = 344
__$ArrayPad$ = 352
s$ = 400
px$ = 408
py$ = 416
comp$ = 424
req_comp$ = 432
ri$ = 440
stbi__pic_load PROC ; COMDAT
; 7318 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 2e 00 00 00 mov ecx, 46 ; 0000002eH
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 c8
01 00 00 mov rcx, QWORD PTR [rsp+456]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 60 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 7319 : stbi_uc *result;
; 7320 : int i, x, y, internal_comp;
; 7321 : STBI_NOTUSED(ri);
; 7322 :
; 7323 : if (!comp)
00059 48 83 bd a8 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
00061 75 0e jne SHORT $LN5@stbi__pic_
; 7324 : comp = &internal_comp;
00063 48 8d 85 84 00
00 00 lea rax, QWORD PTR internal_comp$[rbp]
0006a 48 89 85 a8 01
00 00 mov QWORD PTR comp$[rbp], rax
$LN5@stbi__pic_:
; 7325 :
; 7326 : for (i = 0; i < 92; ++i)
00071 c7 45 24 00 00
00 00 mov DWORD PTR i$[rbp], 0
00078 eb 08 jmp SHORT $LN4@stbi__pic_
$LN2@stbi__pic_:
0007a 8b 45 24 mov eax, DWORD PTR i$[rbp]
0007d ff c0 inc eax
0007f 89 45 24 mov DWORD PTR i$[rbp], eax
$LN4@stbi__pic_:
00082 83 7d 24 5c cmp DWORD PTR i$[rbp], 92 ; 0000005cH
00086 7d 0f jge SHORT $LN3@stbi__pic_
; 7327 : stbi__get8(s);
00088 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
0008f e8 00 00 00 00 call stbi__get8
00094 90 npad 1
00095 eb e3 jmp SHORT $LN2@stbi__pic_
$LN3@stbi__pic_:
; 7328 :
; 7329 : x = stbi__get16be(s);
00097 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
0009e e8 00 00 00 00 call stbi__get16be
000a3 89 45 44 mov DWORD PTR x$[rbp], eax
; 7330 : y = stbi__get16be(s);
000a6 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
000ad e8 00 00 00 00 call stbi__get16be
000b2 89 45 64 mov DWORD PTR y$[rbp], eax
; 7331 :
; 7332 : if (y > STBI_MAX_DIMENSIONS)
000b5 81 7d 64 00 00
00 01 cmp DWORD PTR y$[rbp], 16777216 ; 01000000H
000bc 7e 34 jle SHORT $LN6@stbi__pic_
; 7333 : return stbi__errpuc("too large", "Very large image (corrupt?)");
000be 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
000c5 e8 00 00 00 00 call stbi__err
000ca 85 c0 test eax, eax
000cc 74 0d je SHORT $LN14@stbi__pic_
000ce 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv76[rbp], 0
000d9 eb 0b jmp SHORT $LN15@stbi__pic_
$LN14@stbi__pic_:
000db 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv76[rbp], 0
$LN15@stbi__pic_:
000e6 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv76[rbp]
000ed e9 f8 01 00 00 jmp $LN1@stbi__pic_
$LN6@stbi__pic_:
; 7334 : if (x > STBI_MAX_DIMENSIONS)
000f2 81 7d 44 00 00
00 01 cmp DWORD PTR x$[rbp], 16777216 ; 01000000H
000f9 7e 34 jle SHORT $LN7@stbi__pic_
; 7335 : return stbi__errpuc("too large", "Very large image (corrupt?)");
000fb 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00102 e8 00 00 00 00 call stbi__err
00107 85 c0 test eax, eax
00109 74 0d je SHORT $LN16@stbi__pic_
0010b 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv81[rbp], 0
00116 eb 0b jmp SHORT $LN17@stbi__pic_
$LN16@stbi__pic_:
00118 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv81[rbp], 0
$LN17@stbi__pic_:
00123 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv81[rbp]
0012a e9 bb 01 00 00 jmp $LN1@stbi__pic_
$LN7@stbi__pic_:
; 7336 :
; 7337 : if (stbi__at_eof(s))
0012f 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
00136 e8 00 00 00 00 call stbi__at_eof
0013b 85 c0 test eax, eax
0013d 74 34 je SHORT $LN8@stbi__pic_
; 7338 : return stbi__errpuc("bad file", "file too short (pic header)");
0013f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
00146 e8 00 00 00 00 call stbi__err
0014b 85 c0 test eax, eax
0014d 74 0d je SHORT $LN18@stbi__pic_
0014f 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv88[rbp], 0
0015a eb 0b jmp SHORT $LN19@stbi__pic_
$LN18@stbi__pic_:
0015c 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv88[rbp], 0
$LN19@stbi__pic_:
00167 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv88[rbp]
0016e e9 77 01 00 00 jmp $LN1@stbi__pic_
$LN8@stbi__pic_:
; 7339 : if (!stbi__mad3sizes_valid(x, y, 4, 0))
00173 45 33 c9 xor r9d, r9d
00176 41 b8 04 00 00
00 mov r8d, 4
0017c 8b 55 64 mov edx, DWORD PTR y$[rbp]
0017f 8b 4d 44 mov ecx, DWORD PTR x$[rbp]
00182 e8 00 00 00 00 call stbi__mad3sizes_valid
00187 85 c0 test eax, eax
00189 75 34 jne SHORT $LN9@stbi__pic_
; 7340 : return stbi__errpuc("too large", "PIC image too large to decode");
0018b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00192 e8 00 00 00 00 call stbi__err
00197 85 c0 test eax, eax
00199 74 0d je SHORT $LN20@stbi__pic_
0019b 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv130[rbp], 0
001a6 eb 0b jmp SHORT $LN21@stbi__pic_
$LN20@stbi__pic_:
001a8 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv130[rbp], 0
$LN21@stbi__pic_:
001b3 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv130[rbp]
001ba e9 2b 01 00 00 jmp $LN1@stbi__pic_
$LN9@stbi__pic_:
; 7341 :
; 7342 : stbi__get32be(s); //skip `ratio'
001bf 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
001c6 e8 00 00 00 00 call stbi__get32be
001cb 90 npad 1
; 7343 : stbi__get16be(s); //skip `fields'
001cc 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
001d3 e8 00 00 00 00 call stbi__get16be
001d8 90 npad 1
; 7344 : stbi__get16be(s); //skip `pad'
001d9 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
001e0 e8 00 00 00 00 call stbi__get16be
001e5 90 npad 1
; 7345 :
; 7346 : // intermediate buffer is RGBA
; 7347 : result = (stbi_uc *)stbi__malloc_mad3(x, y, 4, 0);
001e6 45 33 c9 xor r9d, r9d
001e9 41 b8 04 00 00
00 mov r8d, 4
001ef 8b 55 64 mov edx, DWORD PTR y$[rbp]
001f2 8b 4d 44 mov ecx, DWORD PTR x$[rbp]
001f5 e8 00 00 00 00 call stbi__malloc_mad3
001fa 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 7348 : if (!result)
001fe 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
00203 75 34 jne SHORT $LN10@stbi__pic_
; 7349 : return stbi__errpuc("outofmem", "Out of memory");
00205 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0020c e8 00 00 00 00 call stbi__err
00211 85 c0 test eax, eax
00213 74 0d je SHORT $LN22@stbi__pic_
00215 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv143[rbp], 0
00220 eb 0b jmp SHORT $LN23@stbi__pic_
$LN22@stbi__pic_:
00222 48 c7 85 58 01
00 00 00 00 00
00 mov QWORD PTR tv143[rbp], 0
$LN23@stbi__pic_:
0022d 48 8b 85 58 01
00 00 mov rax, QWORD PTR tv143[rbp]
00234 e9 b1 00 00 00 jmp $LN1@stbi__pic_
$LN10@stbi__pic_:
; 7350 : memset(result, 0xff, x * y * 4);
00239 8b 45 44 mov eax, DWORD PTR x$[rbp]
0023c 0f af 45 64 imul eax, DWORD PTR y$[rbp]
00240 c1 e0 02 shl eax, 2
00243 48 98 cdqe
00245 4c 8b c0 mov r8, rax
00248 ba ff 00 00 00 mov edx, 255 ; 000000ffH
0024d 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
00251 e8 00 00 00 00 call memset
00256 90 npad 1
; 7351 :
; 7352 : if (!stbi__pic_load_core(s, x, y, comp, result)) {
00257 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
0025b 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
00260 4c 8b 8d a8 01
00 00 mov r9, QWORD PTR comp$[rbp]
00267 44 8b 45 64 mov r8d, DWORD PTR y$[rbp]
0026b 8b 55 44 mov edx, DWORD PTR x$[rbp]
0026e 48 8b 8d 90 01
00 00 mov rcx, QWORD PTR s$[rbp]
00275 e8 00 00 00 00 call stbi__pic_load_core
0027a 48 85 c0 test rax, rax
0027d 75 13 jne SHORT $LN11@stbi__pic_
; 7353 : STBI_FREE(result);
0027f 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
00283 ff 15 00 00 00
00 call QWORD PTR __imp_free
00289 90 npad 1
; 7354 : result = 0;
0028a 48 c7 45 08 00
00 00 00 mov QWORD PTR result$[rbp], 0
$LN11@stbi__pic_:
; 7355 : }
; 7356 : *px = x;
00292 48 8b 85 98 01
00 00 mov rax, QWORD PTR px$[rbp]
00299 8b 4d 44 mov ecx, DWORD PTR x$[rbp]
0029c 89 08 mov DWORD PTR [rax], ecx
; 7357 : *py = y;
0029e 48 8b 85 a0 01
00 00 mov rax, QWORD PTR py$[rbp]
002a5 8b 4d 64 mov ecx, DWORD PTR y$[rbp]
002a8 89 08 mov DWORD PTR [rax], ecx
; 7358 : if (req_comp == 0)
002aa 83 bd b0 01 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
002b1 75 0f jne SHORT $LN12@stbi__pic_
; 7359 : req_comp = *comp;
002b3 48 8b 85 a8 01
00 00 mov rax, QWORD PTR comp$[rbp]
002ba 8b 00 mov eax, DWORD PTR [rax]
002bc 89 85 b0 01 00
00 mov DWORD PTR req_comp$[rbp], eax
$LN12@stbi__pic_:
; 7360 : result = stbi__convert_format(result, 4, req_comp, x, y);
002c2 8b 45 64 mov eax, DWORD PTR y$[rbp]
002c5 89 44 24 20 mov DWORD PTR [rsp+32], eax
002c9 44 8b 4d 44 mov r9d, DWORD PTR x$[rbp]
002cd 44 8b 85 b0 01
00 00 mov r8d, DWORD PTR req_comp$[rbp]
002d4 ba 04 00 00 00 mov edx, 4
002d9 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
002dd e8 00 00 00 00 call stbi__convert_format
002e2 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 7361 :
; 7362 : return result;
002e6 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
$LN1@stbi__pic_:
; 7363 : }
002ea 48 8b f8 mov rdi, rax
002ed 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
002f1 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__pic_load$rtcFrameData
002f8 e8 00 00 00 00 call _RTC_CheckStackVars
002fd 48 8b c7 mov rax, rdi
00300 48 8b 8d 60 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00307 48 33 cd xor rcx, rbp
0030a e8 00 00 00 00 call __security_check_cookie
0030f 48 8d a5 78 01
00 00 lea rsp, QWORD PTR [rbp+376]
00316 5f pop rdi
00317 5d pop rbp
00318 c3 ret 0
stbi__pic_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__pic_test
_TEXT SEGMENT
r$ = 4
s$ = 256
stbi__pic_test PROC ; COMDAT
; 7366 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 7367 : int r = stbi__pic_test_core(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__pic_test_core
0002c 89 45 04 mov DWORD PTR r$[rbp], eax
; 7368 : stbi__rewind(s);
0002f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__rewind
0003b 90 npad 1
; 7369 : return r;
0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 7370 : }
0003f 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00046 5f pop rdi
00047 5d pop rbp
00048 c3 ret 0
stbi__pic_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__hdr_info
_TEXT SEGMENT
buffer$ = 16
token$ = 1064
valid$ = 1092
dummy$ = 1124
__$ArrayPad$ = 1720
s$ = 1760
x$ = 1768
y$ = 1776
comp$ = 1784
stbi__hdr_info PROC ; COMDAT
; 8188 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 06
00 00 sub rsp, 1768 ; 000006e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 22 01 00 00 mov ecx, 290 ; 00000122H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 08
07 00 00 mov rcx, QWORD PTR [rsp+1800]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 b8 06
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8189 : char buffer[STBI__HDR_BUFLEN];
; 8190 : char *token;
; 8191 : int valid = 0;
00059 c7 85 44 04 00
00 00 00 00 00 mov DWORD PTR valid$[rbp], 0
; 8192 : int dummy;
; 8193 :
; 8194 : if (!x)
00063 48 83 bd e8 06
00 00 00 cmp QWORD PTR x$[rbp], 0
0006b 75 0e jne SHORT $LN7@stbi__hdr_
; 8195 : x = &dummy;
0006d 48 8d 85 64 04
00 00 lea rax, QWORD PTR dummy$[rbp]
00074 48 89 85 e8 06
00 00 mov QWORD PTR x$[rbp], rax
$LN7@stbi__hdr_:
; 8196 : if (!y)
0007b 48 83 bd f0 06
00 00 00 cmp QWORD PTR y$[rbp], 0
00083 75 0e jne SHORT $LN8@stbi__hdr_
; 8197 : y = &dummy;
00085 48 8d 85 64 04
00 00 lea rax, QWORD PTR dummy$[rbp]
0008c 48 89 85 f0 06
00 00 mov QWORD PTR y$[rbp], rax
$LN8@stbi__hdr_:
; 8198 : if (!comp)
00093 48 83 bd f8 06
00 00 00 cmp QWORD PTR comp$[rbp], 0
0009b 75 0e jne SHORT $LN9@stbi__hdr_
; 8199 : comp = &dummy;
0009d 48 8d 85 64 04
00 00 lea rax, QWORD PTR dummy$[rbp]
000a4 48 89 85 f8 06
00 00 mov QWORD PTR comp$[rbp], rax
$LN9@stbi__hdr_:
; 8200 :
; 8201 : if (stbi__hdr_test(s) == 0) {
000ab 48 8b 8d e0 06
00 00 mov rcx, QWORD PTR s$[rbp]
000b2 e8 00 00 00 00 call stbi__hdr_test
000b7 85 c0 test eax, eax
000b9 75 14 jne SHORT $LN10@stbi__hdr_
; 8202 : stbi__rewind(s);
000bb 48 8b 8d e0 06
00 00 mov rcx, QWORD PTR s$[rbp]
000c2 e8 00 00 00 00 call stbi__rewind
000c7 90 npad 1
; 8203 : return 0;
000c8 33 c0 xor eax, eax
000ca e9 82 01 00 00 jmp $LN1@stbi__hdr_
$LN10@stbi__hdr_:
$LN2@stbi__hdr_:
; 8204 : }
; 8205 :
; 8206 : for (;;) {
; 8207 : token = stbi__hdr_gettoken(s, buffer);
000cf 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
000d3 48 8b 8d e0 06
00 00 mov rcx, QWORD PTR s$[rbp]
000da e8 00 00 00 00 call stbi__hdr_gettoken
000df 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8208 : if (token[0] == 0)
000e6 b8 01 00 00 00 mov eax, 1
000eb 48 6b c0 00 imul rax, rax, 0
000ef 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
000f6 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
000fa 85 c0 test eax, eax
000fc 75 02 jne SHORT $LN11@stbi__hdr_
; 8209 : break;
000fe eb 23 jmp SHORT $LN3@stbi__hdr_
$LN11@stbi__hdr_:
; 8210 : if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0)
00100 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@
00107 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
0010e e8 00 00 00 00 call strcmp
00113 85 c0 test eax, eax
00115 75 0a jne SHORT $LN12@stbi__hdr_
; 8211 : valid = 1;
00117 c7 85 44 04 00
00 01 00 00 00 mov DWORD PTR valid$[rbp], 1
$LN12@stbi__hdr_:
; 8212 : }
00121 eb ac jmp SHORT $LN2@stbi__hdr_
$LN3@stbi__hdr_:
; 8213 :
; 8214 : if (!valid) {
00123 83 bd 44 04 00
00 00 cmp DWORD PTR valid$[rbp], 0
0012a 75 14 jne SHORT $LN13@stbi__hdr_
; 8215 : stbi__rewind(s);
0012c 48 8b 8d e0 06
00 00 mov rcx, QWORD PTR s$[rbp]
00133 e8 00 00 00 00 call stbi__rewind
00138 90 npad 1
; 8216 : return 0;
00139 33 c0 xor eax, eax
0013b e9 11 01 00 00 jmp $LN1@stbi__hdr_
$LN13@stbi__hdr_:
; 8217 : }
; 8218 : token = stbi__hdr_gettoken(s, buffer);
00140 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
00144 48 8b 8d e0 06
00 00 mov rcx, QWORD PTR s$[rbp]
0014b e8 00 00 00 00 call stbi__hdr_gettoken
00150 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8219 : if (strncmp(token, "-Y ", 3)) {
00157 41 b8 03 00 00
00 mov r8d, 3
0015d 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_03HKAKGGJN@?9Y?5@
00164 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
0016b ff 15 00 00 00
00 call QWORD PTR __imp_strncmp
00171 85 c0 test eax, eax
00173 74 14 je SHORT $LN14@stbi__hdr_
; 8220 : stbi__rewind(s);
00175 48 8b 8d e0 06
00 00 mov rcx, QWORD PTR s$[rbp]
0017c e8 00 00 00 00 call stbi__rewind
00181 90 npad 1
; 8221 : return 0;
00182 33 c0 xor eax, eax
00184 e9 c8 00 00 00 jmp $LN1@stbi__hdr_
$LN14@stbi__hdr_:
; 8222 : }
; 8223 : token += 3;
00189 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
00190 48 83 c0 03 add rax, 3
00194 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8224 : *y = (int)strtol(token, &token, 10);
0019b 41 b8 0a 00 00
00 mov r8d, 10
001a1 48 8d 95 28 04
00 00 lea rdx, QWORD PTR token$[rbp]
001a8 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
001af ff 15 00 00 00
00 call QWORD PTR __imp_strtol
001b5 48 8b 8d f0 06
00 00 mov rcx, QWORD PTR y$[rbp]
001bc 89 01 mov DWORD PTR [rcx], eax
$LN5@stbi__hdr_:
; 8225 : while (*token == ' ')
001be 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
001c5 0f be 00 movsx eax, BYTE PTR [rax]
001c8 83 f8 20 cmp eax, 32 ; 00000020H
001cb 75 13 jne SHORT $LN6@stbi__hdr_
; 8226 : ++token;
001cd 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
001d4 48 ff c0 inc rax
001d7 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
001de eb de jmp SHORT $LN5@stbi__hdr_
$LN6@stbi__hdr_:
; 8227 : if (strncmp(token, "+X ", 3)) {
001e0 41 b8 03 00 00
00 mov r8d, 3
001e6 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_03FOKDFDHG@?$CLX?5@
001ed 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
001f4 ff 15 00 00 00
00 call QWORD PTR __imp_strncmp
001fa 85 c0 test eax, eax
001fc 74 11 je SHORT $LN15@stbi__hdr_
; 8228 : stbi__rewind(s);
001fe 48 8b 8d e0 06
00 00 mov rcx, QWORD PTR s$[rbp]
00205 e8 00 00 00 00 call stbi__rewind
0020a 90 npad 1
; 8229 : return 0;
0020b 33 c0 xor eax, eax
0020d eb 42 jmp SHORT $LN1@stbi__hdr_
$LN15@stbi__hdr_:
; 8230 : }
; 8231 : token += 3;
0020f 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
00216 48 83 c0 03 add rax, 3
0021a 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8232 : *x = (int)strtol(token, NULL, 10);
00221 41 b8 0a 00 00
00 mov r8d, 10
00227 33 d2 xor edx, edx
00229 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
00230 ff 15 00 00 00
00 call QWORD PTR __imp_strtol
00236 48 8b 8d e8 06
00 00 mov rcx, QWORD PTR x$[rbp]
0023d 89 01 mov DWORD PTR [rcx], eax
; 8233 : *comp = 3;
0023f 48 8b 85 f8 06
00 00 mov rax, QWORD PTR comp$[rbp]
00246 c7 00 03 00 00
00 mov DWORD PTR [rax], 3
; 8234 : return 1;
0024c b8 01 00 00 00 mov eax, 1
$LN1@stbi__hdr_:
; 8235 : }
00251 48 8b f8 mov rdi, rax
00254 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00258 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__hdr_info$rtcFrameData
0025f e8 00 00 00 00 call _RTC_CheckStackVars
00264 48 8b c7 mov rax, rdi
00267 48 8b 8d b8 06
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0026e 48 33 cd xor rcx, rbp
00271 e8 00 00 00 00 call __security_check_cookie
00276 48 8d a5 c8 06
00 00 lea rsp, QWORD PTR [rbp+1736]
0027d 5f pop rdi
0027e 5d pop rbp
0027f c3 ret 0
stbi__hdr_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__hdr_load
_TEXT SEGMENT
buffer$ = 16
token$ = 1064
valid$ = 1092
width$ = 1124
height$ = 1156
scanline$ = 1192
hdr_data$ = 1224
len$ = 1252
count$ = 1284
value$ = 1316
i$ = 1348
j$ = 1380
k$ = 1412
c1$ = 1444
c2$ = 1476
z$ = 1508
headerToken$ = 1544
rgbe$7 = 1572
rgbe$8 = 1604
nleft$9 = 1636
tv309 = 2424
tv78 = 2424
tv94 = 2424
tv138 = 2424
tv155 = 2424
tv165 = 2424
tv170 = 2424
tv183 = 2424
tv194 = 2424
tv256 = 2424
tv267 = 2424
tv290 = 2424
__$ArrayPad$ = 2432
s$ = 2480
x$ = 2488
y$ = 2496
comp$ = 2504
req_comp$ = 2512
ri$ = 2520
stbi__hdr_load PROC ; COMDAT
; 8030 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec c8 09
00 00 sub rsp, 2504 ; 000009c8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 a6 01 00 00 mov ecx, 422 ; 000001a6H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 e8
09 00 00 mov rcx, QWORD PTR [rsp+2536]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 80 09
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8031 : char buffer[STBI__HDR_BUFLEN];
; 8032 : char *token;
; 8033 : int valid = 0;
00059 c7 85 44 04 00
00 00 00 00 00 mov DWORD PTR valid$[rbp], 0
; 8034 : int width, height;
; 8035 : stbi_uc *scanline;
; 8036 : float *hdr_data;
; 8037 : int len;
; 8038 : unsigned char count, value;
; 8039 : int i, j, k, c1, c2, z;
; 8040 : const char *headerToken;
; 8041 : STBI_NOTUSED(ri);
; 8042 :
; 8043 : // Check identifier
; 8044 : headerToken = stbi__hdr_gettoken(s, buffer);
00063 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
00067 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
0006e e8 00 00 00 00 call stbi__hdr_gettoken
00073 48 89 85 08 06
00 00 mov QWORD PTR headerToken$[rbp], rax
; 8045 : if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0)
0007a 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@
00081 48 8b 8d 08 06
00 00 mov rcx, QWORD PTR headerToken$[rbp]
00088 e8 00 00 00 00 call strcmp
0008d 85 c0 test eax, eax
0008f 74 4b je SHORT $LN30@stbi__hdr_
00091 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_06NDOKKIDJ@?$CD?$DPRGBE@
00098 48 8b 8d 08 06
00 00 mov rcx, QWORD PTR headerToken$[rbp]
0009f e8 00 00 00 00 call strcmp
000a4 85 c0 test eax, eax
000a6 74 34 je SHORT $LN30@stbi__hdr_
; 8046 : return stbi__errpf("not HDR", "Corrupt HDR image");
000a8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07NCIOKENI@not?5HDR@
000af e8 00 00 00 00 call stbi__err
000b4 85 c0 test eax, eax
000b6 74 0d je SHORT $LN58@stbi__hdr_
000b8 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv78[rbp], 0
000c3 eb 0b jmp SHORT $LN59@stbi__hdr_
$LN58@stbi__hdr_:
000c5 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv78[rbp], 0
$LN59@stbi__hdr_:
000d0 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv78[rbp]
000d7 e9 53 09 00 00 jmp $LN1@stbi__hdr_
$LN30@stbi__hdr_:
$LN2@stbi__hdr_:
; 8047 :
; 8048 : // Parse header
; 8049 : for (;;) {
; 8050 : token = stbi__hdr_gettoken(s, buffer);
000dc 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
000e0 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
000e7 e8 00 00 00 00 call stbi__hdr_gettoken
000ec 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8051 : if (token[0] == 0)
000f3 b8 01 00 00 00 mov eax, 1
000f8 48 6b c0 00 imul rax, rax, 0
000fc 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
00103 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
00107 85 c0 test eax, eax
00109 75 02 jne SHORT $LN31@stbi__hdr_
; 8052 : break;
0010b eb 23 jmp SHORT $LN3@stbi__hdr_
$LN31@stbi__hdr_:
; 8053 : if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0)
0010d 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@
00114 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
0011b e8 00 00 00 00 call strcmp
00120 85 c0 test eax, eax
00122 75 0a jne SHORT $LN32@stbi__hdr_
; 8054 : valid = 1;
00124 c7 85 44 04 00
00 01 00 00 00 mov DWORD PTR valid$[rbp], 1
$LN32@stbi__hdr_:
; 8055 : }
0012e eb ac jmp SHORT $LN2@stbi__hdr_
$LN3@stbi__hdr_:
; 8056 :
; 8057 : if (!valid)
00130 83 bd 44 04 00
00 00 cmp DWORD PTR valid$[rbp], 0
00137 75 34 jne SHORT $LN33@stbi__hdr_
; 8058 : return stbi__errpf("unsupported format", "Unsupported HDR format");
00139 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BD@NKJFFLKL@unsupported?5format@
00140 e8 00 00 00 00 call stbi__err
00145 85 c0 test eax, eax
00147 74 0d je SHORT $LN60@stbi__hdr_
00149 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv94[rbp], 0
00154 eb 0b jmp SHORT $LN61@stbi__hdr_
$LN60@stbi__hdr_:
00156 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv94[rbp], 0
$LN61@stbi__hdr_:
00161 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv94[rbp]
00168 e9 c2 08 00 00 jmp $LN1@stbi__hdr_
$LN33@stbi__hdr_:
; 8059 :
; 8060 : // Parse width and height
; 8061 : // can't use sscanf() if we're not using stdio!
; 8062 : token = stbi__hdr_gettoken(s, buffer);
0016d 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
00171 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
00178 e8 00 00 00 00 call stbi__hdr_gettoken
0017d 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8063 : if (strncmp(token, "-Y ", 3))
00184 41 b8 03 00 00
00 mov r8d, 3
0018a 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_03HKAKGGJN@?9Y?5@
00191 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
00198 ff 15 00 00 00
00 call QWORD PTR __imp_strncmp
0019e 85 c0 test eax, eax
001a0 74 34 je SHORT $LN34@stbi__hdr_
; 8064 : return stbi__errpf("unsupported data layout", "Unsupported HDR format");
001a2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@
001a9 e8 00 00 00 00 call stbi__err
001ae 85 c0 test eax, eax
001b0 74 0d je SHORT $LN62@stbi__hdr_
001b2 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv138[rbp], 0
001bd eb 0b jmp SHORT $LN63@stbi__hdr_
$LN62@stbi__hdr_:
001bf 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv138[rbp], 0
$LN63@stbi__hdr_:
001ca 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv138[rbp]
001d1 e9 59 08 00 00 jmp $LN1@stbi__hdr_
$LN34@stbi__hdr_:
; 8065 : token += 3;
001d6 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
001dd 48 83 c0 03 add rax, 3
001e1 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8066 : height = (int)strtol(token, &token, 10);
001e8 41 b8 0a 00 00
00 mov r8d, 10
001ee 48 8d 95 28 04
00 00 lea rdx, QWORD PTR token$[rbp]
001f5 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
001fc ff 15 00 00 00
00 call QWORD PTR __imp_strtol
00202 89 85 84 04 00
00 mov DWORD PTR height$[rbp], eax
$LN5@stbi__hdr_:
; 8067 : while (*token == ' ')
00208 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
0020f 0f be 00 movsx eax, BYTE PTR [rax]
00212 83 f8 20 cmp eax, 32 ; 00000020H
00215 75 13 jne SHORT $LN6@stbi__hdr_
; 8068 : ++token;
00217 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
0021e 48 ff c0 inc rax
00221 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
00228 eb de jmp SHORT $LN5@stbi__hdr_
$LN6@stbi__hdr_:
; 8069 : if (strncmp(token, "+X ", 3))
0022a 41 b8 03 00 00
00 mov r8d, 3
00230 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_03FOKDFDHG@?$CLX?5@
00237 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
0023e ff 15 00 00 00
00 call QWORD PTR __imp_strncmp
00244 85 c0 test eax, eax
00246 74 34 je SHORT $LN35@stbi__hdr_
; 8070 : return stbi__errpf("unsupported data layout", "Unsupported HDR format");
00248 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@
0024f e8 00 00 00 00 call stbi__err
00254 85 c0 test eax, eax
00256 74 0d je SHORT $LN64@stbi__hdr_
00258 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv155[rbp], 0
00263 eb 0b jmp SHORT $LN65@stbi__hdr_
$LN64@stbi__hdr_:
00265 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv155[rbp], 0
$LN65@stbi__hdr_:
00270 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv155[rbp]
00277 e9 b3 07 00 00 jmp $LN1@stbi__hdr_
$LN35@stbi__hdr_:
; 8071 : token += 3;
0027c 48 8b 85 28 04
00 00 mov rax, QWORD PTR token$[rbp]
00283 48 83 c0 03 add rax, 3
00287 48 89 85 28 04
00 00 mov QWORD PTR token$[rbp], rax
; 8072 : width = (int)strtol(token, NULL, 10);
0028e 41 b8 0a 00 00
00 mov r8d, 10
00294 33 d2 xor edx, edx
00296 48 8b 8d 28 04
00 00 mov rcx, QWORD PTR token$[rbp]
0029d ff 15 00 00 00
00 call QWORD PTR __imp_strtol
002a3 89 85 64 04 00
00 mov DWORD PTR width$[rbp], eax
; 8073 :
; 8074 : if (height > STBI_MAX_DIMENSIONS)
002a9 81 bd 84 04 00
00 00 00 00 01 cmp DWORD PTR height$[rbp], 16777216 ; 01000000H
002b3 7e 34 jle SHORT $LN36@stbi__hdr_
; 8075 : return stbi__errpf("too large", "Very large image (corrupt?)");
002b5 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
002bc e8 00 00 00 00 call stbi__err
002c1 85 c0 test eax, eax
002c3 74 0d je SHORT $LN66@stbi__hdr_
002c5 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv165[rbp], 0
002d0 eb 0b jmp SHORT $LN67@stbi__hdr_
$LN66@stbi__hdr_:
002d2 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv165[rbp], 0
$LN67@stbi__hdr_:
002dd 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv165[rbp]
002e4 e9 46 07 00 00 jmp $LN1@stbi__hdr_
$LN36@stbi__hdr_:
; 8076 : if (width > STBI_MAX_DIMENSIONS)
002e9 81 bd 64 04 00
00 00 00 00 01 cmp DWORD PTR width$[rbp], 16777216 ; 01000000H
002f3 7e 34 jle SHORT $LN37@stbi__hdr_
; 8077 : return stbi__errpf("too large", "Very large image (corrupt?)");
002f5 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
002fc e8 00 00 00 00 call stbi__err
00301 85 c0 test eax, eax
00303 74 0d je SHORT $LN68@stbi__hdr_
00305 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv170[rbp], 0
00310 eb 0b jmp SHORT $LN69@stbi__hdr_
$LN68@stbi__hdr_:
00312 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv170[rbp], 0
$LN69@stbi__hdr_:
0031d 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv170[rbp]
00324 e9 06 07 00 00 jmp $LN1@stbi__hdr_
$LN37@stbi__hdr_:
; 8078 :
; 8079 : *x = width;
00329 48 8b 85 b8 09
00 00 mov rax, QWORD PTR x$[rbp]
00330 8b 8d 64 04 00
00 mov ecx, DWORD PTR width$[rbp]
00336 89 08 mov DWORD PTR [rax], ecx
; 8080 : *y = height;
00338 48 8b 85 c0 09
00 00 mov rax, QWORD PTR y$[rbp]
0033f 8b 8d 84 04 00
00 mov ecx, DWORD PTR height$[rbp]
00345 89 08 mov DWORD PTR [rax], ecx
; 8081 :
; 8082 : if (comp)
00347 48 83 bd c8 09
00 00 00 cmp QWORD PTR comp$[rbp], 0
0034f 74 0d je SHORT $LN38@stbi__hdr_
; 8083 : *comp = 3;
00351 48 8b 85 c8 09
00 00 mov rax, QWORD PTR comp$[rbp]
00358 c7 00 03 00 00
00 mov DWORD PTR [rax], 3
$LN38@stbi__hdr_:
; 8084 : if (req_comp == 0)
0035e 83 bd d0 09 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
00365 75 0a jne SHORT $LN39@stbi__hdr_
; 8085 : req_comp = 3;
00367 c7 85 d0 09 00
00 03 00 00 00 mov DWORD PTR req_comp$[rbp], 3
$LN39@stbi__hdr_:
; 8086 :
; 8087 : if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0))
00371 c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
00379 41 b9 04 00 00
00 mov r9d, 4
0037f 44 8b 85 d0 09
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00386 8b 95 84 04 00
00 mov edx, DWORD PTR height$[rbp]
0038c 8b 8d 64 04 00
00 mov ecx, DWORD PTR width$[rbp]
00392 e8 00 00 00 00 call stbi__mad4sizes_valid
00397 85 c0 test eax, eax
00399 75 34 jne SHORT $LN40@stbi__hdr_
; 8088 : return stbi__errpf("too large", "HDR image is too large");
0039b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
003a2 e8 00 00 00 00 call stbi__err
003a7 85 c0 test eax, eax
003a9 74 0d je SHORT $LN70@stbi__hdr_
003ab 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv183[rbp], 0
003b6 eb 0b jmp SHORT $LN71@stbi__hdr_
$LN70@stbi__hdr_:
003b8 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv183[rbp], 0
$LN71@stbi__hdr_:
003c3 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv183[rbp]
003ca e9 60 06 00 00 jmp $LN1@stbi__hdr_
$LN40@stbi__hdr_:
; 8089 :
; 8090 : // Read data
; 8091 : hdr_data = (float *)stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0);
003cf c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
003d7 41 b9 04 00 00
00 mov r9d, 4
003dd 44 8b 85 d0 09
00 00 mov r8d, DWORD PTR req_comp$[rbp]
003e4 8b 95 84 04 00
00 mov edx, DWORD PTR height$[rbp]
003ea 8b 8d 64 04 00
00 mov ecx, DWORD PTR width$[rbp]
003f0 e8 00 00 00 00 call stbi__malloc_mad4
003f5 48 89 85 c8 04
00 00 mov QWORD PTR hdr_data$[rbp], rax
; 8092 : if (!hdr_data)
003fc 48 83 bd c8 04
00 00 00 cmp QWORD PTR hdr_data$[rbp], 0
00404 75 34 jne SHORT $LN41@stbi__hdr_
; 8093 : return stbi__errpf("outofmem", "Out of memory");
00406 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0040d e8 00 00 00 00 call stbi__err
00412 85 c0 test eax, eax
00414 74 0d je SHORT $LN72@stbi__hdr_
00416 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv194[rbp], 0
00421 eb 0b jmp SHORT $LN73@stbi__hdr_
$LN72@stbi__hdr_:
00423 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv194[rbp], 0
$LN73@stbi__hdr_:
0042e 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv194[rbp]
00435 e9 f5 05 00 00 jmp $LN1@stbi__hdr_
$LN41@stbi__hdr_:
; 8094 :
; 8095 : // Load image data
; 8096 : // image data is stored as some number of sca
; 8097 : if (width < 8 || width >= 32768) {
0043a 83 bd 64 04 00
00 08 cmp DWORD PTR width$[rbp], 8
00441 7c 10 jl SHORT $LN44@stbi__hdr_
00443 81 bd 64 04 00
00 00 80 00 00 cmp DWORD PTR width$[rbp], 32768 ; 00008000H
0044d 0f 8c c9 00 00
00 jl $LN42@stbi__hdr_
$LN44@stbi__hdr_:
; 8098 : // Read flat data
; 8099 : for (j = 0; j < height; ++j) {
00453 c7 85 64 05 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
0045d eb 0e jmp SHORT $LN9@stbi__hdr_
$LN7@stbi__hdr_:
0045f 8b 85 64 05 00
00 mov eax, DWORD PTR j$[rbp]
00465 ff c0 inc eax
00467 89 85 64 05 00
00 mov DWORD PTR j$[rbp], eax
$LN9@stbi__hdr_:
0046d 8b 85 84 04 00
00 mov eax, DWORD PTR height$[rbp]
00473 39 85 64 05 00
00 cmp DWORD PTR j$[rbp], eax
00479 0f 8d 98 00 00
00 jge $LN8@stbi__hdr_
; 8100 : for (i = 0; i < width; ++i) {
0047f c7 85 44 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00489 eb 0e jmp SHORT $LN12@stbi__hdr_
$LN10@stbi__hdr_:
0048b 8b 85 44 05 00
00 mov eax, DWORD PTR i$[rbp]
00491 ff c0 inc eax
00493 89 85 44 05 00
00 mov DWORD PTR i$[rbp], eax
$LN12@stbi__hdr_:
00499 8b 85 64 04 00
00 mov eax, DWORD PTR width$[rbp]
0049f 39 85 44 05 00
00 cmp DWORD PTR i$[rbp], eax
004a5 7d 6b jge SHORT $LN11@stbi__hdr_
$main_decode_loop$82:
; 8101 : stbi_uc rgbe[4];
; 8102 : main_decode_loop:
; 8103 : stbi__getn(s, rgbe, 4);
004a7 41 b8 04 00 00
00 mov r8d, 4
004ad 48 8d 95 24 06
00 00 lea rdx, QWORD PTR rgbe$7[rbp]
004b4 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
004bb e8 00 00 00 00 call stbi__getn
004c0 90 npad 1
; 8104 : stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp,
004c1 8b 85 64 05 00
00 mov eax, DWORD PTR j$[rbp]
004c7 0f af 85 64 04
00 00 imul eax, DWORD PTR width$[rbp]
004ce 0f af 85 d0 09
00 00 imul eax, DWORD PTR req_comp$[rbp]
004d5 48 98 cdqe
004d7 48 8b 8d c8 04
00 00 mov rcx, QWORD PTR hdr_data$[rbp]
004de 48 8d 04 81 lea rax, QWORD PTR [rcx+rax*4]
004e2 8b 8d 44 05 00
00 mov ecx, DWORD PTR i$[rbp]
004e8 0f af 8d d0 09
00 00 imul ecx, DWORD PTR req_comp$[rbp]
004ef 48 63 c9 movsxd rcx, ecx
004f2 48 8d 04 88 lea rax, QWORD PTR [rax+rcx*4]
004f6 44 8b 85 d0 09
00 00 mov r8d, DWORD PTR req_comp$[rbp]
004fd 48 8d 95 24 06
00 00 lea rdx, QWORD PTR rgbe$7[rbp]
00504 48 8b c8 mov rcx, rax
00507 e8 00 00 00 00 call stbi__hdr_convert
0050c 90 npad 1
; 8105 : rgbe, req_comp);
; 8106 : }
0050d e9 79 ff ff ff jmp $LN10@stbi__hdr_
$LN11@stbi__hdr_:
; 8107 : }
00512 e9 48 ff ff ff jmp $LN7@stbi__hdr_
$LN8@stbi__hdr_:
; 8108 : } else {
00517 e9 0c 05 00 00 jmp $LN43@stbi__hdr_
$LN42@stbi__hdr_:
; 8109 : // Read RLE-encoded data
; 8110 : scanline = NULL;
0051c 48 c7 85 a8 04
00 00 00 00 00
00 mov QWORD PTR scanline$[rbp], 0
; 8111 :
; 8112 : for (j = 0; j < height; ++j) {
00527 c7 85 64 05 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
00531 eb 0e jmp SHORT $LN15@stbi__hdr_
$LN13@stbi__hdr_:
00533 8b 85 64 05 00
00 mov eax, DWORD PTR j$[rbp]
00539 ff c0 inc eax
0053b 89 85 64 05 00
00 mov DWORD PTR j$[rbp], eax
$LN15@stbi__hdr_:
00541 8b 85 84 04 00
00 mov eax, DWORD PTR height$[rbp]
00547 39 85 64 05 00
00 cmp DWORD PTR j$[rbp], eax
0054d 0f 8d bd 04 00
00 jge $LN14@stbi__hdr_
; 8113 : c1 = stbi__get8(s);
00553 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
0055a e8 00 00 00 00 call stbi__get8
0055f 0f b6 c0 movzx eax, al
00562 89 85 a4 05 00
00 mov DWORD PTR c1$[rbp], eax
; 8114 : c2 = stbi__get8(s);
00568 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
0056f e8 00 00 00 00 call stbi__get8
00574 0f b6 c0 movzx eax, al
00577 89 85 c4 05 00
00 mov DWORD PTR c2$[rbp], eax
; 8115 : len = stbi__get8(s);
0057d 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
00584 e8 00 00 00 00 call stbi__get8
00589 0f b6 c0 movzx eax, al
0058c 89 85 e4 04 00
00 mov DWORD PTR len$[rbp], eax
; 8116 : if (c1 != 2 || c2 != 2 || (len & 0x80)) {
00592 83 bd a4 05 00
00 02 cmp DWORD PTR c1$[rbp], 2
00599 75 1c jne SHORT $LN46@stbi__hdr_
0059b 83 bd c4 05 00
00 02 cmp DWORD PTR c2$[rbp], 2
005a2 75 13 jne SHORT $LN46@stbi__hdr_
005a4 8b 85 e4 04 00
00 mov eax, DWORD PTR len$[rbp]
005aa 25 80 00 00 00 and eax, 128 ; 00000080H
005af 85 c0 test eax, eax
005b1 0f 84 a3 00 00
00 je $LN45@stbi__hdr_
$LN46@stbi__hdr_:
; 8117 : // not run-length encoded, so we have to actually use THIS data as a decoded
; 8118 : // pixel (note this can't be a valid pixel--one of RGB must be >= 128)
; 8119 : stbi_uc rgbe[4];
; 8120 : rgbe[0] = (stbi_uc)c1;
005b7 b8 01 00 00 00 mov eax, 1
005bc 48 6b c0 00 imul rax, rax, 0
005c0 0f b6 8d a4 05
00 00 movzx ecx, BYTE PTR c1$[rbp]
005c7 88 8c 05 44 06
00 00 mov BYTE PTR rgbe$8[rbp+rax], cl
; 8121 : rgbe[1] = (stbi_uc)c2;
005ce b8 01 00 00 00 mov eax, 1
005d3 48 6b c0 01 imul rax, rax, 1
005d7 0f b6 8d c4 05
00 00 movzx ecx, BYTE PTR c2$[rbp]
005de 88 8c 05 44 06
00 00 mov BYTE PTR rgbe$8[rbp+rax], cl
; 8122 : rgbe[2] = (stbi_uc)len;
005e5 b8 01 00 00 00 mov eax, 1
005ea 48 6b c0 02 imul rax, rax, 2
005ee 0f b6 8d e4 04
00 00 movzx ecx, BYTE PTR len$[rbp]
005f5 88 8c 05 44 06
00 00 mov BYTE PTR rgbe$8[rbp+rax], cl
; 8123 : rgbe[3] = (stbi_uc)stbi__get8(s);
005fc 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
00603 e8 00 00 00 00 call stbi__get8
00608 b9 01 00 00 00 mov ecx, 1
0060d 48 6b c9 03 imul rcx, rcx, 3
00611 88 84 0d 44 06
00 00 mov BYTE PTR rgbe$8[rbp+rcx], al
; 8124 : stbi__hdr_convert(hdr_data, rgbe, req_comp);
00618 44 8b 85 d0 09
00 00 mov r8d, DWORD PTR req_comp$[rbp]
0061f 48 8d 95 44 06
00 00 lea rdx, QWORD PTR rgbe$8[rbp]
00626 48 8b 8d c8 04
00 00 mov rcx, QWORD PTR hdr_data$[rbp]
0062d e8 00 00 00 00 call stbi__hdr_convert
00632 90 npad 1
; 8125 : i = 1;
00633 c7 85 44 05 00
00 01 00 00 00 mov DWORD PTR i$[rbp], 1
; 8126 : j = 0;
0063d c7 85 64 05 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
; 8127 : STBI_FREE(scanline);
00647 48 8b 8d a8 04
00 00 mov rcx, QWORD PTR scanline$[rbp]
0064e ff 15 00 00 00
00 call QWORD PTR __imp_free
00654 90 npad 1
; 8128 : goto main_decode_loop; // yes, this makes no sense
00655 e9 4d fe ff ff jmp $main_decode_loop$82
$LN45@stbi__hdr_:
; 8129 : }
; 8130 : len <<= 8;
0065a 8b 85 e4 04 00
00 mov eax, DWORD PTR len$[rbp]
00660 c1 e0 08 shl eax, 8
00663 89 85 e4 04 00
00 mov DWORD PTR len$[rbp], eax
; 8131 : len |= stbi__get8(s);
00669 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
00670 e8 00 00 00 00 call stbi__get8
00675 0f b6 c0 movzx eax, al
00678 8b 8d e4 04 00
00 mov ecx, DWORD PTR len$[rbp]
0067e 0b c8 or ecx, eax
00680 8b c1 mov eax, ecx
00682 89 85 e4 04 00
00 mov DWORD PTR len$[rbp], eax
; 8132 : if (len != width) {
00688 8b 85 64 04 00
00 mov eax, DWORD PTR width$[rbp]
0068e 39 85 e4 04 00
00 cmp DWORD PTR len$[rbp], eax
00694 74 50 je SHORT $LN47@stbi__hdr_
; 8133 : STBI_FREE(hdr_data);
00696 48 8b 8d c8 04
00 00 mov rcx, QWORD PTR hdr_data$[rbp]
0069d ff 15 00 00 00
00 call QWORD PTR __imp_free
006a3 90 npad 1
; 8134 : STBI_FREE(scanline);
006a4 48 8b 8d a8 04
00 00 mov rcx, QWORD PTR scanline$[rbp]
006ab ff 15 00 00 00
00 call QWORD PTR __imp_free
006b1 90 npad 1
; 8135 : return stbi__errpf("invalid decoded scanline length",
006b2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@
006b9 e8 00 00 00 00 call stbi__err
006be 85 c0 test eax, eax
006c0 74 0d je SHORT $LN74@stbi__hdr_
006c2 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv256[rbp], 0
006cd eb 0b jmp SHORT $LN75@stbi__hdr_
$LN74@stbi__hdr_:
006cf 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv256[rbp], 0
$LN75@stbi__hdr_:
006da 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv256[rbp]
006e1 e9 49 03 00 00 jmp $LN1@stbi__hdr_
$LN47@stbi__hdr_:
; 8136 : "corrupt HDR");
; 8137 : }
; 8138 : if (scanline == NULL) {
006e6 48 83 bd a8 04
00 00 00 cmp QWORD PTR scanline$[rbp], 0
006ee 75 66 jne SHORT $LN48@stbi__hdr_
; 8139 : scanline = (stbi_uc *)stbi__malloc_mad2(width, 4, 0);
006f0 45 33 c0 xor r8d, r8d
006f3 ba 04 00 00 00 mov edx, 4
006f8 8b 8d 64 04 00
00 mov ecx, DWORD PTR width$[rbp]
006fe e8 00 00 00 00 call stbi__malloc_mad2
00703 48 89 85 a8 04
00 00 mov QWORD PTR scanline$[rbp], rax
; 8140 : if (!scanline) {
0070a 48 83 bd a8 04
00 00 00 cmp QWORD PTR scanline$[rbp], 0
00712 75 42 jne SHORT $LN49@stbi__hdr_
; 8141 : STBI_FREE(hdr_data);
00714 48 8b 8d c8 04
00 00 mov rcx, QWORD PTR hdr_data$[rbp]
0071b ff 15 00 00 00
00 call QWORD PTR __imp_free
00721 90 npad 1
; 8142 : return stbi__errpf("outofmem", "Out of memory");
00722 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00729 e8 00 00 00 00 call stbi__err
0072e 85 c0 test eax, eax
00730 74 0d je SHORT $LN76@stbi__hdr_
00732 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv267[rbp], 0
0073d eb 0b jmp SHORT $LN77@stbi__hdr_
$LN76@stbi__hdr_:
0073f 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv267[rbp], 0
$LN77@stbi__hdr_:
0074a 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv267[rbp]
00751 e9 d9 02 00 00 jmp $LN1@stbi__hdr_
$LN49@stbi__hdr_:
$LN48@stbi__hdr_:
; 8143 : }
; 8144 : }
; 8145 :
; 8146 : for (k = 0; k < 4; ++k) {
00756 c7 85 84 05 00
00 00 00 00 00 mov DWORD PTR k$[rbp], 0
00760 eb 0e jmp SHORT $LN18@stbi__hdr_
$LN16@stbi__hdr_:
00762 8b 85 84 05 00
00 mov eax, DWORD PTR k$[rbp]
00768 ff c0 inc eax
0076a 89 85 84 05 00
00 mov DWORD PTR k$[rbp], eax
$LN18@stbi__hdr_:
00770 83 bd 84 05 00
00 04 cmp DWORD PTR k$[rbp], 4
00777 0f 8d 14 02 00
00 jge $LN17@stbi__hdr_
; 8147 : int nleft;
; 8148 : i = 0;
0077d c7 85 44 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
$LN19@stbi__hdr_:
; 8149 : while ((nleft = width - i) > 0) {
00787 8b 85 44 05 00
00 mov eax, DWORD PTR i$[rbp]
0078d 8b 8d 64 04 00
00 mov ecx, DWORD PTR width$[rbp]
00793 2b c8 sub ecx, eax
00795 8b c1 mov eax, ecx
00797 89 85 64 06 00
00 mov DWORD PTR nleft$9[rbp], eax
0079d 83 bd 64 06 00
00 00 cmp DWORD PTR nleft$9[rbp], 0
007a4 0f 8e e2 01 00
00 jle $LN20@stbi__hdr_
; 8150 : count = stbi__get8(s);
007aa 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
007b1 e8 00 00 00 00 call stbi__get8
007b6 88 85 04 05 00
00 mov BYTE PTR count$[rbp], al
; 8151 : if (count > 128) {
007bc 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
007c3 3d 80 00 00 00 cmp eax, 128 ; 00000080H
007c8 0f 8e ee 00 00
00 jle $LN50@stbi__hdr_
; 8152 : // Run
; 8153 : value = stbi__get8(s);
007ce 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
007d5 e8 00 00 00 00 call stbi__get8
007da 88 85 24 05 00
00 mov BYTE PTR value$[rbp], al
; 8154 : count -= 128;
007e0 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
007e7 2d 80 00 00 00 sub eax, 128 ; 00000080H
007ec 88 85 04 05 00
00 mov BYTE PTR count$[rbp], al
; 8155 : if ((count == 0) || (count > nleft)) {
007f2 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
007f9 85 c0 test eax, eax
007fb 74 0f je SHORT $LN53@stbi__hdr_
007fd 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
00804 3b 85 64 06 00
00 cmp eax, DWORD PTR nleft$9[rbp]
0080a 7e 50 jle SHORT $LN52@stbi__hdr_
$LN53@stbi__hdr_:
; 8156 : STBI_FREE(hdr_data);
0080c 48 8b 8d c8 04
00 00 mov rcx, QWORD PTR hdr_data$[rbp]
00813 ff 15 00 00 00
00 call QWORD PTR __imp_free
00819 90 npad 1
; 8157 : STBI_FREE(scanline);
0081a 48 8b 8d a8 04
00 00 mov rcx, QWORD PTR scanline$[rbp]
00821 ff 15 00 00 00
00 call QWORD PTR __imp_free
00827 90 npad 1
; 8158 : return stbi__errpf("corrupt",
00828 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@
0082f e8 00 00 00 00 call stbi__err
00834 85 c0 test eax, eax
00836 74 0d je SHORT $LN78@stbi__hdr_
00838 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv290[rbp], 0
00843 eb 0b jmp SHORT $LN79@stbi__hdr_
$LN78@stbi__hdr_:
00845 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv290[rbp], 0
$LN79@stbi__hdr_:
00850 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv290[rbp]
00857 e9 d3 01 00 00 jmp $LN1@stbi__hdr_
$LN52@stbi__hdr_:
; 8159 : "bad RLE data in HDR");
; 8160 : }
; 8161 : for (z = 0; z < count; ++z)
0085c c7 85 e4 05 00
00 00 00 00 00 mov DWORD PTR z$[rbp], 0
00866 eb 0e jmp SHORT $LN23@stbi__hdr_
$LN21@stbi__hdr_:
00868 8b 85 e4 05 00
00 mov eax, DWORD PTR z$[rbp]
0086e ff c0 inc eax
00870 89 85 e4 05 00
00 mov DWORD PTR z$[rbp], eax
$LN23@stbi__hdr_:
00876 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
0087d 39 85 e4 05 00
00 cmp DWORD PTR z$[rbp], eax
00883 7d 32 jge SHORT $LN22@stbi__hdr_
; 8162 : scanline[i++ * 4 + k] = value;
00885 8b 85 84 05 00
00 mov eax, DWORD PTR k$[rbp]
0088b 8b 8d 44 05 00
00 mov ecx, DWORD PTR i$[rbp]
00891 8d 04 88 lea eax, DWORD PTR [rax+rcx*4]
00894 48 98 cdqe
00896 48 8b 8d a8 04
00 00 mov rcx, QWORD PTR scanline$[rbp]
0089d 0f b6 95 24 05
00 00 movzx edx, BYTE PTR value$[rbp]
008a4 88 14 01 mov BYTE PTR [rcx+rax], dl
008a7 8b 85 44 05 00
00 mov eax, DWORD PTR i$[rbp]
008ad ff c0 inc eax
008af 89 85 44 05 00
00 mov DWORD PTR i$[rbp], eax
008b5 eb b1 jmp SHORT $LN21@stbi__hdr_
$LN22@stbi__hdr_:
; 8163 : } else {
008b7 e9 cb 00 00 00 jmp $LN51@stbi__hdr_
$LN50@stbi__hdr_:
; 8164 : // Dump
; 8165 : if ((count == 0) || (count > nleft)) {
008bc 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
008c3 85 c0 test eax, eax
008c5 74 0f je SHORT $LN55@stbi__hdr_
008c7 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
008ce 3b 85 64 06 00
00 cmp eax, DWORD PTR nleft$9[rbp]
008d4 7e 50 jle SHORT $LN54@stbi__hdr_
$LN55@stbi__hdr_:
; 8166 : STBI_FREE(hdr_data);
008d6 48 8b 8d c8 04
00 00 mov rcx, QWORD PTR hdr_data$[rbp]
008dd ff 15 00 00 00
00 call QWORD PTR __imp_free
008e3 90 npad 1
; 8167 : STBI_FREE(scanline);
008e4 48 8b 8d a8 04
00 00 mov rcx, QWORD PTR scanline$[rbp]
008eb ff 15 00 00 00
00 call QWORD PTR __imp_free
008f1 90 npad 1
; 8168 : return stbi__errpf("corrupt",
008f2 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@
008f9 e8 00 00 00 00 call stbi__err
008fe 85 c0 test eax, eax
00900 74 0d je SHORT $LN80@stbi__hdr_
00902 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv309[rbp], 0
0090d eb 0b jmp SHORT $LN81@stbi__hdr_
$LN80@stbi__hdr_:
0090f 48 c7 85 78 09
00 00 00 00 00
00 mov QWORD PTR tv309[rbp], 0
$LN81@stbi__hdr_:
0091a 48 8b 85 78 09
00 00 mov rax, QWORD PTR tv309[rbp]
00921 e9 09 01 00 00 jmp $LN1@stbi__hdr_
$LN54@stbi__hdr_:
; 8169 : "bad RLE data in HDR");
; 8170 : }
; 8171 : for (z = 0; z < count; ++z)
00926 c7 85 e4 05 00
00 00 00 00 00 mov DWORD PTR z$[rbp], 0
00930 eb 0e jmp SHORT $LN26@stbi__hdr_
$LN24@stbi__hdr_:
00932 8b 85 e4 05 00
00 mov eax, DWORD PTR z$[rbp]
00938 ff c0 inc eax
0093a 89 85 e4 05 00
00 mov DWORD PTR z$[rbp], eax
$LN26@stbi__hdr_:
00940 0f b6 85 04 05
00 00 movzx eax, BYTE PTR count$[rbp]
00947 39 85 e4 05 00
00 cmp DWORD PTR z$[rbp], eax
0094d 7d 38 jge SHORT $LN25@stbi__hdr_
; 8172 : scanline[i++ * 4 + k] = stbi__get8(s);
0094f 48 8b 8d b0 09
00 00 mov rcx, QWORD PTR s$[rbp]
00956 e8 00 00 00 00 call stbi__get8
0095b 8b 8d 84 05 00
00 mov ecx, DWORD PTR k$[rbp]
00961 8b 95 44 05 00
00 mov edx, DWORD PTR i$[rbp]
00967 8d 0c 91 lea ecx, DWORD PTR [rcx+rdx*4]
0096a 48 63 c9 movsxd rcx, ecx
0096d 48 8b 95 a8 04
00 00 mov rdx, QWORD PTR scanline$[rbp]
00974 88 04 0a mov BYTE PTR [rdx+rcx], al
00977 8b 85 44 05 00
00 mov eax, DWORD PTR i$[rbp]
0097d ff c0 inc eax
0097f 89 85 44 05 00
00 mov DWORD PTR i$[rbp], eax
00985 eb ab jmp SHORT $LN24@stbi__hdr_
$LN25@stbi__hdr_:
$LN51@stbi__hdr_:
; 8173 : }
; 8174 : }
00987 e9 fb fd ff ff jmp $LN19@stbi__hdr_
$LN20@stbi__hdr_:
; 8175 : }
0098c e9 d1 fd ff ff jmp $LN16@stbi__hdr_
$LN17@stbi__hdr_:
; 8176 : for (i = 0; i < width; ++i)
00991 c7 85 44 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
0099b eb 0e jmp SHORT $LN29@stbi__hdr_
$LN27@stbi__hdr_:
0099d 8b 85 44 05 00
00 mov eax, DWORD PTR i$[rbp]
009a3 ff c0 inc eax
009a5 89 85 44 05 00
00 mov DWORD PTR i$[rbp], eax
$LN29@stbi__hdr_:
009ab 8b 85 64 04 00
00 mov eax, DWORD PTR width$[rbp]
009b1 39 85 44 05 00
00 cmp DWORD PTR i$[rbp], eax
009b7 7d 52 jge SHORT $LN28@stbi__hdr_
; 8177 : stbi__hdr_convert(hdr_data + (j * width + i) * req_comp,
009b9 8b 85 44 05 00
00 mov eax, DWORD PTR i$[rbp]
009bf c1 e0 02 shl eax, 2
009c2 48 98 cdqe
009c4 48 8b 8d a8 04
00 00 mov rcx, QWORD PTR scanline$[rbp]
009cb 48 03 c8 add rcx, rax
009ce 48 8b c1 mov rax, rcx
009d1 8b 8d 64 05 00
00 mov ecx, DWORD PTR j$[rbp]
009d7 0f af 8d 64 04
00 00 imul ecx, DWORD PTR width$[rbp]
009de 03 8d 44 05 00
00 add ecx, DWORD PTR i$[rbp]
009e4 0f af 8d d0 09
00 00 imul ecx, DWORD PTR req_comp$[rbp]
009eb 48 63 c9 movsxd rcx, ecx
009ee 48 8b 95 c8 04
00 00 mov rdx, QWORD PTR hdr_data$[rbp]
009f5 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
009f9 44 8b 85 d0 09
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00a00 48 8b d0 mov rdx, rax
00a03 e8 00 00 00 00 call stbi__hdr_convert
00a08 90 npad 1
00a09 eb 92 jmp SHORT $LN27@stbi__hdr_
$LN28@stbi__hdr_:
; 8178 : scanline + i * 4, req_comp);
; 8179 : }
00a0b e9 23 fb ff ff jmp $LN13@stbi__hdr_
$LN14@stbi__hdr_:
; 8180 : if (scanline)
00a10 48 83 bd a8 04
00 00 00 cmp QWORD PTR scanline$[rbp], 0
00a18 74 0e je SHORT $LN56@stbi__hdr_
; 8181 : STBI_FREE(scanline);
00a1a 48 8b 8d a8 04
00 00 mov rcx, QWORD PTR scanline$[rbp]
00a21 ff 15 00 00 00
00 call QWORD PTR __imp_free
00a27 90 npad 1
$LN56@stbi__hdr_:
$LN43@stbi__hdr_:
; 8182 : }
; 8183 :
; 8184 : return hdr_data;
00a28 48 8b 85 c8 04
00 00 mov rax, QWORD PTR hdr_data$[rbp]
$LN1@stbi__hdr_:
; 8185 : }
00a2f 48 8b f8 mov rdi, rax
00a32 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00a36 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__hdr_load$rtcFrameData
00a3d e8 00 00 00 00 call _RTC_CheckStackVars
00a42 48 8b c7 mov rax, rdi
00a45 48 8b 8d 80 09
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00a4c 48 33 cd xor rcx, rbp
00a4f e8 00 00 00 00 call __security_check_cookie
00a54 48 8d a5 98 09
00 00 lea rsp, QWORD PTR [rbp+2456]
00a5b 5f pop rdi
00a5c 5d pop rbp
00a5d c3 ret 0
stbi__hdr_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__hdr_test
_TEXT SEGMENT
r$ = 4
s$ = 256
stbi__hdr_test PROC ; COMDAT
; 7962 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 7963 : int r = stbi__hdr_test_core(s, "#?RADIANCE\n");
00020 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@
00027 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0002e e8 00 00 00 00 call stbi__hdr_test_core
00033 89 45 04 mov DWORD PTR r$[rbp], eax
; 7964 : stbi__rewind(s);
00036 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0003d e8 00 00 00 00 call stbi__rewind
00042 90 npad 1
; 7965 : if (!r) {
00043 83 7d 04 00 cmp DWORD PTR r$[rbp], 0
00047 75 23 jne SHORT $LN2@stbi__hdr_
; 7966 : r = stbi__hdr_test_core(s, "#?RGBE\n");
00049 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@
00050 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00057 e8 00 00 00 00 call stbi__hdr_test_core
0005c 89 45 04 mov DWORD PTR r$[rbp], eax
; 7967 : stbi__rewind(s);
0005f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00066 e8 00 00 00 00 call stbi__rewind
0006b 90 npad 1
$LN2@stbi__hdr_:
; 7968 : }
; 7969 : return r;
0006c 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 7970 : }
0006f 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00076 5f pop rdi
00077 5d pop rbp
00078 c3 ret 0
stbi__hdr_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__psd_is16
_TEXT SEGMENT
channelCount$ = 4
depth$ = 36
s$ = 288
stbi__psd_is16 PROC ; COMDAT
; 8304 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 8305 : int channelCount, depth;
; 8306 : if (stbi__get32be(s) != 0x38425053) {
00020 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get32be
0002c 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
00031 74 14 je SHORT $LN2@stbi__psd_
; 8307 : stbi__rewind(s);
00033 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
0003a e8 00 00 00 00 call stbi__rewind
0003f 90 npad 1
; 8308 : return 0;
00040 33 c0 xor eax, eax
00042 e9 a8 00 00 00 jmp $LN1@stbi__psd_
$LN2@stbi__psd_:
; 8309 : }
; 8310 : if (stbi__get16be(s) != 1) {
00047 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
0004e e8 00 00 00 00 call stbi__get16be
00053 83 f8 01 cmp eax, 1
00056 74 14 je SHORT $LN3@stbi__psd_
; 8311 : stbi__rewind(s);
00058 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
0005f e8 00 00 00 00 call stbi__rewind
00064 90 npad 1
; 8312 : return 0;
00065 33 c0 xor eax, eax
00067 e9 83 00 00 00 jmp $LN1@stbi__psd_
$LN3@stbi__psd_:
; 8313 : }
; 8314 : stbi__skip(s, 6);
0006c ba 06 00 00 00 mov edx, 6
00071 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00078 e8 00 00 00 00 call stbi__skip
0007d 90 npad 1
; 8315 : channelCount = stbi__get16be(s);
0007e 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00085 e8 00 00 00 00 call stbi__get16be
0008a 89 45 04 mov DWORD PTR channelCount$[rbp], eax
; 8316 : if (channelCount < 0 || channelCount > 16) {
0008d 83 7d 04 00 cmp DWORD PTR channelCount$[rbp], 0
00091 7c 06 jl SHORT $LN5@stbi__psd_
00093 83 7d 04 10 cmp DWORD PTR channelCount$[rbp], 16
00097 7e 11 jle SHORT $LN4@stbi__psd_
$LN5@stbi__psd_:
; 8317 : stbi__rewind(s);
00099 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a0 e8 00 00 00 00 call stbi__rewind
000a5 90 npad 1
; 8318 : return 0;
000a6 33 c0 xor eax, eax
000a8 eb 45 jmp SHORT $LN1@stbi__psd_
$LN4@stbi__psd_:
; 8319 : }
; 8320 : STBI_NOTUSED(stbi__get32be(s));
000aa 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
000b1 e8 00 00 00 00 call stbi__get32be
000b6 90 npad 1
; 8321 : STBI_NOTUSED(stbi__get32be(s));
000b7 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
000be e8 00 00 00 00 call stbi__get32be
000c3 90 npad 1
; 8322 : depth = stbi__get16be(s);
000c4 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
000cb e8 00 00 00 00 call stbi__get16be
000d0 89 45 24 mov DWORD PTR depth$[rbp], eax
; 8323 : if (depth != 16) {
000d3 83 7d 24 10 cmp DWORD PTR depth$[rbp], 16
000d7 74 11 je SHORT $LN6@stbi__psd_
; 8324 : stbi__rewind(s);
000d9 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
000e0 e8 00 00 00 00 call stbi__rewind
000e5 90 npad 1
; 8325 : return 0;
000e6 33 c0 xor eax, eax
000e8 eb 05 jmp SHORT $LN1@stbi__psd_
$LN6@stbi__psd_:
; 8326 : }
; 8327 : return 1;
000ea b8 01 00 00 00 mov eax, 1
$LN1@stbi__psd_:
; 8328 : }
000ef 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000f6 5f pop rdi
000f7 5d pop rbp
000f8 c3 ret 0
stbi__psd_is16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__psd_info
_TEXT SEGMENT
channelCount$ = 4
dummy$ = 36
depth$ = 68
__$ArrayPad$ = 280
s$ = 320
x$ = 328
y$ = 336
comp$ = 344
stbi__psd_info PROC ; COMDAT
; 8266 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 1a 00 00 00 mov ecx, 26
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 68
01 00 00 mov rcx, QWORD PTR [rsp+360]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 18 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8267 : int channelCount, dummy, depth;
; 8268 : if (!x)
00059 48 83 bd 48 01
00 00 00 cmp QWORD PTR x$[rbp], 0
00061 75 0b jne SHORT $LN2@stbi__psd_
; 8269 : x = &dummy;
00063 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
00067 48 89 85 48 01
00 00 mov QWORD PTR x$[rbp], rax
$LN2@stbi__psd_:
; 8270 : if (!y)
0006e 48 83 bd 50 01
00 00 00 cmp QWORD PTR y$[rbp], 0
00076 75 0b jne SHORT $LN3@stbi__psd_
; 8271 : y = &dummy;
00078 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
0007c 48 89 85 50 01
00 00 mov QWORD PTR y$[rbp], rax
$LN3@stbi__psd_:
; 8272 : if (!comp)
00083 48 83 bd 58 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
0008b 75 0b jne SHORT $LN4@stbi__psd_
; 8273 : comp = &dummy;
0008d 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
00091 48 89 85 58 01
00 00 mov QWORD PTR comp$[rbp], rax
$LN4@stbi__psd_:
; 8274 : if (stbi__get32be(s) != 0x38425053) {
00098 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0009f e8 00 00 00 00 call stbi__get32be
000a4 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
000a9 74 14 je SHORT $LN5@stbi__psd_
; 8275 : stbi__rewind(s);
000ab 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000b2 e8 00 00 00 00 call stbi__rewind
000b7 90 npad 1
; 8276 : return 0;
000b8 33 c0 xor eax, eax
000ba e9 f0 00 00 00 jmp $LN1@stbi__psd_
$LN5@stbi__psd_:
; 8277 : }
; 8278 : if (stbi__get16be(s) != 1) {
000bf 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c6 e8 00 00 00 00 call stbi__get16be
000cb 83 f8 01 cmp eax, 1
000ce 74 14 je SHORT $LN6@stbi__psd_
; 8279 : stbi__rewind(s);
000d0 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000d7 e8 00 00 00 00 call stbi__rewind
000dc 90 npad 1
; 8280 : return 0;
000dd 33 c0 xor eax, eax
000df e9 cb 00 00 00 jmp $LN1@stbi__psd_
$LN6@stbi__psd_:
; 8281 : }
; 8282 : stbi__skip(s, 6);
000e4 ba 06 00 00 00 mov edx, 6
000e9 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000f0 e8 00 00 00 00 call stbi__skip
000f5 90 npad 1
; 8283 : channelCount = stbi__get16be(s);
000f6 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000fd e8 00 00 00 00 call stbi__get16be
00102 89 45 04 mov DWORD PTR channelCount$[rbp], eax
; 8284 : if (channelCount < 0 || channelCount > 16) {
00105 83 7d 04 00 cmp DWORD PTR channelCount$[rbp], 0
00109 7c 06 jl SHORT $LN8@stbi__psd_
0010b 83 7d 04 10 cmp DWORD PTR channelCount$[rbp], 16
0010f 7e 14 jle SHORT $LN7@stbi__psd_
$LN8@stbi__psd_:
; 8285 : stbi__rewind(s);
00111 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00118 e8 00 00 00 00 call stbi__rewind
0011d 90 npad 1
; 8286 : return 0;
0011e 33 c0 xor eax, eax
00120 e9 8a 00 00 00 jmp $LN1@stbi__psd_
$LN7@stbi__psd_:
; 8287 : }
; 8288 : *y = stbi__get32be(s);
00125 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0012c e8 00 00 00 00 call stbi__get32be
00131 48 8b 8d 50 01
00 00 mov rcx, QWORD PTR y$[rbp]
00138 89 01 mov DWORD PTR [rcx], eax
; 8289 : *x = stbi__get32be(s);
0013a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00141 e8 00 00 00 00 call stbi__get32be
00146 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR x$[rbp]
0014d 89 01 mov DWORD PTR [rcx], eax
; 8290 : depth = stbi__get16be(s);
0014f 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00156 e8 00 00 00 00 call stbi__get16be
0015b 89 45 44 mov DWORD PTR depth$[rbp], eax
; 8291 : if (depth != 8 && depth != 16) {
0015e 83 7d 44 08 cmp DWORD PTR depth$[rbp], 8
00162 74 17 je SHORT $LN9@stbi__psd_
00164 83 7d 44 10 cmp DWORD PTR depth$[rbp], 16
00168 74 11 je SHORT $LN9@stbi__psd_
; 8292 : stbi__rewind(s);
0016a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00171 e8 00 00 00 00 call stbi__rewind
00176 90 npad 1
; 8293 : return 0;
00177 33 c0 xor eax, eax
00179 eb 34 jmp SHORT $LN1@stbi__psd_
$LN9@stbi__psd_:
; 8294 : }
; 8295 : if (stbi__get16be(s) != 3) {
0017b 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00182 e8 00 00 00 00 call stbi__get16be
00187 83 f8 03 cmp eax, 3
0018a 74 11 je SHORT $LN10@stbi__psd_
; 8296 : stbi__rewind(s);
0018c 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00193 e8 00 00 00 00 call stbi__rewind
00198 90 npad 1
; 8297 : return 0;
00199 33 c0 xor eax, eax
0019b eb 12 jmp SHORT $LN1@stbi__psd_
$LN10@stbi__psd_:
; 8298 : }
; 8299 : *comp = 4;
0019d 48 8b 85 58 01
00 00 mov rax, QWORD PTR comp$[rbp]
001a4 c7 00 04 00 00
00 mov DWORD PTR [rax], 4
; 8300 : return 1;
001aa b8 01 00 00 00 mov eax, 1
$LN1@stbi__psd_:
; 8301 : }
001af 48 8b f8 mov rdi, rax
001b2 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
001b6 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__psd_info$rtcFrameData
001bd e8 00 00 00 00 call _RTC_CheckStackVars
001c2 48 8b c7 mov rax, rdi
001c5 48 8b 8d 18 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
001cc 48 33 cd xor rcx, rbp
001cf e8 00 00 00 00 call __security_check_cookie
001d4 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
001db 5f pop rdi
001dc 5d pop rbp
001dd c3 ret 0
stbi__psd_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__psd_load
_TEXT SEGMENT
pixelCount$ = 4
channelCount$ = 36
compression$ = 68
channel$ = 100
i$ = 132
bitdepth$ = 164
w$ = 196
h$ = 228
out$ = 264
p$1 = 296
q$2 = 328
val$3 = 356
p$4 = 392
val$5 = 420
q$6 = 456
p$7 = 488
pixel$8 = 520
a$9 = 548
ra$10 = 580
inv_a$11 = 612
pixel$12 = 648
a$13 = 676
ra$14 = 708
inv_a$15 = 740
tv241 = 1140
tv212 = 1140
tv233 = 1140
tv87 = 1144
tv128 = 1144
tv133 = 1144
tv141 = 1144
tv148 = 1144
tv167 = 1144
tv196 = 1144
tv70 = 1144
tv223 = 1144
tv77 = 1144
tv177 = 1144
s$ = 1184
x$ = 1192
y$ = 1200
comp$ = 1208
req_comp$ = 1216
ri$ = 1224
bpc$ = 1232
stbi__psd_load PROC ; COMDAT
; 6922 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec b8 04
00 00 sub rsp, 1208 ; 000004b8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 6923 : int pixelCount;
; 6924 : int channelCount, compression;
; 6925 : int channel, i;
; 6926 : int bitdepth;
; 6927 : int w, h;
; 6928 : stbi_uc *out;
; 6929 : STBI_NOTUSED(ri);
; 6930 :
; 6931 : // Check identifier
; 6932 : if (stbi__get32be(s) != 0x38425053) // "8BPS"
0002f 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__get32be
0003b 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
00040 74 34 je SHORT $LN32@stbi__psd_
; 6933 : return stbi__errpuc("not PSD", "Corrupt PSD image");
00042 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07ECNCNLIK@not?5PSD@
00049 e8 00 00 00 00 call stbi__err
0004e 85 c0 test eax, eax
00050 74 0d je SHORT $LN69@stbi__psd_
00052 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv70[rbp], 0
0005d eb 0b jmp SHORT $LN70@stbi__psd_
$LN69@stbi__psd_:
0005f 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv70[rbp], 0
$LN70@stbi__psd_:
0006a 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv70[rbp]
00071 e9 b7 0b 00 00 jmp $LN1@stbi__psd_
$LN32@stbi__psd_:
; 6934 :
; 6935 : // Check file type version.
; 6936 : if (stbi__get16be(s) != 1)
00076 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
0007d e8 00 00 00 00 call stbi__get16be
00082 83 f8 01 cmp eax, 1
00085 74 34 je SHORT $LN33@stbi__psd_
; 6937 : return stbi__errpuc("wrong version", "Unsupported version of PSD image");
00087 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0O@CHBCDKKC@wrong?5version@
0008e e8 00 00 00 00 call stbi__err
00093 85 c0 test eax, eax
00095 74 0d je SHORT $LN71@stbi__psd_
00097 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv77[rbp], 0
000a2 eb 0b jmp SHORT $LN72@stbi__psd_
$LN71@stbi__psd_:
000a4 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv77[rbp], 0
$LN72@stbi__psd_:
000af 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv77[rbp]
000b6 e9 72 0b 00 00 jmp $LN1@stbi__psd_
$LN33@stbi__psd_:
; 6938 :
; 6939 : // Skip 6 reserved bytes.
; 6940 : stbi__skip(s, 6);
000bb ba 06 00 00 00 mov edx, 6
000c0 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
000c7 e8 00 00 00 00 call stbi__skip
000cc 90 npad 1
; 6941 :
; 6942 : // Read the number of channels (R, G, B, A, etc).
; 6943 : channelCount = stbi__get16be(s);
000cd 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
000d4 e8 00 00 00 00 call stbi__get16be
000d9 89 45 24 mov DWORD PTR channelCount$[rbp], eax
; 6944 : if (channelCount < 0 || channelCount > 16)
000dc 83 7d 24 00 cmp DWORD PTR channelCount$[rbp], 0
000e0 7c 06 jl SHORT $LN35@stbi__psd_
000e2 83 7d 24 10 cmp DWORD PTR channelCount$[rbp], 16
000e6 7e 34 jle SHORT $LN34@stbi__psd_
$LN35@stbi__psd_:
; 6945 : return stbi__errpuc("wrong channel count",
000e8 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BE@PJBNGDBE@wrong?5channel?5count@
000ef e8 00 00 00 00 call stbi__err
000f4 85 c0 test eax, eax
000f6 74 0d je SHORT $LN73@stbi__psd_
000f8 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv87[rbp], 0
00103 eb 0b jmp SHORT $LN74@stbi__psd_
$LN73@stbi__psd_:
00105 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv87[rbp], 0
$LN74@stbi__psd_:
00110 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv87[rbp]
00117 e9 11 0b 00 00 jmp $LN1@stbi__psd_
$LN34@stbi__psd_:
; 6946 : "Unsupported number of channels in PSD image");
; 6947 :
; 6948 : // Read the rows and columns of the image.
; 6949 : h = stbi__get32be(s);
0011c 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
00123 e8 00 00 00 00 call stbi__get32be
00128 89 85 e4 00 00
00 mov DWORD PTR h$[rbp], eax
; 6950 : w = stbi__get32be(s);
0012e 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
00135 e8 00 00 00 00 call stbi__get32be
0013a 89 85 c4 00 00
00 mov DWORD PTR w$[rbp], eax
; 6951 :
; 6952 : if (h > STBI_MAX_DIMENSIONS)
00140 81 bd e4 00 00
00 00 00 00 01 cmp DWORD PTR h$[rbp], 16777216 ; 01000000H
0014a 7e 34 jle SHORT $LN36@stbi__psd_
; 6953 : return stbi__errpuc("too large", "Very large image (corrupt?)");
0014c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00153 e8 00 00 00 00 call stbi__err
00158 85 c0 test eax, eax
0015a 74 0d je SHORT $LN75@stbi__psd_
0015c 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv128[rbp], 0
00167 eb 0b jmp SHORT $LN76@stbi__psd_
$LN75@stbi__psd_:
00169 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv128[rbp], 0
$LN76@stbi__psd_:
00174 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv128[rbp]
0017b e9 ad 0a 00 00 jmp $LN1@stbi__psd_
$LN36@stbi__psd_:
; 6954 : if (w > STBI_MAX_DIMENSIONS)
00180 81 bd c4 00 00
00 00 00 00 01 cmp DWORD PTR w$[rbp], 16777216 ; 01000000H
0018a 7e 34 jle SHORT $LN37@stbi__psd_
; 6955 : return stbi__errpuc("too large", "Very large image (corrupt?)");
0018c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
00193 e8 00 00 00 00 call stbi__err
00198 85 c0 test eax, eax
0019a 74 0d je SHORT $LN77@stbi__psd_
0019c 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv133[rbp], 0
001a7 eb 0b jmp SHORT $LN78@stbi__psd_
$LN77@stbi__psd_:
001a9 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv133[rbp], 0
$LN78@stbi__psd_:
001b4 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv133[rbp]
001bb e9 6d 0a 00 00 jmp $LN1@stbi__psd_
$LN37@stbi__psd_:
; 6956 :
; 6957 : // Make sure the depth is 8 bits.
; 6958 : bitdepth = stbi__get16be(s);
001c0 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
001c7 e8 00 00 00 00 call stbi__get16be
001cc 89 85 a4 00 00
00 mov DWORD PTR bitdepth$[rbp], eax
; 6959 : if (bitdepth != 8 && bitdepth != 16)
001d2 83 bd a4 00 00
00 08 cmp DWORD PTR bitdepth$[rbp], 8
001d9 74 3d je SHORT $LN38@stbi__psd_
001db 83 bd a4 00 00
00 10 cmp DWORD PTR bitdepth$[rbp], 16
001e2 74 34 je SHORT $LN38@stbi__psd_
; 6960 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit");
001e4 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@
001eb e8 00 00 00 00 call stbi__err
001f0 85 c0 test eax, eax
001f2 74 0d je SHORT $LN79@stbi__psd_
001f4 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv141[rbp], 0
001ff eb 0b jmp SHORT $LN80@stbi__psd_
$LN79@stbi__psd_:
00201 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv141[rbp], 0
$LN80@stbi__psd_:
0020c 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv141[rbp]
00213 e9 15 0a 00 00 jmp $LN1@stbi__psd_
$LN38@stbi__psd_:
; 6961 :
; 6962 : // Make sure the color mode is RGB.
; 6963 : // Valid options are:
; 6964 : // 0: Bitmap
; 6965 : // 1: Grayscale
; 6966 : // 2: Indexed color
; 6967 : // 3: RGB color
; 6968 : // 4: CMYK color
; 6969 : // 7: Multichannel
; 6970 : // 8: Duotone
; 6971 : // 9: Lab color
; 6972 : if (stbi__get16be(s) != 3)
00218 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
0021f e8 00 00 00 00 call stbi__get16be
00224 83 f8 03 cmp eax, 3
00227 74 34 je SHORT $LN39@stbi__psd_
; 6973 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format");
00229 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BD@IOGGBMNK@wrong?5color?5format@
00230 e8 00 00 00 00 call stbi__err
00235 85 c0 test eax, eax
00237 74 0d je SHORT $LN81@stbi__psd_
00239 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv148[rbp], 0
00244 eb 0b jmp SHORT $LN82@stbi__psd_
$LN81@stbi__psd_:
00246 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv148[rbp], 0
$LN82@stbi__psd_:
00251 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv148[rbp]
00258 e9 d0 09 00 00 jmp $LN1@stbi__psd_
$LN39@stbi__psd_:
; 6974 :
; 6975 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.)
; 6976 : stbi__skip(s, stbi__get32be(s));
0025d 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
00264 e8 00 00 00 00 call stbi__get32be
00269 8b d0 mov edx, eax
0026b 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
00272 e8 00 00 00 00 call stbi__skip
00277 90 npad 1
; 6977 :
; 6978 : // Skip the image resources. (resolution, pen tool paths, etc)
; 6979 : stbi__skip(s, stbi__get32be(s));
00278 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
0027f e8 00 00 00 00 call stbi__get32be
00284 8b d0 mov edx, eax
00286 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
0028d e8 00 00 00 00 call stbi__skip
00292 90 npad 1
; 6980 :
; 6981 : // Skip the reserved data.
; 6982 : stbi__skip(s, stbi__get32be(s));
00293 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
0029a e8 00 00 00 00 call stbi__get32be
0029f 8b d0 mov edx, eax
002a1 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
002a8 e8 00 00 00 00 call stbi__skip
002ad 90 npad 1
; 6983 :
; 6984 : // Find out if the data is compressed.
; 6985 : // Known values:
; 6986 : // 0: no compression
; 6987 : // 1: RLE compressed
; 6988 : compression = stbi__get16be(s);
002ae 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
002b5 e8 00 00 00 00 call stbi__get16be
002ba 89 45 44 mov DWORD PTR compression$[rbp], eax
; 6989 : if (compression > 1)
002bd 83 7d 44 01 cmp DWORD PTR compression$[rbp], 1
002c1 7e 34 jle SHORT $LN40@stbi__psd_
; 6990 : return stbi__errpuc("bad compression", "PSD has an unknown compression format");
002c3 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MCNBDLPD@bad?5compression@
002ca e8 00 00 00 00 call stbi__err
002cf 85 c0 test eax, eax
002d1 74 0d je SHORT $LN83@stbi__psd_
002d3 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv167[rbp], 0
002de eb 0b jmp SHORT $LN84@stbi__psd_
$LN83@stbi__psd_:
002e0 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv167[rbp], 0
$LN84@stbi__psd_:
002eb 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv167[rbp]
002f2 e9 36 09 00 00 jmp $LN1@stbi__psd_
$LN40@stbi__psd_:
; 6991 :
; 6992 : // Check size
; 6993 : if (!stbi__mad3sizes_valid(4, w, h, 0))
002f7 45 33 c9 xor r9d, r9d
002fa 44 8b 85 e4 00
00 00 mov r8d, DWORD PTR h$[rbp]
00301 8b 95 c4 00 00
00 mov edx, DWORD PTR w$[rbp]
00307 b9 04 00 00 00 mov ecx, 4
0030c e8 00 00 00 00 call stbi__mad3sizes_valid
00311 85 c0 test eax, eax
00313 75 34 jne SHORT $LN41@stbi__psd_
; 6994 : return stbi__errpuc("too large", "Corrupt PSD");
00315 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
0031c e8 00 00 00 00 call stbi__err
00321 85 c0 test eax, eax
00323 74 0d je SHORT $LN85@stbi__psd_
00325 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv177[rbp], 0
00330 eb 0b jmp SHORT $LN86@stbi__psd_
$LN85@stbi__psd_:
00332 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv177[rbp], 0
$LN86@stbi__psd_:
0033d 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv177[rbp]
00344 e9 e4 08 00 00 jmp $LN1@stbi__psd_
$LN41@stbi__psd_:
; 6995 :
; 6996 : // Create the destination image.
; 6997 :
; 6998 : if (!compression && bitdepth == 16 && bpc == 16) {
00349 83 7d 44 00 cmp DWORD PTR compression$[rbp], 0
0034d 75 42 jne SHORT $LN42@stbi__psd_
0034f 83 bd a4 00 00
00 10 cmp DWORD PTR bitdepth$[rbp], 16
00356 75 39 jne SHORT $LN42@stbi__psd_
00358 83 bd d0 04 00
00 10 cmp DWORD PTR bpc$[rbp], 16
0035f 75 30 jne SHORT $LN42@stbi__psd_
; 6999 : out = (stbi_uc *)stbi__malloc_mad3(8, w, h, 0);
00361 45 33 c9 xor r9d, r9d
00364 44 8b 85 e4 00
00 00 mov r8d, DWORD PTR h$[rbp]
0036b 8b 95 c4 00 00
00 mov edx, DWORD PTR w$[rbp]
00371 b9 08 00 00 00 mov ecx, 8
00376 e8 00 00 00 00 call stbi__malloc_mad3
0037b 48 89 85 08 01
00 00 mov QWORD PTR out$[rbp], rax
; 7000 : ri->bits_per_channel = 16;
00382 48 8b 85 c8 04
00 00 mov rax, QWORD PTR ri$[rbp]
00389 c7 00 10 00 00
00 mov DWORD PTR [rax], 16
; 7001 : } else
0038f eb 21 jmp SHORT $LN43@stbi__psd_
$LN42@stbi__psd_:
; 7002 : out = (stbi_uc *)stbi__malloc(4 * w * h);
00391 8b 85 c4 00 00
00 mov eax, DWORD PTR w$[rbp]
00397 c1 e0 02 shl eax, 2
0039a 0f af 85 e4 00
00 00 imul eax, DWORD PTR h$[rbp]
003a1 48 98 cdqe
003a3 48 8b c8 mov rcx, rax
003a6 e8 00 00 00 00 call stbi__malloc
003ab 48 89 85 08 01
00 00 mov QWORD PTR out$[rbp], rax
$LN43@stbi__psd_:
; 7003 :
; 7004 : if (!out)
003b2 48 83 bd 08 01
00 00 00 cmp QWORD PTR out$[rbp], 0
003ba 75 34 jne SHORT $LN44@stbi__psd_
; 7005 : return stbi__errpuc("outofmem", "Out of memory");
003bc 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
003c3 e8 00 00 00 00 call stbi__err
003c8 85 c0 test eax, eax
003ca 74 0d je SHORT $LN87@stbi__psd_
003cc 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv196[rbp], 0
003d7 eb 0b jmp SHORT $LN88@stbi__psd_
$LN87@stbi__psd_:
003d9 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv196[rbp], 0
$LN88@stbi__psd_:
003e4 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv196[rbp]
003eb e9 3d 08 00 00 jmp $LN1@stbi__psd_
$LN44@stbi__psd_:
; 7006 : pixelCount = w * h;
003f0 8b 85 c4 00 00
00 mov eax, DWORD PTR w$[rbp]
003f6 0f af 85 e4 00
00 00 imul eax, DWORD PTR h$[rbp]
003fd 89 45 04 mov DWORD PTR pixelCount$[rbp], eax
; 7007 :
; 7008 : // Initialize the data to zero.
; 7009 : //memset( out, 0, pixelCount * 4 );
; 7010 :
; 7011 : // Finally, the image data.
; 7012 : if (compression) {
00400 83 7d 44 00 cmp DWORD PTR compression$[rbp], 0
00404 0f 84 24 01 00
00 je $LN45@stbi__psd_
; 7013 : // RLE as used by .PSD and .TIFF
; 7014 : // Loop until you get the number of unpacked bytes you are expecting:
; 7015 : // Read the next source byte into n.
; 7016 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.
; 7017 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.
; 7018 : // Else if n is 128, noop.
; 7019 : // Endloop
; 7020 :
; 7021 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data,
; 7022 : // which we're going to just skip.
; 7023 : stbi__skip(s, h * channelCount * 2);
0040a 8b 85 e4 00 00
00 mov eax, DWORD PTR h$[rbp]
00410 0f af 45 24 imul eax, DWORD PTR channelCount$[rbp]
00414 d1 e0 shl eax, 1
00416 8b d0 mov edx, eax
00418 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
0041f e8 00 00 00 00 call stbi__skip
00424 90 npad 1
; 7024 :
; 7025 : // Read the RLE data by channel.
; 7026 : for (channel = 0; channel < 4; channel++) {
00425 c7 45 64 00 00
00 00 mov DWORD PTR channel$[rbp], 0
0042c eb 08 jmp SHORT $LN4@stbi__psd_
$LN2@stbi__psd_:
0042e 8b 45 64 mov eax, DWORD PTR channel$[rbp]
00431 ff c0 inc eax
00433 89 45 64 mov DWORD PTR channel$[rbp], eax
$LN4@stbi__psd_:
00436 83 7d 64 04 cmp DWORD PTR channel$[rbp], 4
0043a 0f 8d e9 00 00
00 jge $LN3@stbi__psd_
; 7027 : stbi_uc *p;
; 7028 :
; 7029 : p = out + channel;
00440 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
00444 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
0044b 48 03 c8 add rcx, rax
0044e 48 8b c1 mov rax, rcx
00451 48 89 85 28 01
00 00 mov QWORD PTR p$1[rbp], rax
; 7030 : if (channel >= channelCount) {
00458 8b 45 24 mov eax, DWORD PTR channelCount$[rbp]
0045b 39 45 64 cmp DWORD PTR channel$[rbp], eax
0045e 7c 67 jl SHORT $LN47@stbi__psd_
; 7031 : // Fill this channel with default data.
; 7032 : for (i = 0; i < pixelCount; i++, p += 4)
00460 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
0046a eb 20 jmp SHORT $LN7@stbi__psd_
$LN5@stbi__psd_:
0046c 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
00472 ff c0 inc eax
00474 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
0047a 48 8b 85 28 01
00 00 mov rax, QWORD PTR p$1[rbp]
00481 48 83 c0 04 add rax, 4
00485 48 89 85 28 01
00 00 mov QWORD PTR p$1[rbp], rax
$LN7@stbi__psd_:
0048c 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
0048f 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
00495 7d 2e jge SHORT $LN6@stbi__psd_
; 7033 : *p = (channel == 3 ? 255 : 0);
00497 83 7d 64 03 cmp DWORD PTR channel$[rbp], 3
0049b 75 0c jne SHORT $LN89@stbi__psd_
0049d c7 85 74 04 00
00 ff 00 00 00 mov DWORD PTR tv212[rbp], 255 ; 000000ffH
004a7 eb 0a jmp SHORT $LN90@stbi__psd_
$LN89@stbi__psd_:
004a9 c7 85 74 04 00
00 00 00 00 00 mov DWORD PTR tv212[rbp], 0
$LN90@stbi__psd_:
004b3 48 8b 85 28 01
00 00 mov rax, QWORD PTR p$1[rbp]
004ba 0f b6 8d 74 04
00 00 movzx ecx, BYTE PTR tv212[rbp]
004c1 88 08 mov BYTE PTR [rax], cl
004c3 eb a7 jmp SHORT $LN5@stbi__psd_
$LN6@stbi__psd_:
; 7034 : } else {
004c5 eb 5d jmp SHORT $LN48@stbi__psd_
$LN47@stbi__psd_:
; 7035 : // Read the RLE data.
; 7036 : if (!stbi__psd_decode_rle(s, p, pixelCount)) {
004c7 44 8b 45 04 mov r8d, DWORD PTR pixelCount$[rbp]
004cb 48 8b 95 28 01
00 00 mov rdx, QWORD PTR p$1[rbp]
004d2 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
004d9 e8 00 00 00 00 call stbi__psd_decode_rle
004de 85 c0 test eax, eax
004e0 75 42 jne SHORT $LN49@stbi__psd_
; 7037 : STBI_FREE(out);
004e2 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
004e9 ff 15 00 00 00
00 call QWORD PTR __imp_free
004ef 90 npad 1
; 7038 : return stbi__errpuc("corrupt", "bad RLE data");
004f0 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@
004f7 e8 00 00 00 00 call stbi__err
004fc 85 c0 test eax, eax
004fe 74 0d je SHORT $LN91@stbi__psd_
00500 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv223[rbp], 0
0050b eb 0b jmp SHORT $LN92@stbi__psd_
$LN91@stbi__psd_:
0050d 48 c7 85 78 04
00 00 00 00 00
00 mov QWORD PTR tv223[rbp], 0
$LN92@stbi__psd_:
00518 48 8b 85 78 04
00 00 mov rax, QWORD PTR tv223[rbp]
0051f e9 09 07 00 00 jmp $LN1@stbi__psd_
$LN49@stbi__psd_:
$LN48@stbi__psd_:
; 7039 : }
; 7040 : }
; 7041 : }
00524 e9 05 ff ff ff jmp $LN2@stbi__psd_
$LN3@stbi__psd_:
; 7042 :
; 7043 : } else {
00529 e9 9c 02 00 00 jmp $LN46@stbi__psd_
$LN45@stbi__psd_:
; 7044 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...)
; 7045 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image.
; 7046 :
; 7047 : // Read the data by channel.
; 7048 : for (channel = 0; channel < 4; channel++) {
0052e c7 45 64 00 00
00 00 mov DWORD PTR channel$[rbp], 0
00535 eb 08 jmp SHORT $LN10@stbi__psd_
$LN8@stbi__psd_:
00537 8b 45 64 mov eax, DWORD PTR channel$[rbp]
0053a ff c0 inc eax
0053c 89 45 64 mov DWORD PTR channel$[rbp], eax
$LN10@stbi__psd_:
0053f 83 7d 64 04 cmp DWORD PTR channel$[rbp], 4
00543 0f 8d 81 02 00
00 jge $LN9@stbi__psd_
; 7049 : if (channel >= channelCount) {
00549 8b 45 24 mov eax, DWORD PTR channelCount$[rbp]
0054c 39 45 64 cmp DWORD PTR channel$[rbp], eax
0054f 0f 8c 38 01 00
00 jl $LN50@stbi__psd_
; 7050 : // Fill this channel with default data.
; 7051 : if (bitdepth == 16 && bpc == 16) {
00555 83 bd a4 00 00
00 10 cmp DWORD PTR bitdepth$[rbp], 16
0055c 0f 85 9c 00 00
00 jne $LN52@stbi__psd_
00562 83 bd d0 04 00
00 10 cmp DWORD PTR bpc$[rbp], 16
00569 0f 85 8f 00 00
00 jne $LN52@stbi__psd_
; 7052 : stbi__uint16 *q = ((stbi__uint16 *)out) + channel;
0056f 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
00573 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
0057a 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
0057e 48 89 85 48 01
00 00 mov QWORD PTR q$2[rbp], rax
; 7053 : stbi__uint16 val = channel == 3 ? 65535 : 0;
00585 83 7d 64 03 cmp DWORD PTR channel$[rbp], 3
00589 75 0c jne SHORT $LN93@stbi__psd_
0058b c7 85 74 04 00
00 ff ff 00 00 mov DWORD PTR tv233[rbp], 65535 ; 0000ffffH
00595 eb 0a jmp SHORT $LN94@stbi__psd_
$LN93@stbi__psd_:
00597 c7 85 74 04 00
00 00 00 00 00 mov DWORD PTR tv233[rbp], 0
$LN94@stbi__psd_:
005a1 0f b7 85 74 04
00 00 movzx eax, WORD PTR tv233[rbp]
005a8 66 89 85 64 01
00 00 mov WORD PTR val$3[rbp], ax
; 7054 : for (i = 0; i < pixelCount; i++, q += 4)
005af c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
005b9 eb 20 jmp SHORT $LN13@stbi__psd_
$LN11@stbi__psd_:
005bb 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
005c1 ff c0 inc eax
005c3 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
005c9 48 8b 85 48 01
00 00 mov rax, QWORD PTR q$2[rbp]
005d0 48 83 c0 08 add rax, 8
005d4 48 89 85 48 01
00 00 mov QWORD PTR q$2[rbp], rax
$LN13@stbi__psd_:
005db 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
005de 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
005e4 7d 13 jge SHORT $LN12@stbi__psd_
; 7055 : *q = val;
005e6 48 8b 85 48 01
00 00 mov rax, QWORD PTR q$2[rbp]
005ed 0f b7 8d 64 01
00 00 movzx ecx, WORD PTR val$3[rbp]
005f4 66 89 08 mov WORD PTR [rax], cx
005f7 eb c2 jmp SHORT $LN11@stbi__psd_
$LN12@stbi__psd_:
; 7056 : } else {
005f9 e9 8a 00 00 00 jmp $LN53@stbi__psd_
$LN52@stbi__psd_:
; 7057 : stbi_uc *p = out + channel;
005fe 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
00602 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
00609 48 03 c8 add rcx, rax
0060c 48 8b c1 mov rax, rcx
0060f 48 89 85 88 01
00 00 mov QWORD PTR p$4[rbp], rax
; 7058 : stbi_uc val = channel == 3 ? 255 : 0;
00616 83 7d 64 03 cmp DWORD PTR channel$[rbp], 3
0061a 75 0c jne SHORT $LN95@stbi__psd_
0061c c7 85 74 04 00
00 ff 00 00 00 mov DWORD PTR tv241[rbp], 255 ; 000000ffH
00626 eb 0a jmp SHORT $LN96@stbi__psd_
$LN95@stbi__psd_:
00628 c7 85 74 04 00
00 00 00 00 00 mov DWORD PTR tv241[rbp], 0
$LN96@stbi__psd_:
00632 0f b6 85 74 04
00 00 movzx eax, BYTE PTR tv241[rbp]
00639 88 85 a4 01 00
00 mov BYTE PTR val$5[rbp], al
; 7059 : for (i = 0; i < pixelCount; i++, p += 4)
0063f c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00649 eb 20 jmp SHORT $LN16@stbi__psd_
$LN14@stbi__psd_:
0064b 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
00651 ff c0 inc eax
00653 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
00659 48 8b 85 88 01
00 00 mov rax, QWORD PTR p$4[rbp]
00660 48 83 c0 04 add rax, 4
00664 48 89 85 88 01
00 00 mov QWORD PTR p$4[rbp], rax
$LN16@stbi__psd_:
0066b 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
0066e 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
00674 7d 12 jge SHORT $LN15@stbi__psd_
; 7060 : *p = val;
00676 48 8b 85 88 01
00 00 mov rax, QWORD PTR p$4[rbp]
0067d 0f b6 8d a4 01
00 00 movzx ecx, BYTE PTR val$5[rbp]
00684 88 08 mov BYTE PTR [rax], cl
00686 eb c3 jmp SHORT $LN14@stbi__psd_
$LN15@stbi__psd_:
$LN53@stbi__psd_:
; 7061 : }
; 7062 : } else {
00688 e9 38 01 00 00 jmp $LN51@stbi__psd_
$LN50@stbi__psd_:
; 7063 : if (ri->bits_per_channel == 16) { // output bpc
0068d 48 8b 85 c8 04
00 00 mov rax, QWORD PTR ri$[rbp]
00694 83 38 10 cmp DWORD PTR [rax], 16
00697 75 6a jne SHORT $LN54@stbi__psd_
; 7064 : stbi__uint16 *q = ((stbi__uint16 *)out) + channel;
00699 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
0069d 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
006a4 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
006a8 48 89 85 c8 01
00 00 mov QWORD PTR q$6[rbp], rax
; 7065 : for (i = 0; i < pixelCount; i++, q += 4)
006af c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
006b9 eb 20 jmp SHORT $LN19@stbi__psd_
$LN17@stbi__psd_:
006bb 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
006c1 ff c0 inc eax
006c3 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
006c9 48 8b 85 c8 01
00 00 mov rax, QWORD PTR q$6[rbp]
006d0 48 83 c0 08 add rax, 8
006d4 48 89 85 c8 01
00 00 mov QWORD PTR q$6[rbp], rax
$LN19@stbi__psd_:
006db 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
006de 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
006e4 7d 18 jge SHORT $LN18@stbi__psd_
; 7066 : *q = (stbi__uint16)stbi__get16be(s);
006e6 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
006ed e8 00 00 00 00 call stbi__get16be
006f2 48 8b 8d c8 01
00 00 mov rcx, QWORD PTR q$6[rbp]
006f9 66 89 01 mov WORD PTR [rcx], ax
006fc eb bd jmp SHORT $LN17@stbi__psd_
$LN18@stbi__psd_:
; 7067 : } else {
006fe e9 c2 00 00 00 jmp $LN55@stbi__psd_
$LN54@stbi__psd_:
; 7068 : stbi_uc *p = out + channel;
00703 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
00707 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
0070e 48 03 c8 add rcx, rax
00711 48 8b c1 mov rax, rcx
00714 48 89 85 e8 01
00 00 mov QWORD PTR p$7[rbp], rax
; 7069 : if (bitdepth == 16) { // input bpc
0071b 83 bd a4 00 00
00 10 cmp DWORD PTR bitdepth$[rbp], 16
00722 75 53 jne SHORT $LN56@stbi__psd_
; 7070 : for (i = 0; i < pixelCount; i++, p += 4)
00724 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
0072e eb 20 jmp SHORT $LN22@stbi__psd_
$LN20@stbi__psd_:
00730 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
00736 ff c0 inc eax
00738 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
0073e 48 8b 85 e8 01
00 00 mov rax, QWORD PTR p$7[rbp]
00745 48 83 c0 04 add rax, 4
00749 48 89 85 e8 01
00 00 mov QWORD PTR p$7[rbp], rax
$LN22@stbi__psd_:
00750 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
00753 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
00759 7d 1a jge SHORT $LN21@stbi__psd_
; 7071 : *p = (stbi_uc)(stbi__get16be(s) >> 8);
0075b 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
00762 e8 00 00 00 00 call stbi__get16be
00767 c1 f8 08 sar eax, 8
0076a 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR p$7[rbp]
00771 88 01 mov BYTE PTR [rcx], al
00773 eb bb jmp SHORT $LN20@stbi__psd_
$LN21@stbi__psd_:
; 7072 : } else {
00775 eb 4e jmp SHORT $LN57@stbi__psd_
$LN56@stbi__psd_:
; 7073 : for (i = 0; i < pixelCount; i++, p += 4)
00777 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00781 eb 20 jmp SHORT $LN25@stbi__psd_
$LN23@stbi__psd_:
00783 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
00789 ff c0 inc eax
0078b 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
00791 48 8b 85 e8 01
00 00 mov rax, QWORD PTR p$7[rbp]
00798 48 83 c0 04 add rax, 4
0079c 48 89 85 e8 01
00 00 mov QWORD PTR p$7[rbp], rax
$LN25@stbi__psd_:
007a3 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
007a6 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
007ac 7d 17 jge SHORT $LN24@stbi__psd_
; 7074 : *p = stbi__get8(s);
007ae 48 8b 8d a0 04
00 00 mov rcx, QWORD PTR s$[rbp]
007b5 e8 00 00 00 00 call stbi__get8
007ba 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR p$7[rbp]
007c1 88 01 mov BYTE PTR [rcx], al
007c3 eb be jmp SHORT $LN23@stbi__psd_
$LN24@stbi__psd_:
$LN57@stbi__psd_:
$LN55@stbi__psd_:
$LN51@stbi__psd_:
; 7075 : }
; 7076 : }
; 7077 : }
; 7078 : }
007c5 e9 6d fd ff ff jmp $LN8@stbi__psd_
$LN9@stbi__psd_:
$LN46@stbi__psd_:
; 7079 : }
; 7080 :
; 7081 : // remove weird white matte from PSD
; 7082 : if (channelCount >= 4) {
007ca 83 7d 24 04 cmp DWORD PTR channelCount$[rbp], 4
007ce 0f 8c 82 03 00
00 jl $LN58@stbi__psd_
; 7083 : if (ri->bits_per_channel == 16) {
007d4 48 8b 85 c8 04
00 00 mov rax, QWORD PTR ri$[rbp]
007db 83 38 10 cmp DWORD PTR [rax], 16
007de 0f 85 bc 01 00
00 jne $LN59@stbi__psd_
; 7084 : for (i = 0; i < w * h; ++i) {
007e4 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
007ee eb 0e jmp SHORT $LN28@stbi__psd_
$LN26@stbi__psd_:
007f0 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
007f6 ff c0 inc eax
007f8 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
$LN28@stbi__psd_:
007fe 8b 85 c4 00 00
00 mov eax, DWORD PTR w$[rbp]
00804 0f af 85 e4 00
00 00 imul eax, DWORD PTR h$[rbp]
0080b 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
00811 0f 8d 84 01 00
00 jge $LN27@stbi__psd_
; 7085 : stbi__uint16 *pixel = (stbi__uint16 *)out + 4 * i;
00817 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
0081d c1 e0 02 shl eax, 2
00820 48 98 cdqe
00822 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
00829 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
0082d 48 89 85 08 02
00 00 mov QWORD PTR pixel$8[rbp], rax
; 7086 : if (pixel[3] != 0 && pixel[3] != 65535) {
00834 b8 02 00 00 00 mov eax, 2
00839 48 6b c0 03 imul rax, rax, 3
0083d 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR pixel$8[rbp]
00844 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00848 85 c0 test eax, eax
0084a 0f 84 46 01 00
00 je $LN61@stbi__psd_
00850 b8 02 00 00 00 mov eax, 2
00855 48 6b c0 03 imul rax, rax, 3
00859 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR pixel$8[rbp]
00860 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00864 3d ff ff 00 00 cmp eax, 65535 ; 0000ffffH
00869 0f 84 27 01 00
00 je $LN61@stbi__psd_
; 7087 : float a = pixel[3] / 65535.0f;
0086f b8 02 00 00 00 mov eax, 2
00874 48 6b c0 03 imul rax, rax, 3
00878 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR pixel$8[rbp]
0087f 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
00883 f3 0f 2a c0 cvtsi2ss xmm0, eax
00887 f3 0f 5e 05 00
00 00 00 divss xmm0, DWORD PTR __real@477fff00
0088f f3 0f 11 85 24
02 00 00 movss DWORD PTR a$9[rbp], xmm0
; 7088 : float ra = 1.0f / a;
00897 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
0089f f3 0f 5e 85 24
02 00 00 divss xmm0, DWORD PTR a$9[rbp]
008a7 f3 0f 11 85 44
02 00 00 movss DWORD PTR ra$10[rbp], xmm0
; 7089 : float inv_a = 65535.0f * (1 - ra);
008af f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
008b7 f3 0f 5c 85 44
02 00 00 subss xmm0, DWORD PTR ra$10[rbp]
008bf f3 0f 10 0d 00
00 00 00 movss xmm1, DWORD PTR __real@477fff00
008c7 f3 0f 59 c8 mulss xmm1, xmm0
008cb 0f 28 c1 movaps xmm0, xmm1
008ce f3 0f 11 85 64
02 00 00 movss DWORD PTR inv_a$11[rbp], xmm0
; 7090 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a);
008d6 b8 02 00 00 00 mov eax, 2
008db 48 6b c0 00 imul rax, rax, 0
008df 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR pixel$8[rbp]
008e6 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
008ea f3 0f 2a c0 cvtsi2ss xmm0, eax
008ee f3 0f 59 85 44
02 00 00 mulss xmm0, DWORD PTR ra$10[rbp]
008f6 f3 0f 58 85 64
02 00 00 addss xmm0, DWORD PTR inv_a$11[rbp]
008fe f3 0f 2c c0 cvttss2si eax, xmm0
00902 b9 02 00 00 00 mov ecx, 2
00907 48 6b c9 00 imul rcx, rcx, 0
0090b 48 8b 95 08 02
00 00 mov rdx, QWORD PTR pixel$8[rbp]
00912 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 7091 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a);
00916 b8 02 00 00 00 mov eax, 2
0091b 48 6b c0 01 imul rax, rax, 1
0091f 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR pixel$8[rbp]
00926 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
0092a f3 0f 2a c0 cvtsi2ss xmm0, eax
0092e f3 0f 59 85 44
02 00 00 mulss xmm0, DWORD PTR ra$10[rbp]
00936 f3 0f 58 85 64
02 00 00 addss xmm0, DWORD PTR inv_a$11[rbp]
0093e f3 0f 2c c0 cvttss2si eax, xmm0
00942 b9 02 00 00 00 mov ecx, 2
00947 48 6b c9 01 imul rcx, rcx, 1
0094b 48 8b 95 08 02
00 00 mov rdx, QWORD PTR pixel$8[rbp]
00952 66 89 04 0a mov WORD PTR [rdx+rcx], ax
; 7092 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a);
00956 b8 02 00 00 00 mov eax, 2
0095b 48 6b c0 02 imul rax, rax, 2
0095f 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR pixel$8[rbp]
00966 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
0096a f3 0f 2a c0 cvtsi2ss xmm0, eax
0096e f3 0f 59 85 44
02 00 00 mulss xmm0, DWORD PTR ra$10[rbp]
00976 f3 0f 58 85 64
02 00 00 addss xmm0, DWORD PTR inv_a$11[rbp]
0097e f3 0f 2c c0 cvttss2si eax, xmm0
00982 b9 02 00 00 00 mov ecx, 2
00987 48 6b c9 02 imul rcx, rcx, 2
0098b 48 8b 95 08 02
00 00 mov rdx, QWORD PTR pixel$8[rbp]
00992 66 89 04 0a mov WORD PTR [rdx+rcx], ax
$LN61@stbi__psd_:
; 7093 : }
; 7094 : }
00996 e9 55 fe ff ff jmp $LN26@stbi__psd_
$LN27@stbi__psd_:
; 7095 : } else {
0099b e9 b6 01 00 00 jmp $LN60@stbi__psd_
$LN59@stbi__psd_:
; 7096 : for (i = 0; i < w * h; ++i) {
009a0 c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
009aa eb 0e jmp SHORT $LN31@stbi__psd_
$LN29@stbi__psd_:
009ac 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
009b2 ff c0 inc eax
009b4 89 85 84 00 00
00 mov DWORD PTR i$[rbp], eax
$LN31@stbi__psd_:
009ba 8b 85 c4 00 00
00 mov eax, DWORD PTR w$[rbp]
009c0 0f af 85 e4 00
00 00 imul eax, DWORD PTR h$[rbp]
009c7 39 85 84 00 00
00 cmp DWORD PTR i$[rbp], eax
009cd 0f 8d 83 01 00
00 jge $LN30@stbi__psd_
; 7097 : unsigned char *pixel = out + 4 * i;
009d3 8b 85 84 00 00
00 mov eax, DWORD PTR i$[rbp]
009d9 c1 e0 02 shl eax, 2
009dc 48 98 cdqe
009de 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
009e5 48 03 c8 add rcx, rax
009e8 48 8b c1 mov rax, rcx
009eb 48 89 85 88 02
00 00 mov QWORD PTR pixel$12[rbp], rax
; 7098 : if (pixel[3] != 0 && pixel[3] != 255) {
009f2 b8 01 00 00 00 mov eax, 1
009f7 48 6b c0 03 imul rax, rax, 3
009fb 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR pixel$12[rbp]
00a02 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00a06 85 c0 test eax, eax
00a08 0f 84 43 01 00
00 je $LN62@stbi__psd_
00a0e b8 01 00 00 00 mov eax, 1
00a13 48 6b c0 03 imul rax, rax, 3
00a17 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR pixel$12[rbp]
00a1e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00a22 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
00a27 0f 84 24 01 00
00 je $LN62@stbi__psd_
; 7099 : float a = pixel[3] / 255.0f;
00a2d b8 01 00 00 00 mov eax, 1
00a32 48 6b c0 03 imul rax, rax, 3
00a36 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR pixel$12[rbp]
00a3d 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00a41 f3 0f 2a c0 cvtsi2ss xmm0, eax
00a45 f3 0f 5e 05 00
00 00 00 divss xmm0, DWORD PTR __real@437f0000
00a4d f3 0f 11 85 a4
02 00 00 movss DWORD PTR a$13[rbp], xmm0
; 7100 : float ra = 1.0f / a;
00a55 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
00a5d f3 0f 5e 85 a4
02 00 00 divss xmm0, DWORD PTR a$13[rbp]
00a65 f3 0f 11 85 c4
02 00 00 movss DWORD PTR ra$14[rbp], xmm0
; 7101 : float inv_a = 255.0f * (1 - ra);
00a6d f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
00a75 f3 0f 5c 85 c4
02 00 00 subss xmm0, DWORD PTR ra$14[rbp]
00a7d f3 0f 10 0d 00
00 00 00 movss xmm1, DWORD PTR __real@437f0000
00a85 f3 0f 59 c8 mulss xmm1, xmm0
00a89 0f 28 c1 movaps xmm0, xmm1
00a8c f3 0f 11 85 e4
02 00 00 movss DWORD PTR inv_a$15[rbp], xmm0
; 7102 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a);
00a94 b8 01 00 00 00 mov eax, 1
00a99 48 6b c0 00 imul rax, rax, 0
00a9d 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR pixel$12[rbp]
00aa4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00aa8 f3 0f 2a c0 cvtsi2ss xmm0, eax
00aac f3 0f 59 85 c4
02 00 00 mulss xmm0, DWORD PTR ra$14[rbp]
00ab4 f3 0f 58 85 e4
02 00 00 addss xmm0, DWORD PTR inv_a$15[rbp]
00abc f3 0f 2c c0 cvttss2si eax, xmm0
00ac0 b9 01 00 00 00 mov ecx, 1
00ac5 48 6b c9 00 imul rcx, rcx, 0
00ac9 48 8b 95 88 02
00 00 mov rdx, QWORD PTR pixel$12[rbp]
00ad0 88 04 0a mov BYTE PTR [rdx+rcx], al
; 7103 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a);
00ad3 b8 01 00 00 00 mov eax, 1
00ad8 48 6b c0 01 imul rax, rax, 1
00adc 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR pixel$12[rbp]
00ae3 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00ae7 f3 0f 2a c0 cvtsi2ss xmm0, eax
00aeb f3 0f 59 85 c4
02 00 00 mulss xmm0, DWORD PTR ra$14[rbp]
00af3 f3 0f 58 85 e4
02 00 00 addss xmm0, DWORD PTR inv_a$15[rbp]
00afb f3 0f 2c c0 cvttss2si eax, xmm0
00aff b9 01 00 00 00 mov ecx, 1
00b04 48 6b c9 01 imul rcx, rcx, 1
00b08 48 8b 95 88 02
00 00 mov rdx, QWORD PTR pixel$12[rbp]
00b0f 88 04 0a mov BYTE PTR [rdx+rcx], al
; 7104 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a);
00b12 b8 01 00 00 00 mov eax, 1
00b17 48 6b c0 02 imul rax, rax, 2
00b1b 48 8b 8d 88 02
00 00 mov rcx, QWORD PTR pixel$12[rbp]
00b22 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00b26 f3 0f 2a c0 cvtsi2ss xmm0, eax
00b2a f3 0f 59 85 c4
02 00 00 mulss xmm0, DWORD PTR ra$14[rbp]
00b32 f3 0f 58 85 e4
02 00 00 addss xmm0, DWORD PTR inv_a$15[rbp]
00b3a f3 0f 2c c0 cvttss2si eax, xmm0
00b3e b9 01 00 00 00 mov ecx, 1
00b43 48 6b c9 02 imul rcx, rcx, 2
00b47 48 8b 95 88 02
00 00 mov rdx, QWORD PTR pixel$12[rbp]
00b4e 88 04 0a mov BYTE PTR [rdx+rcx], al
$LN62@stbi__psd_:
; 7105 : }
; 7106 : }
00b51 e9 56 fe ff ff jmp $LN29@stbi__psd_
$LN30@stbi__psd_:
$LN60@stbi__psd_:
$LN58@stbi__psd_:
; 7107 : }
; 7108 : }
; 7109 :
; 7110 : // convert to desired output format
; 7111 : if (req_comp && req_comp != 4) {
00b56 83 bd c0 04 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
00b5d 0f 84 8e 00 00
00 je $LN63@stbi__psd_
00b63 83 bd c0 04 00
00 04 cmp DWORD PTR req_comp$[rbp], 4
00b6a 0f 84 81 00 00
00 je $LN63@stbi__psd_
; 7112 : if (ri->bits_per_channel == 16)
00b70 48 8b 85 c8 04
00 00 mov rax, QWORD PTR ri$[rbp]
00b77 83 38 10 cmp DWORD PTR [rax], 16
00b7a 75 32 jne SHORT $LN64@stbi__psd_
; 7113 : out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, 4, req_comp, w,
00b7c 8b 85 e4 00 00
00 mov eax, DWORD PTR h$[rbp]
00b82 89 44 24 20 mov DWORD PTR [rsp+32], eax
00b86 44 8b 8d c4 00
00 00 mov r9d, DWORD PTR w$[rbp]
00b8d 44 8b 85 c0 04
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00b94 ba 04 00 00 00 mov edx, 4
00b99 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
00ba0 e8 00 00 00 00 call stbi__convert_format16
00ba5 48 89 85 08 01
00 00 mov QWORD PTR out$[rbp], rax
00bac eb 30 jmp SHORT $LN65@stbi__psd_
$LN64@stbi__psd_:
; 7114 : h);
; 7115 : else
; 7116 : out = stbi__convert_format(out, 4, req_comp, w, h);
00bae 8b 85 e4 00 00
00 mov eax, DWORD PTR h$[rbp]
00bb4 89 44 24 20 mov DWORD PTR [rsp+32], eax
00bb8 44 8b 8d c4 00
00 00 mov r9d, DWORD PTR w$[rbp]
00bbf 44 8b 85 c0 04
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00bc6 ba 04 00 00 00 mov edx, 4
00bcb 48 8b 8d 08 01
00 00 mov rcx, QWORD PTR out$[rbp]
00bd2 e8 00 00 00 00 call stbi__convert_format
00bd7 48 89 85 08 01
00 00 mov QWORD PTR out$[rbp], rax
$LN65@stbi__psd_:
; 7117 : if (out == NULL)
00bde 48 83 bd 08 01
00 00 00 cmp QWORD PTR out$[rbp], 0
00be6 75 09 jne SHORT $LN66@stbi__psd_
; 7118 : return out; // stbi__convert_format frees input on failure
00be8 48 8b 85 08 01
00 00 mov rax, QWORD PTR out$[rbp]
00bef eb 3c jmp SHORT $LN1@stbi__psd_
$LN66@stbi__psd_:
$LN63@stbi__psd_:
; 7119 : }
; 7120 :
; 7121 : if (comp)
00bf1 48 83 bd b8 04
00 00 00 cmp QWORD PTR comp$[rbp], 0
00bf9 74 0d je SHORT $LN67@stbi__psd_
; 7122 : *comp = 4;
00bfb 48 8b 85 b8 04
00 00 mov rax, QWORD PTR comp$[rbp]
00c02 c7 00 04 00 00
00 mov DWORD PTR [rax], 4
$LN67@stbi__psd_:
; 7123 : *y = h;
00c08 48 8b 85 b0 04
00 00 mov rax, QWORD PTR y$[rbp]
00c0f 8b 8d e4 00 00
00 mov ecx, DWORD PTR h$[rbp]
00c15 89 08 mov DWORD PTR [rax], ecx
; 7124 : *x = w;
00c17 48 8b 85 a8 04
00 00 mov rax, QWORD PTR x$[rbp]
00c1e 8b 8d c4 00 00
00 mov ecx, DWORD PTR w$[rbp]
00c24 89 08 mov DWORD PTR [rax], ecx
; 7125 :
; 7126 : return out;
00c26 48 8b 85 08 01
00 00 mov rax, QWORD PTR out$[rbp]
$LN1@stbi__psd_:
; 7127 : }
00c2d 48 8d a5 88 04
00 00 lea rsp, QWORD PTR [rbp+1160]
00c34 5f pop rdi
00c35 5d pop rbp
00c36 c3 ret 0
stbi__psd_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__psd_test
_TEXT SEGMENT
r$ = 4
tv67 = 212
s$ = 256
stbi__psd_test PROC ; COMDAT
; 6874 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 6875 : int r = (stbi__get32be(s) == 0x38425053);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__get32be
0002c 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
00031 75 0c jne SHORT $LN3@stbi__psd_
00033 c7 85 d4 00 00
00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
0003d eb 0a jmp SHORT $LN4@stbi__psd_
$LN3@stbi__psd_:
0003f c7 85 d4 00 00
00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
$LN4@stbi__psd_:
00049 8b 85 d4 00 00
00 mov eax, DWORD PTR tv67[rbp]
0004f 89 45 04 mov DWORD PTR r$[rbp], eax
; 6876 : stbi__rewind(s);
00052 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00059 e8 00 00 00 00 call stbi__rewind
0005e 90 npad 1
; 6877 : return r;
0005f 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 6878 : }
00062 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00069 5f pop rdi
0006a 5d pop rbp
0006b c3 ret 0
stbi__psd_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__tga_info
_TEXT SEGMENT
tga_w$ = 4
tga_h$ = 36
tga_comp$ = 68
tga_image_type$ = 100
tga_bits_per_pixel$ = 132
tga_colormap_bpp$ = 164
sz$ = 196
tga_colormap_type$ = 228
tv153 = 436
s$ = 480
x$ = 488
y$ = 496
comp$ = 504
stbi__tga_info PROC ; COMDAT
; 6540 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 6541 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp;
; 6542 : int sz, tga_colormap_type;
; 6543 : stbi__get8(s); // discard Offset
0002f 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__get8
0003b 90 npad 1
; 6544 : tga_colormap_type = stbi__get8(s); // colormap type
0003c 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00043 e8 00 00 00 00 call stbi__get8
00048 0f b6 c0 movzx eax, al
0004b 89 85 e4 00 00
00 mov DWORD PTR tga_colormap_type$[rbp], eax
; 6545 : if (tga_colormap_type > 1) {
00051 83 bd e4 00 00
00 01 cmp DWORD PTR tga_colormap_type$[rbp], 1
00058 7e 14 jle SHORT $LN2@stbi__tga_
; 6546 : stbi__rewind(s);
0005a 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00061 e8 00 00 00 00 call stbi__rewind
00066 90 npad 1
; 6547 : return 0; // only RGB or indexed allowed
00067 33 c0 xor eax, eax
00069 e9 5e 02 00 00 jmp $LN1@stbi__tga_
$LN2@stbi__tga_:
; 6548 : }
; 6549 : tga_image_type = stbi__get8(s); // image type
0006e 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00075 e8 00 00 00 00 call stbi__get8
0007a 0f b6 c0 movzx eax, al
0007d 89 45 64 mov DWORD PTR tga_image_type$[rbp], eax
; 6550 : if (tga_colormap_type == 1) { // colormapped (paletted) image
00080 83 bd e4 00 00
00 01 cmp DWORD PTR tga_colormap_type$[rbp], 1
00087 0f 85 a8 00 00
00 jne $LN3@stbi__tga_
; 6551 : if (tga_image_type != 1 && tga_image_type != 9) {
0008d 83 7d 64 01 cmp DWORD PTR tga_image_type$[rbp], 1
00091 74 1a je SHORT $LN5@stbi__tga_
00093 83 7d 64 09 cmp DWORD PTR tga_image_type$[rbp], 9
00097 74 14 je SHORT $LN5@stbi__tga_
; 6552 : stbi__rewind(s);
00099 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a0 e8 00 00 00 00 call stbi__rewind
000a5 90 npad 1
; 6553 : return 0;
000a6 33 c0 xor eax, eax
000a8 e9 1f 02 00 00 jmp $LN1@stbi__tga_
$LN5@stbi__tga_:
; 6554 : }
; 6555 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries
000ad ba 04 00 00 00 mov edx, 4
000b2 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000b9 e8 00 00 00 00 call stbi__skip
000be 90 npad 1
; 6556 : sz = stbi__get8(s); // check bits per palette color entry
000bf 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c6 e8 00 00 00 00 call stbi__get8
000cb 0f b6 c0 movzx eax, al
000ce 89 85 c4 00 00
00 mov DWORD PTR sz$[rbp], eax
; 6557 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) {
000d4 83 bd c4 00 00
00 08 cmp DWORD PTR sz$[rbp], 8
000db 74 38 je SHORT $LN6@stbi__tga_
000dd 83 bd c4 00 00
00 0f cmp DWORD PTR sz$[rbp], 15
000e4 74 2f je SHORT $LN6@stbi__tga_
000e6 83 bd c4 00 00
00 10 cmp DWORD PTR sz$[rbp], 16
000ed 74 26 je SHORT $LN6@stbi__tga_
000ef 83 bd c4 00 00
00 18 cmp DWORD PTR sz$[rbp], 24
000f6 74 1d je SHORT $LN6@stbi__tga_
000f8 83 bd c4 00 00
00 20 cmp DWORD PTR sz$[rbp], 32 ; 00000020H
000ff 74 14 je SHORT $LN6@stbi__tga_
; 6558 : stbi__rewind(s);
00101 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00108 e8 00 00 00 00 call stbi__rewind
0010d 90 npad 1
; 6559 : return 0;
0010e 33 c0 xor eax, eax
00110 e9 b7 01 00 00 jmp $LN1@stbi__tga_
$LN6@stbi__tga_:
; 6560 : }
; 6561 : stbi__skip(s, 4); // skip image x and y origin
00115 ba 04 00 00 00 mov edx, 4
0011a 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00121 e8 00 00 00 00 call stbi__skip
00126 90 npad 1
; 6562 : tga_colormap_bpp = sz;
00127 8b 85 c4 00 00
00 mov eax, DWORD PTR sz$[rbp]
0012d 89 85 a4 00 00
00 mov DWORD PTR tga_colormap_bpp$[rbp], eax
; 6563 : } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE
00133 eb 48 jmp SHORT $LN4@stbi__tga_
$LN3@stbi__tga_:
; 6564 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) &&
00135 83 7d 64 02 cmp DWORD PTR tga_image_type$[rbp], 2
00139 74 26 je SHORT $LN7@stbi__tga_
0013b 83 7d 64 03 cmp DWORD PTR tga_image_type$[rbp], 3
0013f 74 20 je SHORT $LN7@stbi__tga_
00141 83 7d 64 0a cmp DWORD PTR tga_image_type$[rbp], 10
00145 74 1a je SHORT $LN7@stbi__tga_
00147 83 7d 64 0b cmp DWORD PTR tga_image_type$[rbp], 11
0014b 74 14 je SHORT $LN7@stbi__tga_
; 6565 : (tga_image_type != 11)) {
; 6566 : stbi__rewind(s);
0014d 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00154 e8 00 00 00 00 call stbi__rewind
00159 90 npad 1
; 6567 : return 0; // only RGB or grey allowed, +/- RLE
0015a 33 c0 xor eax, eax
0015c e9 6b 01 00 00 jmp $LN1@stbi__tga_
$LN7@stbi__tga_:
; 6568 : }
; 6569 : stbi__skip(s, 9); // skip colormap specification and image x/y origin
00161 ba 09 00 00 00 mov edx, 9
00166 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
0016d e8 00 00 00 00 call stbi__skip
00172 90 npad 1
; 6570 : tga_colormap_bpp = 0;
00173 c7 85 a4 00 00
00 00 00 00 00 mov DWORD PTR tga_colormap_bpp$[rbp], 0
$LN4@stbi__tga_:
; 6571 : }
; 6572 : tga_w = stbi__get16le(s);
0017d 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00184 e8 00 00 00 00 call stbi__get16le
00189 89 45 04 mov DWORD PTR tga_w$[rbp], eax
; 6573 : if (tga_w < 1) {
0018c 83 7d 04 01 cmp DWORD PTR tga_w$[rbp], 1
00190 7d 14 jge SHORT $LN8@stbi__tga_
; 6574 : stbi__rewind(s);
00192 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00199 e8 00 00 00 00 call stbi__rewind
0019e 90 npad 1
; 6575 : return 0; // test width
0019f 33 c0 xor eax, eax
001a1 e9 26 01 00 00 jmp $LN1@stbi__tga_
$LN8@stbi__tga_:
; 6576 : }
; 6577 : tga_h = stbi__get16le(s);
001a6 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001ad e8 00 00 00 00 call stbi__get16le
001b2 89 45 24 mov DWORD PTR tga_h$[rbp], eax
; 6578 : if (tga_h < 1) {
001b5 83 7d 24 01 cmp DWORD PTR tga_h$[rbp], 1
001b9 7d 14 jge SHORT $LN9@stbi__tga_
; 6579 : stbi__rewind(s);
001bb 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001c2 e8 00 00 00 00 call stbi__rewind
001c7 90 npad 1
; 6580 : return 0; // test height
001c8 33 c0 xor eax, eax
001ca e9 fd 00 00 00 jmp $LN1@stbi__tga_
$LN9@stbi__tga_:
; 6581 : }
; 6582 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel
001cf 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001d6 e8 00 00 00 00 call stbi__get8
001db 0f b6 c0 movzx eax, al
001de 89 85 84 00 00
00 mov DWORD PTR tga_bits_per_pixel$[rbp], eax
; 6583 : stbi__get8(s); // ignore alpha bits
001e4 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
001eb e8 00 00 00 00 call stbi__get8
001f0 90 npad 1
; 6584 : if (tga_colormap_bpp != 0) {
001f1 83 bd a4 00 00
00 00 cmp DWORD PTR tga_colormap_bpp$[rbp], 0
001f8 74 3b je SHORT $LN10@stbi__tga_
; 6585 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) {
001fa 83 bd 84 00 00
00 08 cmp DWORD PTR tga_bits_per_pixel$[rbp], 8
00201 74 1d je SHORT $LN12@stbi__tga_
00203 83 bd 84 00 00
00 10 cmp DWORD PTR tga_bits_per_pixel$[rbp], 16
0020a 74 14 je SHORT $LN12@stbi__tga_
; 6586 : // when using a colormap, tga_bits_per_pixel is the size of the indexes
; 6587 : // I don't think anything but 8 or 16bit indexes makes sense
; 6588 : stbi__rewind(s);
0020c 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
00213 e8 00 00 00 00 call stbi__rewind
00218 90 npad 1
; 6589 : return 0;
00219 33 c0 xor eax, eax
0021b e9 ac 00 00 00 jmp $LN1@stbi__tga_
$LN12@stbi__tga_:
; 6590 : }
; 6591 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL);
00220 45 33 c0 xor r8d, r8d
00223 33 d2 xor edx, edx
00225 8b 8d a4 00 00
00 mov ecx, DWORD PTR tga_colormap_bpp$[rbp]
0022b e8 00 00 00 00 call stbi__tga_get_comp
00230 89 45 44 mov DWORD PTR tga_comp$[rbp], eax
; 6592 : } else {
00233 eb 39 jmp SHORT $LN11@stbi__tga_
$LN10@stbi__tga_:
; 6593 : tga_comp = stbi__tga_get_comp(
00235 83 7d 64 03 cmp DWORD PTR tga_image_type$[rbp], 3
00239 74 12 je SHORT $LN18@stbi__tga_
0023b 83 7d 64 0b cmp DWORD PTR tga_image_type$[rbp], 11
0023f 74 0c je SHORT $LN18@stbi__tga_
00241 c7 85 b4 01 00
00 00 00 00 00 mov DWORD PTR tv153[rbp], 0
0024b eb 0a jmp SHORT $LN19@stbi__tga_
$LN18@stbi__tga_:
0024d c7 85 b4 01 00
00 01 00 00 00 mov DWORD PTR tv153[rbp], 1
$LN19@stbi__tga_:
00257 45 33 c0 xor r8d, r8d
0025a 8b 95 b4 01 00
00 mov edx, DWORD PTR tv153[rbp]
00260 8b 8d 84 00 00
00 mov ecx, DWORD PTR tga_bits_per_pixel$[rbp]
00266 e8 00 00 00 00 call stbi__tga_get_comp
0026b 89 45 44 mov DWORD PTR tga_comp$[rbp], eax
$LN11@stbi__tga_:
; 6594 : tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL);
; 6595 : }
; 6596 : if (!tga_comp) {
0026e 83 7d 44 00 cmp DWORD PTR tga_comp$[rbp], 0
00272 75 11 jne SHORT $LN13@stbi__tga_
; 6597 : stbi__rewind(s);
00274 48 8b 8d e0 01
00 00 mov rcx, QWORD PTR s$[rbp]
0027b e8 00 00 00 00 call stbi__rewind
00280 90 npad 1
; 6598 : return 0;
00281 33 c0 xor eax, eax
00283 eb 47 jmp SHORT $LN1@stbi__tga_
$LN13@stbi__tga_:
; 6599 : }
; 6600 : if (x)
00285 48 83 bd e8 01
00 00 00 cmp QWORD PTR x$[rbp], 0
0028d 74 0c je SHORT $LN14@stbi__tga_
; 6601 : *x = tga_w;
0028f 48 8b 85 e8 01
00 00 mov rax, QWORD PTR x$[rbp]
00296 8b 4d 04 mov ecx, DWORD PTR tga_w$[rbp]
00299 89 08 mov DWORD PTR [rax], ecx
$LN14@stbi__tga_:
; 6602 : if (y)
0029b 48 83 bd f0 01
00 00 00 cmp QWORD PTR y$[rbp], 0
002a3 74 0c je SHORT $LN15@stbi__tga_
; 6603 : *y = tga_h;
002a5 48 8b 85 f0 01
00 00 mov rax, QWORD PTR y$[rbp]
002ac 8b 4d 24 mov ecx, DWORD PTR tga_h$[rbp]
002af 89 08 mov DWORD PTR [rax], ecx
$LN15@stbi__tga_:
; 6604 : if (comp)
002b1 48 83 bd f8 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
002b9 74 0c je SHORT $LN16@stbi__tga_
; 6605 : *comp = tga_comp;
002bb 48 8b 85 f8 01
00 00 mov rax, QWORD PTR comp$[rbp]
002c2 8b 4d 44 mov ecx, DWORD PTR tga_comp$[rbp]
002c5 89 08 mov DWORD PTR [rax], ecx
$LN16@stbi__tga_:
; 6606 : return 1; // seems to have passed everything
002c7 b8 01 00 00 00 mov eax, 1
$LN1@stbi__tga_:
; 6607 : }
002cc 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
002d3 5f pop rdi
002d4 5d pop rbp
002d5 c3 ret 0
stbi__tga_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__tga_load
_TEXT SEGMENT
tga_offset$ = 4
tga_indexed$ = 36
tga_image_type$ = 68
tga_is_RLE$ = 100
tga_palette_start$ = 132
tga_palette_len$ = 164
tga_palette_bits$ = 196
tga_x_origin$ = 228
tga_y_origin$ = 260
tga_width$ = 292
tga_height$ = 324
tga_bits_per_pixel$ = 356
tga_comp$ = 388
tga_rgb16$ = 420
tga_inverted$ = 452
tga_data$ = 488
tga_palette$ = 520
i$ = 548
j$ = 580
raw_data$ = 612
RLE_count$ = 644
RLE_repeating$ = 676
read_next_pixel$ = 708
row$5 = 740
tga_row$6 = 776
pal_entry$7 = 808
RLE_cmd$8 = 836
pal_idx$9 = 868
index1$10 = 900
index2$11 = 932
temp$12 = 964
tga_pixel$13 = 1000
temp$14 = 1028
tv192 = 1620
tv296 = 1620
tv153 = 1620
tv181 = 1624
tv219 = 1624
tv134 = 1624
tv139 = 1624
tv160 = 1624
tv171 = 1624
tv275 = 1624
tv207 = 1624
__$ArrayPad$ = 1632
s$ = 1680
x$ = 1688
y$ = 1696
comp$ = 1704
req_comp$ = 1712
ri$ = 1720
stbi__tga_load PROC ; COMDAT
; 6670 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec a8 06
00 00 sub rsp, 1704 ; 000006a8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 0e 01 00 00 mov ecx, 270 ; 0000010eH
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 c8
06 00 00 mov rcx, QWORD PTR [rsp+1736]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 60 06
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 6671 : // read in the TGA header stuff
; 6672 : int tga_offset = stbi__get8(s);
00059 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
00060 e8 00 00 00 00 call stbi__get8
00065 0f b6 c0 movzx eax, al
00068 89 45 04 mov DWORD PTR tga_offset$[rbp], eax
; 6673 : int tga_indexed = stbi__get8(s);
0006b 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
00072 e8 00 00 00 00 call stbi__get8
00077 0f b6 c0 movzx eax, al
0007a 89 45 24 mov DWORD PTR tga_indexed$[rbp], eax
; 6674 : int tga_image_type = stbi__get8(s);
0007d 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
00084 e8 00 00 00 00 call stbi__get8
00089 0f b6 c0 movzx eax, al
0008c 89 45 44 mov DWORD PTR tga_image_type$[rbp], eax
; 6675 : int tga_is_RLE = 0;
0008f c7 45 64 00 00
00 00 mov DWORD PTR tga_is_RLE$[rbp], 0
; 6676 : int tga_palette_start = stbi__get16le(s);
00096 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0009d e8 00 00 00 00 call stbi__get16le
000a2 89 85 84 00 00
00 mov DWORD PTR tga_palette_start$[rbp], eax
; 6677 : int tga_palette_len = stbi__get16le(s);
000a8 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
000af e8 00 00 00 00 call stbi__get16le
000b4 89 85 a4 00 00
00 mov DWORD PTR tga_palette_len$[rbp], eax
; 6678 : int tga_palette_bits = stbi__get8(s);
000ba 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
000c1 e8 00 00 00 00 call stbi__get8
000c6 0f b6 c0 movzx eax, al
000c9 89 85 c4 00 00
00 mov DWORD PTR tga_palette_bits$[rbp], eax
; 6679 : int tga_x_origin = stbi__get16le(s);
000cf 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
000d6 e8 00 00 00 00 call stbi__get16le
000db 89 85 e4 00 00
00 mov DWORD PTR tga_x_origin$[rbp], eax
; 6680 : int tga_y_origin = stbi__get16le(s);
000e1 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
000e8 e8 00 00 00 00 call stbi__get16le
000ed 89 85 04 01 00
00 mov DWORD PTR tga_y_origin$[rbp], eax
; 6681 : int tga_width = stbi__get16le(s);
000f3 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
000fa e8 00 00 00 00 call stbi__get16le
000ff 89 85 24 01 00
00 mov DWORD PTR tga_width$[rbp], eax
; 6682 : int tga_height = stbi__get16le(s);
00105 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0010c e8 00 00 00 00 call stbi__get16le
00111 89 85 44 01 00
00 mov DWORD PTR tga_height$[rbp], eax
; 6683 : int tga_bits_per_pixel = stbi__get8(s);
00117 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0011e e8 00 00 00 00 call stbi__get8
00123 0f b6 c0 movzx eax, al
00126 89 85 64 01 00
00 mov DWORD PTR tga_bits_per_pixel$[rbp], eax
; 6684 : int tga_comp, tga_rgb16 = 0;
0012c c7 85 a4 01 00
00 00 00 00 00 mov DWORD PTR tga_rgb16$[rbp], 0
; 6685 : int tga_inverted = stbi__get8(s);
00136 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0013d e8 00 00 00 00 call stbi__get8
00142 0f b6 c0 movzx eax, al
00145 89 85 c4 01 00
00 mov DWORD PTR tga_inverted$[rbp], eax
; 6686 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?)
; 6687 : // image data
; 6688 : unsigned char *tga_data;
; 6689 : unsigned char *tga_palette = NULL;
0014b 48 c7 85 08 02
00 00 00 00 00
00 mov QWORD PTR tga_palette$[rbp], 0
; 6690 : int i, j;
; 6691 : unsigned char raw_data[4] = { 0 };
00156 48 8d 85 64 02
00 00 lea rax, QWORD PTR raw_data$[rbp]
0015d 48 8b f8 mov rdi, rax
00160 33 c0 xor eax, eax
00162 b9 04 00 00 00 mov ecx, 4
00167 f3 aa rep stosb
; 6692 : int RLE_count = 0;
00169 c7 85 84 02 00
00 00 00 00 00 mov DWORD PTR RLE_count$[rbp], 0
; 6693 : int RLE_repeating = 0;
00173 c7 85 a4 02 00
00 00 00 00 00 mov DWORD PTR RLE_repeating$[rbp], 0
; 6694 : int read_next_pixel = 1;
0017d c7 85 c4 02 00
00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
; 6695 : STBI_NOTUSED(ri);
; 6696 : STBI_NOTUSED(tga_x_origin); // @TODO
; 6697 : STBI_NOTUSED(tga_y_origin); // @TODO
; 6698 :
; 6699 : if (tga_height > STBI_MAX_DIMENSIONS)
00187 81 bd 44 01 00
00 00 00 00 01 cmp DWORD PTR tga_height$[rbp], 16777216 ; 01000000H
00191 7e 34 jle SHORT $LN29@stbi__tga_
; 6700 : return stbi__errpuc("too large", "Very large image (corrupt?)");
00193 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
0019a e8 00 00 00 00 call stbi__err
0019f 85 c0 test eax, eax
001a1 74 0d je SHORT $LN62@stbi__tga_
001a3 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv134[rbp], 0
001ae eb 0b jmp SHORT $LN63@stbi__tga_
$LN62@stbi__tga_:
001b0 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv134[rbp], 0
$LN63@stbi__tga_:
001bb 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv134[rbp]
001c2 e9 ce 09 00 00 jmp $LN1@stbi__tga_
$LN29@stbi__tga_:
; 6701 : if (tga_width > STBI_MAX_DIMENSIONS)
001c7 81 bd 24 01 00
00 00 00 00 01 cmp DWORD PTR tga_width$[rbp], 16777216 ; 01000000H
001d1 7e 34 jle SHORT $LN30@stbi__tga_
; 6702 : return stbi__errpuc("too large", "Very large image (corrupt?)");
001d3 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
001da e8 00 00 00 00 call stbi__err
001df 85 c0 test eax, eax
001e1 74 0d je SHORT $LN64@stbi__tga_
001e3 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv139[rbp], 0
001ee eb 0b jmp SHORT $LN65@stbi__tga_
$LN64@stbi__tga_:
001f0 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv139[rbp], 0
$LN65@stbi__tga_:
001fb 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv139[rbp]
00202 e9 8e 09 00 00 jmp $LN1@stbi__tga_
$LN30@stbi__tga_:
; 6703 :
; 6704 : // do a tiny bit of precessing
; 6705 : if (tga_image_type >= 8) {
00207 83 7d 44 08 cmp DWORD PTR tga_image_type$[rbp], 8
0020b 7c 10 jl SHORT $LN31@stbi__tga_
; 6706 : tga_image_type -= 8;
0020d 8b 45 44 mov eax, DWORD PTR tga_image_type$[rbp]
00210 83 e8 08 sub eax, 8
00213 89 45 44 mov DWORD PTR tga_image_type$[rbp], eax
; 6707 : tga_is_RLE = 1;
00216 c7 45 64 01 00
00 00 mov DWORD PTR tga_is_RLE$[rbp], 1
$LN31@stbi__tga_:
; 6708 : }
; 6709 : tga_inverted = 1 - ((tga_inverted >> 5) & 1);
0021d 8b 85 c4 01 00
00 mov eax, DWORD PTR tga_inverted$[rbp]
00223 c1 f8 05 sar eax, 5
00226 83 e0 01 and eax, 1
00229 b9 01 00 00 00 mov ecx, 1
0022e 2b c8 sub ecx, eax
00230 8b c1 mov eax, ecx
00232 89 85 c4 01 00
00 mov DWORD PTR tga_inverted$[rbp], eax
; 6710 :
; 6711 : // If I'm paletted, then I'll use the number of bits from the palette
; 6712 : if (tga_indexed)
00238 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
0023c 74 1c je SHORT $LN32@stbi__tga_
; 6713 : tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16);
0023e 4c 8d 85 a4 01
00 00 lea r8, QWORD PTR tga_rgb16$[rbp]
00245 33 d2 xor edx, edx
00247 8b 8d c4 00 00
00 mov ecx, DWORD PTR tga_palette_bits$[rbp]
0024d e8 00 00 00 00 call stbi__tga_get_comp
00252 89 85 84 01 00
00 mov DWORD PTR tga_comp$[rbp], eax
00258 eb 3a jmp SHORT $LN33@stbi__tga_
$LN32@stbi__tga_:
; 6714 : else
; 6715 : tga_comp =
0025a 83 7d 44 03 cmp DWORD PTR tga_image_type$[rbp], 3
0025e 75 0c jne SHORT $LN66@stbi__tga_
00260 c7 85 54 06 00
00 01 00 00 00 mov DWORD PTR tv153[rbp], 1
0026a eb 0a jmp SHORT $LN67@stbi__tga_
$LN66@stbi__tga_:
0026c c7 85 54 06 00
00 00 00 00 00 mov DWORD PTR tv153[rbp], 0
$LN67@stbi__tga_:
00276 4c 8d 85 a4 01
00 00 lea r8, QWORD PTR tga_rgb16$[rbp]
0027d 8b 95 54 06 00
00 mov edx, DWORD PTR tv153[rbp]
00283 8b 8d 64 01 00
00 mov ecx, DWORD PTR tga_bits_per_pixel$[rbp]
00289 e8 00 00 00 00 call stbi__tga_get_comp
0028e 89 85 84 01 00
00 mov DWORD PTR tga_comp$[rbp], eax
$LN33@stbi__tga_:
; 6716 : stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16);
; 6717 :
; 6718 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency
00294 83 bd 84 01 00
00 00 cmp DWORD PTR tga_comp$[rbp], 0
0029b 75 34 jne SHORT $LN34@stbi__tga_
; 6719 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat");
0029d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
002a4 e8 00 00 00 00 call stbi__err
002a9 85 c0 test eax, eax
002ab 74 0d je SHORT $LN68@stbi__tga_
002ad 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv160[rbp], 0
002b8 eb 0b jmp SHORT $LN69@stbi__tga_
$LN68@stbi__tga_:
002ba 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv160[rbp], 0
$LN69@stbi__tga_:
002c5 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv160[rbp]
002cc e9 c4 08 00 00 jmp $LN1@stbi__tga_
$LN34@stbi__tga_:
; 6720 :
; 6721 : // tga info
; 6722 : *x = tga_width;
002d1 48 8b 85 98 06
00 00 mov rax, QWORD PTR x$[rbp]
002d8 8b 8d 24 01 00
00 mov ecx, DWORD PTR tga_width$[rbp]
002de 89 08 mov DWORD PTR [rax], ecx
; 6723 : *y = tga_height;
002e0 48 8b 85 a0 06
00 00 mov rax, QWORD PTR y$[rbp]
002e7 8b 8d 44 01 00
00 mov ecx, DWORD PTR tga_height$[rbp]
002ed 89 08 mov DWORD PTR [rax], ecx
; 6724 : if (comp)
002ef 48 83 bd a8 06
00 00 00 cmp QWORD PTR comp$[rbp], 0
002f7 74 0f je SHORT $LN35@stbi__tga_
; 6725 : *comp = tga_comp;
002f9 48 8b 85 a8 06
00 00 mov rax, QWORD PTR comp$[rbp]
00300 8b 8d 84 01 00
00 mov ecx, DWORD PTR tga_comp$[rbp]
00306 89 08 mov DWORD PTR [rax], ecx
$LN35@stbi__tga_:
; 6726 :
; 6727 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0))
00308 45 33 c9 xor r9d, r9d
0030b 44 8b 85 84 01
00 00 mov r8d, DWORD PTR tga_comp$[rbp]
00312 8b 95 44 01 00
00 mov edx, DWORD PTR tga_height$[rbp]
00318 8b 8d 24 01 00
00 mov ecx, DWORD PTR tga_width$[rbp]
0031e e8 00 00 00 00 call stbi__mad3sizes_valid
00323 85 c0 test eax, eax
00325 75 34 jne SHORT $LN36@stbi__tga_
; 6728 : return stbi__errpuc("too large", "Corrupt TGA");
00327 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
0032e e8 00 00 00 00 call stbi__err
00333 85 c0 test eax, eax
00335 74 0d je SHORT $LN70@stbi__tga_
00337 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv171[rbp], 0
00342 eb 0b jmp SHORT $LN71@stbi__tga_
$LN70@stbi__tga_:
00344 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv171[rbp], 0
$LN71@stbi__tga_:
0034f 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv171[rbp]
00356 e9 3a 08 00 00 jmp $LN1@stbi__tga_
$LN36@stbi__tga_:
; 6729 :
; 6730 : tga_data = (unsigned char *)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0);
0035b 45 33 c9 xor r9d, r9d
0035e 44 8b 85 84 01
00 00 mov r8d, DWORD PTR tga_comp$[rbp]
00365 8b 95 44 01 00
00 mov edx, DWORD PTR tga_height$[rbp]
0036b 8b 8d 24 01 00
00 mov ecx, DWORD PTR tga_width$[rbp]
00371 e8 00 00 00 00 call stbi__malloc_mad3
00376 48 89 85 e8 01
00 00 mov QWORD PTR tga_data$[rbp], rax
; 6731 : if (!tga_data)
0037d 48 83 bd e8 01
00 00 00 cmp QWORD PTR tga_data$[rbp], 0
00385 75 34 jne SHORT $LN37@stbi__tga_
; 6732 : return stbi__errpuc("outofmem", "Out of memory");
00387 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0038e e8 00 00 00 00 call stbi__err
00393 85 c0 test eax, eax
00395 74 0d je SHORT $LN72@stbi__tga_
00397 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv181[rbp], 0
003a2 eb 0b jmp SHORT $LN73@stbi__tga_
$LN72@stbi__tga_:
003a4 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv181[rbp], 0
$LN73@stbi__tga_:
003af 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv181[rbp]
003b6 e9 da 07 00 00 jmp $LN1@stbi__tga_
$LN37@stbi__tga_:
; 6733 :
; 6734 : // skip to the data's starting position (offset usually = 0)
; 6735 : stbi__skip(s, tga_offset);
003bb 8b 55 04 mov edx, DWORD PTR tga_offset$[rbp]
003be 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
003c5 e8 00 00 00 00 call stbi__skip
003ca 90 npad 1
; 6736 :
; 6737 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) {
003cb 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
003cf 0f 85 d6 00 00
00 jne $LN38@stbi__tga_
003d5 83 7d 64 00 cmp DWORD PTR tga_is_RLE$[rbp], 0
003d9 0f 85 cc 00 00
00 jne $LN38@stbi__tga_
003df 83 bd a4 01 00
00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
003e6 0f 85 bf 00 00
00 jne $LN38@stbi__tga_
; 6738 : for (i = 0; i < tga_height; ++i) {
003ec c7 85 24 02 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
003f6 eb 0e jmp SHORT $LN4@stbi__tga_
$LN2@stbi__tga_:
003f8 8b 85 24 02 00
00 mov eax, DWORD PTR i$[rbp]
003fe ff c0 inc eax
00400 89 85 24 02 00
00 mov DWORD PTR i$[rbp], eax
$LN4@stbi__tga_:
00406 8b 85 44 01 00
00 mov eax, DWORD PTR tga_height$[rbp]
0040c 39 85 24 02 00
00 cmp DWORD PTR i$[rbp], eax
00412 0f 8d 8e 00 00
00 jge $LN3@stbi__tga_
; 6739 : int row = tga_inverted ? tga_height - i - 1 : i;
00418 83 bd c4 01 00
00 00 cmp DWORD PTR tga_inverted$[rbp], 0
0041f 74 1a je SHORT $LN74@stbi__tga_
00421 8b 85 24 02 00
00 mov eax, DWORD PTR i$[rbp]
00427 8b 8d 44 01 00
00 mov ecx, DWORD PTR tga_height$[rbp]
0042d 2b c8 sub ecx, eax
0042f 8b c1 mov eax, ecx
00431 ff c8 dec eax
00433 89 85 54 06 00
00 mov DWORD PTR tv192[rbp], eax
00439 eb 0c jmp SHORT $LN75@stbi__tga_
$LN74@stbi__tga_:
0043b 8b 85 24 02 00
00 mov eax, DWORD PTR i$[rbp]
00441 89 85 54 06 00
00 mov DWORD PTR tv192[rbp], eax
$LN75@stbi__tga_:
00447 8b 85 54 06 00
00 mov eax, DWORD PTR tv192[rbp]
0044d 89 85 e4 02 00
00 mov DWORD PTR row$5[rbp], eax
; 6740 : stbi_uc *tga_row = tga_data + row * tga_width * tga_comp;
00453 8b 85 e4 02 00
00 mov eax, DWORD PTR row$5[rbp]
00459 0f af 85 24 01
00 00 imul eax, DWORD PTR tga_width$[rbp]
00460 0f af 85 84 01
00 00 imul eax, DWORD PTR tga_comp$[rbp]
00467 48 98 cdqe
00469 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR tga_data$[rbp]
00470 48 03 c8 add rcx, rax
00473 48 8b c1 mov rax, rcx
00476 48 89 85 08 03
00 00 mov QWORD PTR tga_row$6[rbp], rax
; 6741 : stbi__getn(s, tga_row, tga_width * tga_comp);
0047d 8b 85 24 01 00
00 mov eax, DWORD PTR tga_width$[rbp]
00483 0f af 85 84 01
00 00 imul eax, DWORD PTR tga_comp$[rbp]
0048a 44 8b c0 mov r8d, eax
0048d 48 8b 95 08 03
00 00 mov rdx, QWORD PTR tga_row$6[rbp]
00494 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0049b e8 00 00 00 00 call stbi__getn
004a0 90 npad 1
; 6742 : }
004a1 e9 52 ff ff ff jmp $LN2@stbi__tga_
$LN3@stbi__tga_:
; 6743 : } else {
004a6 e9 8f 05 00 00 jmp $LN39@stbi__tga_
$LN38@stbi__tga_:
; 6744 : // do I need to load a palette?
; 6745 : if (tga_indexed) {
004ab 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
004af 0f 84 d7 01 00
00 je $LN40@stbi__tga_
; 6746 : if (tga_palette_len == 0) { /* you have to have at least one entry! */
004b5 83 bd a4 00 00
00 00 cmp DWORD PTR tga_palette_len$[rbp], 0
004bc 75 42 jne SHORT $LN41@stbi__tga_
; 6747 : STBI_FREE(tga_data);
004be 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR tga_data$[rbp]
004c5 ff 15 00 00 00
00 call QWORD PTR __imp_free
004cb 90 npad 1
; 6748 : return stbi__errpuc("bad palette", "Corrupt TGA");
004cc 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@ILLOCNCO@bad?5palette@
004d3 e8 00 00 00 00 call stbi__err
004d8 85 c0 test eax, eax
004da 74 0d je SHORT $LN76@stbi__tga_
004dc 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv207[rbp], 0
004e7 eb 0b jmp SHORT $LN77@stbi__tga_
$LN76@stbi__tga_:
004e9 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv207[rbp], 0
$LN77@stbi__tga_:
004f4 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv207[rbp]
004fb e9 95 06 00 00 jmp $LN1@stbi__tga_
$LN41@stbi__tga_:
; 6749 : }
; 6750 :
; 6751 : // any data to skip? (offset usually = 0)
; 6752 : stbi__skip(s, tga_palette_start);
00500 8b 95 84 00 00
00 mov edx, DWORD PTR tga_palette_start$[rbp]
00506 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0050d e8 00 00 00 00 call stbi__skip
00512 90 npad 1
; 6753 : // load the palette
; 6754 : tga_palette =
00513 45 33 c0 xor r8d, r8d
00516 8b 95 84 01 00
00 mov edx, DWORD PTR tga_comp$[rbp]
0051c 8b 8d a4 00 00
00 mov ecx, DWORD PTR tga_palette_len$[rbp]
00522 e8 00 00 00 00 call stbi__malloc_mad2
00527 48 89 85 08 02
00 00 mov QWORD PTR tga_palette$[rbp], rax
; 6755 : (unsigned char *)stbi__malloc_mad2(tga_palette_len, tga_comp, 0);
; 6756 : if (!tga_palette) {
0052e 48 83 bd 08 02
00 00 00 cmp QWORD PTR tga_palette$[rbp], 0
00536 75 42 jne SHORT $LN42@stbi__tga_
; 6757 : STBI_FREE(tga_data);
00538 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR tga_data$[rbp]
0053f ff 15 00 00 00
00 call QWORD PTR __imp_free
00545 90 npad 1
; 6758 : return stbi__errpuc("outofmem", "Out of memory");
00546 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0054d e8 00 00 00 00 call stbi__err
00552 85 c0 test eax, eax
00554 74 0d je SHORT $LN78@stbi__tga_
00556 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv219[rbp], 0
00561 eb 0b jmp SHORT $LN79@stbi__tga_
$LN78@stbi__tga_:
00563 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv219[rbp], 0
$LN79@stbi__tga_:
0056e 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv219[rbp]
00575 e9 1b 06 00 00 jmp $LN1@stbi__tga_
$LN42@stbi__tga_:
; 6759 : }
; 6760 : if (tga_rgb16) {
0057a 83 bd a4 01 00
00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
00581 0f 84 8e 00 00
00 je $LN43@stbi__tga_
; 6761 : stbi_uc *pal_entry = tga_palette;
00587 48 8b 85 08 02
00 00 mov rax, QWORD PTR tga_palette$[rbp]
0058e 48 89 85 28 03
00 00 mov QWORD PTR pal_entry$7[rbp], rax
; 6762 : STBI_ASSERT(tga_comp == STBI_rgb);
00595 83 bd 84 01 00
00 03 cmp DWORD PTR tga_comp$[rbp], 3
0059c 74 1c je SHORT $LN80@stbi__tga_
0059e 41 b8 6a 1a 00
00 mov r8d, 6762 ; 00001a6aH
005a4 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
005ab 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@
005b2 ff 15 00 00 00
00 call QWORD PTR __imp__wassert
005b8 33 c0 xor eax, eax
$LN80@stbi__tga_:
; 6763 : for (i = 0; i < tga_palette_len; ++i) {
005ba c7 85 24 02 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
005c4 eb 0e jmp SHORT $LN7@stbi__tga_
$LN5@stbi__tga_:
005c6 8b 85 24 02 00
00 mov eax, DWORD PTR i$[rbp]
005cc ff c0 inc eax
005ce 89 85 24 02 00
00 mov DWORD PTR i$[rbp], eax
$LN7@stbi__tga_:
005d4 8b 85 a4 00 00
00 mov eax, DWORD PTR tga_palette_len$[rbp]
005da 39 85 24 02 00
00 cmp DWORD PTR i$[rbp], eax
005e0 7d 31 jge SHORT $LN6@stbi__tga_
; 6764 : stbi__tga_read_rgb16(s, pal_entry);
005e2 48 8b 95 28 03
00 00 mov rdx, QWORD PTR pal_entry$7[rbp]
005e9 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
005f0 e8 00 00 00 00 call stbi__tga_read_rgb16
005f5 90 npad 1
; 6765 : pal_entry += tga_comp;
005f6 48 63 85 84 01
00 00 movsxd rax, DWORD PTR tga_comp$[rbp]
005fd 48 8b 8d 28 03
00 00 mov rcx, QWORD PTR pal_entry$7[rbp]
00604 48 03 c8 add rcx, rax
00607 48 8b c1 mov rax, rcx
0060a 48 89 85 28 03
00 00 mov QWORD PTR pal_entry$7[rbp], rax
; 6766 : }
00611 eb b3 jmp SHORT $LN5@stbi__tga_
$LN6@stbi__tga_:
; 6767 : } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) {
00613 eb 77 jmp SHORT $LN44@stbi__tga_
$LN43@stbi__tga_:
00615 8b 85 a4 00 00
00 mov eax, DWORD PTR tga_palette_len$[rbp]
0061b 0f af 85 84 01
00 00 imul eax, DWORD PTR tga_comp$[rbp]
00622 44 8b c0 mov r8d, eax
00625 48 8b 95 08 02
00 00 mov rdx, QWORD PTR tga_palette$[rbp]
0062c 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
00633 e8 00 00 00 00 call stbi__getn
00638 85 c0 test eax, eax
0063a 75 50 jne SHORT $LN45@stbi__tga_
; 6768 : STBI_FREE(tga_data);
0063c 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR tga_data$[rbp]
00643 ff 15 00 00 00
00 call QWORD PTR __imp_free
00649 90 npad 1
; 6769 : STBI_FREE(tga_palette);
0064a 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR tga_palette$[rbp]
00651 ff 15 00 00 00
00 call QWORD PTR __imp_free
00657 90 npad 1
; 6770 : return stbi__errpuc("bad palette", "Corrupt TGA");
00658 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@ILLOCNCO@bad?5palette@
0065f e8 00 00 00 00 call stbi__err
00664 85 c0 test eax, eax
00666 74 0d je SHORT $LN81@stbi__tga_
00668 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv275[rbp], 0
00673 eb 0b jmp SHORT $LN82@stbi__tga_
$LN81@stbi__tga_:
00675 48 c7 85 58 06
00 00 00 00 00
00 mov QWORD PTR tv275[rbp], 0
$LN82@stbi__tga_:
00680 48 8b 85 58 06
00 00 mov rax, QWORD PTR tv275[rbp]
00687 e9 09 05 00 00 jmp $LN1@stbi__tga_
$LN45@stbi__tga_:
$LN44@stbi__tga_:
$LN40@stbi__tga_:
; 6771 : }
; 6772 : }
; 6773 : // load the data
; 6774 : for (i = 0; i < tga_width * tga_height; ++i) {
0068c c7 85 24 02 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00696 eb 0e jmp SHORT $LN10@stbi__tga_
$LN8@stbi__tga_:
00698 8b 85 24 02 00
00 mov eax, DWORD PTR i$[rbp]
0069e ff c0 inc eax
006a0 89 85 24 02 00
00 mov DWORD PTR i$[rbp], eax
$LN10@stbi__tga_:
006a6 8b 85 24 01 00
00 mov eax, DWORD PTR tga_width$[rbp]
006ac 0f af 85 44 01
00 00 imul eax, DWORD PTR tga_height$[rbp]
006b3 39 85 24 02 00
00 cmp DWORD PTR i$[rbp], eax
006b9 0f 8d 47 02 00
00 jge $LN9@stbi__tga_
; 6775 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk?
; 6776 : if (tga_is_RLE) {
006bf 83 7d 64 00 cmp DWORD PTR tga_is_RLE$[rbp], 0
006c3 74 5f je SHORT $LN46@stbi__tga_
; 6777 : if (RLE_count == 0) {
006c5 83 bd 84 02 00
00 00 cmp DWORD PTR RLE_count$[rbp], 0
006cc 75 41 jne SHORT $LN48@stbi__tga_
; 6778 : // yep, get the next byte as a RLE command
; 6779 : int RLE_cmd = stbi__get8(s);
006ce 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
006d5 e8 00 00 00 00 call stbi__get8
006da 0f b6 c0 movzx eax, al
006dd 89 85 44 03 00
00 mov DWORD PTR RLE_cmd$8[rbp], eax
; 6780 : RLE_count = 1 + (RLE_cmd & 127);
006e3 8b 85 44 03 00
00 mov eax, DWORD PTR RLE_cmd$8[rbp]
006e9 83 e0 7f and eax, 127 ; 0000007fH
006ec ff c0 inc eax
006ee 89 85 84 02 00
00 mov DWORD PTR RLE_count$[rbp], eax
; 6781 : RLE_repeating = RLE_cmd >> 7;
006f4 8b 85 44 03 00
00 mov eax, DWORD PTR RLE_cmd$8[rbp]
006fa c1 f8 07 sar eax, 7
006fd 89 85 a4 02 00
00 mov DWORD PTR RLE_repeating$[rbp], eax
; 6782 : read_next_pixel = 1;
00703 c7 85 c4 02 00
00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
0070d eb 13 jmp SHORT $LN49@stbi__tga_
$LN48@stbi__tga_:
; 6783 : } else if (!RLE_repeating) {
0070f 83 bd a4 02 00
00 00 cmp DWORD PTR RLE_repeating$[rbp], 0
00716 75 0a jne SHORT $LN50@stbi__tga_
; 6784 : read_next_pixel = 1;
00718 c7 85 c4 02 00
00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
$LN50@stbi__tga_:
$LN49@stbi__tga_:
; 6785 : }
; 6786 : } else {
00722 eb 0a jmp SHORT $LN47@stbi__tga_
$LN46@stbi__tga_:
; 6787 : read_next_pixel = 1;
00724 c7 85 c4 02 00
00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
$LN47@stbi__tga_:
; 6788 : }
; 6789 : // OK, if I need to read a pixel, do it now
; 6790 : if (read_next_pixel) {
0072e 83 bd c4 02 00
00 00 cmp DWORD PTR read_next_pixel$[rbp], 0
00735 0f 84 5f 01 00
00 je $LN51@stbi__tga_
; 6791 : // load however much data we did have
; 6792 : if (tga_indexed) {
0073b 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
0073f 0f 84 c3 00 00
00 je $LN52@stbi__tga_
; 6793 : // read in index, then perform the lookup
; 6794 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) :
00745 83 bd 64 01 00
00 08 cmp DWORD PTR tga_bits_per_pixel$[rbp], 8
0074c 75 17 jne SHORT $LN83@stbi__tga_
0074e 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
00755 e8 00 00 00 00 call stbi__get8
0075a 0f b6 c0 movzx eax, al
0075d 89 85 54 06 00
00 mov DWORD PTR tv296[rbp], eax
00763 eb 12 jmp SHORT $LN84@stbi__tga_
$LN83@stbi__tga_:
00765 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0076c e8 00 00 00 00 call stbi__get16le
00771 89 85 54 06 00
00 mov DWORD PTR tv296[rbp], eax
$LN84@stbi__tga_:
00777 8b 85 54 06 00
00 mov eax, DWORD PTR tv296[rbp]
0077d 89 85 64 03 00
00 mov DWORD PTR pal_idx$9[rbp], eax
; 6795 : stbi__get16le(s);
; 6796 : if (pal_idx >= tga_palette_len) {
00783 8b 85 a4 00 00
00 mov eax, DWORD PTR tga_palette_len$[rbp]
00789 39 85 64 03 00
00 cmp DWORD PTR pal_idx$9[rbp], eax
0078f 7c 0a jl SHORT $LN54@stbi__tga_
; 6797 : // invalid index
; 6798 : pal_idx = 0;
00791 c7 85 64 03 00
00 00 00 00 00 mov DWORD PTR pal_idx$9[rbp], 0
$LN54@stbi__tga_:
; 6799 : }
; 6800 : pal_idx *= tga_comp;
0079b 8b 85 64 03 00
00 mov eax, DWORD PTR pal_idx$9[rbp]
007a1 0f af 85 84 01
00 00 imul eax, DWORD PTR tga_comp$[rbp]
007a8 89 85 64 03 00
00 mov DWORD PTR pal_idx$9[rbp], eax
; 6801 : for (j = 0; j < tga_comp; ++j) {
007ae c7 85 44 02 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
007b8 eb 0e jmp SHORT $LN13@stbi__tga_
$LN11@stbi__tga_:
007ba 8b 85 44 02 00
00 mov eax, DWORD PTR j$[rbp]
007c0 ff c0 inc eax
007c2 89 85 44 02 00
00 mov DWORD PTR j$[rbp], eax
$LN13@stbi__tga_:
007c8 8b 85 84 01 00
00 mov eax, DWORD PTR tga_comp$[rbp]
007ce 39 85 44 02 00
00 cmp DWORD PTR j$[rbp], eax
007d4 7d 2d jge SHORT $LN12@stbi__tga_
; 6802 : raw_data[j] = tga_palette[pal_idx + j];
007d6 8b 85 44 02 00
00 mov eax, DWORD PTR j$[rbp]
007dc 8b 8d 64 03 00
00 mov ecx, DWORD PTR pal_idx$9[rbp]
007e2 03 c8 add ecx, eax
007e4 8b c1 mov eax, ecx
007e6 48 98 cdqe
007e8 48 63 8d 44 02
00 00 movsxd rcx, DWORD PTR j$[rbp]
007ef 48 8b 95 08 02
00 00 mov rdx, QWORD PTR tga_palette$[rbp]
007f6 0f b6 04 02 movzx eax, BYTE PTR [rdx+rax]
007fa 88 84 0d 64 02
00 00 mov BYTE PTR raw_data$[rbp+rcx], al
; 6803 : }
00801 eb b7 jmp SHORT $LN11@stbi__tga_
$LN12@stbi__tga_:
; 6804 : } else if (tga_rgb16) {
00803 e9 88 00 00 00 jmp $LN53@stbi__tga_
$LN52@stbi__tga_:
00808 83 bd a4 01 00
00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
0080f 74 3b je SHORT $LN55@stbi__tga_
; 6805 : STBI_ASSERT(tga_comp == STBI_rgb);
00811 83 bd 84 01 00
00 03 cmp DWORD PTR tga_comp$[rbp], 3
00818 74 1c je SHORT $LN85@stbi__tga_
0081a 41 b8 95 1a 00
00 mov r8d, 6805 ; 00001a95H
00820 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00827 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@
0082e ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00834 33 c0 xor eax, eax
$LN85@stbi__tga_:
; 6806 : stbi__tga_read_rgb16(s, raw_data);
00836 48 8d 95 64 02
00 00 lea rdx, QWORD PTR raw_data$[rbp]
0083d 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
00844 e8 00 00 00 00 call stbi__tga_read_rgb16
00849 90 npad 1
; 6807 : } else {
0084a eb 44 jmp SHORT $LN56@stbi__tga_
$LN55@stbi__tga_:
; 6808 : // read in the data raw
; 6809 : for (j = 0; j < tga_comp; ++j) {
0084c c7 85 44 02 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
00856 eb 0e jmp SHORT $LN16@stbi__tga_
$LN14@stbi__tga_:
00858 8b 85 44 02 00
00 mov eax, DWORD PTR j$[rbp]
0085e ff c0 inc eax
00860 89 85 44 02 00
00 mov DWORD PTR j$[rbp], eax
$LN16@stbi__tga_:
00866 8b 85 84 01 00
00 mov eax, DWORD PTR tga_comp$[rbp]
0086c 39 85 44 02 00
00 cmp DWORD PTR j$[rbp], eax
00872 7d 1c jge SHORT $LN15@stbi__tga_
; 6810 : raw_data[j] = stbi__get8(s);
00874 48 8b 8d 90 06
00 00 mov rcx, QWORD PTR s$[rbp]
0087b e8 00 00 00 00 call stbi__get8
00880 48 63 8d 44 02
00 00 movsxd rcx, DWORD PTR j$[rbp]
00887 88 84 0d 64 02
00 00 mov BYTE PTR raw_data$[rbp+rcx], al
; 6811 : }
0088e eb c8 jmp SHORT $LN14@stbi__tga_
$LN15@stbi__tga_:
$LN56@stbi__tga_:
$LN53@stbi__tga_:
; 6812 : }
; 6813 : // clear the reading flag for the next pixel
; 6814 : read_next_pixel = 0;
00890 c7 85 c4 02 00
00 00 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 0
$LN51@stbi__tga_:
; 6815 : } // end of reading a pixel
; 6816 :
; 6817 : // copy data
; 6818 : for (j = 0; j < tga_comp; ++j)
0089a c7 85 44 02 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
008a4 eb 0e jmp SHORT $LN19@stbi__tga_
$LN17@stbi__tga_:
008a6 8b 85 44 02 00
00 mov eax, DWORD PTR j$[rbp]
008ac ff c0 inc eax
008ae 89 85 44 02 00
00 mov DWORD PTR j$[rbp], eax
$LN19@stbi__tga_:
008b4 8b 85 84 01 00
00 mov eax, DWORD PTR tga_comp$[rbp]
008ba 39 85 44 02 00
00 cmp DWORD PTR j$[rbp], eax
008c0 7d 31 jge SHORT $LN18@stbi__tga_
; 6819 : tga_data[i * tga_comp + j] = raw_data[j];
008c2 48 63 85 44 02
00 00 movsxd rax, DWORD PTR j$[rbp]
008c9 8b 8d 24 02 00
00 mov ecx, DWORD PTR i$[rbp]
008cf 0f af 8d 84 01
00 00 imul ecx, DWORD PTR tga_comp$[rbp]
008d6 03 8d 44 02 00
00 add ecx, DWORD PTR j$[rbp]
008dc 48 63 c9 movsxd rcx, ecx
008df 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR tga_data$[rbp]
008e6 0f b6 84 05 64
02 00 00 movzx eax, BYTE PTR raw_data$[rbp+rax]
008ee 88 04 0a mov BYTE PTR [rdx+rcx], al
008f1 eb b3 jmp SHORT $LN17@stbi__tga_
$LN18@stbi__tga_:
; 6820 :
; 6821 : // in case we're in RLE mode, keep counting down
; 6822 : --RLE_count;
008f3 8b 85 84 02 00
00 mov eax, DWORD PTR RLE_count$[rbp]
008f9 ff c8 dec eax
008fb 89 85 84 02 00
00 mov DWORD PTR RLE_count$[rbp], eax
; 6823 : }
00901 e9 92 fd ff ff jmp $LN8@stbi__tga_
$LN9@stbi__tga_:
; 6824 : // do I need to invert the image?
; 6825 : if (tga_inverted) {
00906 83 bd c4 01 00
00 00 cmp DWORD PTR tga_inverted$[rbp], 0
0090d 0f 84 0f 01 00
00 je $LN57@stbi__tga_
; 6826 : for (j = 0; j * 2 < tga_height; ++j) {
00913 c7 85 44 02 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
0091d eb 0e jmp SHORT $LN22@stbi__tga_
$LN20@stbi__tga_:
0091f 8b 85 44 02 00
00 mov eax, DWORD PTR j$[rbp]
00925 ff c0 inc eax
00927 89 85 44 02 00
00 mov DWORD PTR j$[rbp], eax
$LN22@stbi__tga_:
0092d 8b 85 44 02 00
00 mov eax, DWORD PTR j$[rbp]
00933 d1 e0 shl eax, 1
00935 3b 85 44 01 00
00 cmp eax, DWORD PTR tga_height$[rbp]
0093b 0f 8d e1 00 00
00 jge $LN21@stbi__tga_
; 6827 : int index1 = j * tga_width * tga_comp;
00941 8b 85 44 02 00
00 mov eax, DWORD PTR j$[rbp]
00947 0f af 85 24 01
00 00 imul eax, DWORD PTR tga_width$[rbp]
0094e 0f af 85 84 01
00 00 imul eax, DWORD PTR tga_comp$[rbp]
00955 89 85 84 03 00
00 mov DWORD PTR index1$10[rbp], eax
; 6828 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp;
0095b 8b 85 44 01 00
00 mov eax, DWORD PTR tga_height$[rbp]
00961 ff c8 dec eax
00963 2b 85 44 02 00
00 sub eax, DWORD PTR j$[rbp]
00969 0f af 85 24 01
00 00 imul eax, DWORD PTR tga_width$[rbp]
00970 0f af 85 84 01
00 00 imul eax, DWORD PTR tga_comp$[rbp]
00977 89 85 a4 03 00
00 mov DWORD PTR index2$11[rbp], eax
; 6829 : for (i = tga_width * tga_comp; i > 0; --i) {
0097d 8b 85 24 01 00
00 mov eax, DWORD PTR tga_width$[rbp]
00983 0f af 85 84 01
00 00 imul eax, DWORD PTR tga_comp$[rbp]
0098a 89 85 24 02 00
00 mov DWORD PTR i$[rbp], eax
00990 eb 0e jmp SHORT $LN25@stbi__tga_
$LN23@stbi__tga_:
00992 8b 85 24 02 00
00 mov eax, DWORD PTR i$[rbp]
00998 ff c8 dec eax
0099a 89 85 24 02 00
00 mov DWORD PTR i$[rbp], eax
$LN25@stbi__tga_:
009a0 83 bd 24 02 00
00 00 cmp DWORD PTR i$[rbp], 0
009a7 7e 74 jle SHORT $LN24@stbi__tga_
; 6830 : unsigned char temp = tga_data[index1];
009a9 48 63 85 84 03
00 00 movsxd rax, DWORD PTR index1$10[rbp]
009b0 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR tga_data$[rbp]
009b7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
009bb 88 85 c4 03 00
00 mov BYTE PTR temp$12[rbp], al
; 6831 : tga_data[index1] = tga_data[index2];
009c1 48 63 85 a4 03
00 00 movsxd rax, DWORD PTR index2$11[rbp]
009c8 48 63 8d 84 03
00 00 movsxd rcx, DWORD PTR index1$10[rbp]
009cf 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR tga_data$[rbp]
009d6 48 8b bd e8 01
00 00 mov rdi, QWORD PTR tga_data$[rbp]
009dd 0f b6 04 07 movzx eax, BYTE PTR [rdi+rax]
009e1 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6832 : tga_data[index2] = temp;
009e4 48 63 85 a4 03
00 00 movsxd rax, DWORD PTR index2$11[rbp]
009eb 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR tga_data$[rbp]
009f2 0f b6 95 c4 03
00 00 movzx edx, BYTE PTR temp$12[rbp]
009f9 88 14 01 mov BYTE PTR [rcx+rax], dl
; 6833 : ++index1;
009fc 8b 85 84 03 00
00 mov eax, DWORD PTR index1$10[rbp]
00a02 ff c0 inc eax
00a04 89 85 84 03 00
00 mov DWORD PTR index1$10[rbp], eax
; 6834 : ++index2;
00a0a 8b 85 a4 03 00
00 mov eax, DWORD PTR index2$11[rbp]
00a10 ff c0 inc eax
00a12 89 85 a4 03 00
00 mov DWORD PTR index2$11[rbp], eax
; 6835 : }
00a18 e9 75 ff ff ff jmp $LN23@stbi__tga_
$LN24@stbi__tga_:
; 6836 : }
00a1d e9 fd fe ff ff jmp $LN20@stbi__tga_
$LN21@stbi__tga_:
$LN57@stbi__tga_:
; 6837 : }
; 6838 : // clear my palette, if I had one
; 6839 : if (tga_palette != NULL) {
00a22 48 83 bd 08 02
00 00 00 cmp QWORD PTR tga_palette$[rbp], 0
00a2a 74 0e je SHORT $LN58@stbi__tga_
; 6840 : STBI_FREE(tga_palette);
00a2c 48 8b 8d 08 02
00 00 mov rcx, QWORD PTR tga_palette$[rbp]
00a33 ff 15 00 00 00
00 call QWORD PTR __imp_free
00a39 90 npad 1
$LN58@stbi__tga_:
$LN39@stbi__tga_:
; 6841 : }
; 6842 : }
; 6843 :
; 6844 : // swap RGB - if the source data was RGB16, it already is in the right order
; 6845 : if (tga_comp >= 3 && !tga_rgb16) {
00a3a 83 bd 84 01 00
00 03 cmp DWORD PTR tga_comp$[rbp], 3
00a41 0f 8c c5 00 00
00 jl $LN59@stbi__tga_
00a47 83 bd a4 01 00
00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
00a4e 0f 85 b8 00 00
00 jne $LN59@stbi__tga_
; 6846 : unsigned char *tga_pixel = tga_data;
00a54 48 8b 85 e8 01
00 00 mov rax, QWORD PTR tga_data$[rbp]
00a5b 48 89 85 e8 03
00 00 mov QWORD PTR tga_pixel$13[rbp], rax
; 6847 : for (i = 0; i < tga_width * tga_height; ++i) {
00a62 c7 85 24 02 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00a6c eb 0e jmp SHORT $LN28@stbi__tga_
$LN26@stbi__tga_:
00a6e 8b 85 24 02 00
00 mov eax, DWORD PTR i$[rbp]
00a74 ff c0 inc eax
00a76 89 85 24 02 00
00 mov DWORD PTR i$[rbp], eax
$LN28@stbi__tga_:
00a7c 8b 85 24 01 00
00 mov eax, DWORD PTR tga_width$[rbp]
00a82 0f af 85 44 01
00 00 imul eax, DWORD PTR tga_height$[rbp]
00a89 39 85 24 02 00
00 cmp DWORD PTR i$[rbp], eax
00a8f 7d 7b jge SHORT $LN27@stbi__tga_
; 6848 : unsigned char temp = tga_pixel[0];
00a91 b8 01 00 00 00 mov eax, 1
00a96 48 6b c0 00 imul rax, rax, 0
00a9a 48 8b 8d e8 03
00 00 mov rcx, QWORD PTR tga_pixel$13[rbp]
00aa1 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00aa5 88 85 04 04 00
00 mov BYTE PTR temp$14[rbp], al
; 6849 : tga_pixel[0] = tga_pixel[2];
00aab b8 01 00 00 00 mov eax, 1
00ab0 48 6b c0 02 imul rax, rax, 2
00ab4 b9 01 00 00 00 mov ecx, 1
00ab9 48 6b c9 00 imul rcx, rcx, 0
00abd 48 8b 95 e8 03
00 00 mov rdx, QWORD PTR tga_pixel$13[rbp]
00ac4 48 8b bd e8 03
00 00 mov rdi, QWORD PTR tga_pixel$13[rbp]
00acb 0f b6 04 07 movzx eax, BYTE PTR [rdi+rax]
00acf 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6850 : tga_pixel[2] = temp;
00ad2 b8 01 00 00 00 mov eax, 1
00ad7 48 6b c0 02 imul rax, rax, 2
00adb 48 8b 8d e8 03
00 00 mov rcx, QWORD PTR tga_pixel$13[rbp]
00ae2 0f b6 95 04 04
00 00 movzx edx, BYTE PTR temp$14[rbp]
00ae9 88 14 01 mov BYTE PTR [rcx+rax], dl
; 6851 : tga_pixel += tga_comp;
00aec 48 63 85 84 01
00 00 movsxd rax, DWORD PTR tga_comp$[rbp]
00af3 48 8b 8d e8 03
00 00 mov rcx, QWORD PTR tga_pixel$13[rbp]
00afa 48 03 c8 add rcx, rax
00afd 48 8b c1 mov rax, rcx
00b00 48 89 85 e8 03
00 00 mov QWORD PTR tga_pixel$13[rbp], rax
; 6852 : }
00b07 e9 62 ff ff ff jmp $LN26@stbi__tga_
$LN27@stbi__tga_:
$LN59@stbi__tga_:
; 6853 : }
; 6854 :
; 6855 : // convert to target component count
; 6856 : if (req_comp && req_comp != tga_comp)
00b0c 83 bd b0 06 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
00b13 74 3f je SHORT $LN60@stbi__tga_
00b15 8b 85 84 01 00
00 mov eax, DWORD PTR tga_comp$[rbp]
00b1b 39 85 b0 06 00
00 cmp DWORD PTR req_comp$[rbp], eax
00b21 74 31 je SHORT $LN60@stbi__tga_
; 6857 : tga_data =
00b23 8b 85 44 01 00
00 mov eax, DWORD PTR tga_height$[rbp]
00b29 89 44 24 20 mov DWORD PTR [rsp+32], eax
00b2d 44 8b 8d 24 01
00 00 mov r9d, DWORD PTR tga_width$[rbp]
00b34 44 8b 85 b0 06
00 00 mov r8d, DWORD PTR req_comp$[rbp]
00b3b 8b 95 84 01 00
00 mov edx, DWORD PTR tga_comp$[rbp]
00b41 48 8b 8d e8 01
00 00 mov rcx, QWORD PTR tga_data$[rbp]
00b48 e8 00 00 00 00 call stbi__convert_format
00b4d 48 89 85 e8 01
00 00 mov QWORD PTR tga_data$[rbp], rax
$LN60@stbi__tga_:
; 6858 : stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height);
; 6859 :
; 6860 : // the things I do to get rid of an error message, and yet keep
; 6861 : // Microsoft's C compilers happy... [8^(
; 6862 : tga_palette_start = tga_palette_len = tga_palette_bits = tga_x_origin = tga_y_origin = 0;
00b54 c7 85 04 01 00
00 00 00 00 00 mov DWORD PTR tga_y_origin$[rbp], 0
00b5e 8b 85 04 01 00
00 mov eax, DWORD PTR tga_y_origin$[rbp]
00b64 89 85 e4 00 00
00 mov DWORD PTR tga_x_origin$[rbp], eax
00b6a 8b 85 e4 00 00
00 mov eax, DWORD PTR tga_x_origin$[rbp]
00b70 89 85 c4 00 00
00 mov DWORD PTR tga_palette_bits$[rbp], eax
00b76 8b 85 c4 00 00
00 mov eax, DWORD PTR tga_palette_bits$[rbp]
00b7c 89 85 a4 00 00
00 mov DWORD PTR tga_palette_len$[rbp], eax
00b82 8b 85 a4 00 00
00 mov eax, DWORD PTR tga_palette_len$[rbp]
00b88 89 85 84 00 00
00 mov DWORD PTR tga_palette_start$[rbp], eax
; 6863 : STBI_NOTUSED(tga_palette_start);
; 6864 : // OK, done
; 6865 : return tga_data;
00b8e 48 8b 85 e8 01
00 00 mov rax, QWORD PTR tga_data$[rbp]
$LN1@stbi__tga_:
; 6866 : }
00b95 48 8b f8 mov rdi, rax
00b98 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00b9c 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__tga_load$rtcFrameData
00ba3 e8 00 00 00 00 call _RTC_CheckStackVars
00ba8 48 8b c7 mov rax, rdi
00bab 48 8b 8d 60 06
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00bb2 48 33 cd xor rcx, rbp
00bb5 e8 00 00 00 00 call __security_check_cookie
00bba 48 8d a5 78 06
00 00 lea rsp, QWORD PTR [rbp+1656]
00bc1 5f pop rdi
00bc2 5d pop rbp
00bc3 c3 ret 0
stbi__tga_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__tga_test
_TEXT SEGMENT
res$ = 4
sz$ = 36
tga_color_type$ = 68
s$ = 320
stbi__tga_test PROC ; COMDAT
; 6610 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 6611 : int res = 0;
00020 c7 45 04 00 00
00 00 mov DWORD PTR res$[rbp], 0
; 6612 : int sz, tga_color_type;
; 6613 : stbi__get8(s); // discard Offset
00027 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0002e e8 00 00 00 00 call stbi__get8
00033 90 npad 1
; 6614 : tga_color_type = stbi__get8(s); // color type
00034 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0003b e8 00 00 00 00 call stbi__get8
00040 0f b6 c0 movzx eax, al
00043 89 45 44 mov DWORD PTR tga_color_type$[rbp], eax
; 6615 : if (tga_color_type > 1)
00046 83 7d 44 01 cmp DWORD PTR tga_color_type$[rbp], 1
0004a 7e 05 jle SHORT $LN2@stbi__tga_
; 6616 : goto errorEnd; // only RGB or indexed allowed
0004c e9 26 01 00 00 jmp $errorEnd$13
$LN2@stbi__tga_:
; 6617 : sz = stbi__get8(s); // image type
00051 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00058 e8 00 00 00 00 call stbi__get8
0005d 0f b6 c0 movzx eax, al
00060 89 45 24 mov DWORD PTR sz$[rbp], eax
; 6618 : if (tga_color_type == 1) { // colormapped (paletted) image
00063 83 7d 44 01 cmp DWORD PTR tga_color_type$[rbp], 1
00067 75 6c jne SHORT $LN3@stbi__tga_
; 6619 : if (sz != 1 && sz != 9)
00069 83 7d 24 01 cmp DWORD PTR sz$[rbp], 1
0006d 74 0b je SHORT $LN5@stbi__tga_
0006f 83 7d 24 09 cmp DWORD PTR sz$[rbp], 9
00073 74 05 je SHORT $LN5@stbi__tga_
; 6620 : goto errorEnd; // colortype 1 demands image type 1 or 9
00075 e9 fd 00 00 00 jmp $errorEnd$13
$LN5@stbi__tga_:
; 6621 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries
0007a ba 04 00 00 00 mov edx, 4
0007f 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00086 e8 00 00 00 00 call stbi__skip
0008b 90 npad 1
; 6622 : sz = stbi__get8(s); // check bits per palette color entry
0008c 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00093 e8 00 00 00 00 call stbi__get8
00098 0f b6 c0 movzx eax, al
0009b 89 45 24 mov DWORD PTR sz$[rbp], eax
; 6623 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32))
0009e 83 7d 24 08 cmp DWORD PTR sz$[rbp], 8
000a2 74 1d je SHORT $LN6@stbi__tga_
000a4 83 7d 24 0f cmp DWORD PTR sz$[rbp], 15
000a8 74 17 je SHORT $LN6@stbi__tga_
000aa 83 7d 24 10 cmp DWORD PTR sz$[rbp], 16
000ae 74 11 je SHORT $LN6@stbi__tga_
000b0 83 7d 24 18 cmp DWORD PTR sz$[rbp], 24
000b4 74 0b je SHORT $LN6@stbi__tga_
000b6 83 7d 24 20 cmp DWORD PTR sz$[rbp], 32 ; 00000020H
000ba 74 05 je SHORT $LN6@stbi__tga_
; 6624 : goto errorEnd;
000bc e9 b6 00 00 00 jmp $errorEnd$13
$LN6@stbi__tga_:
; 6625 : stbi__skip(s, 4); // skip image x and y origin
000c1 ba 04 00 00 00 mov edx, 4
000c6 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000cd e8 00 00 00 00 call stbi__skip
000d2 90 npad 1
; 6626 : } else { // "normal" image w/o colormap
000d3 eb 2f jmp SHORT $LN4@stbi__tga_
$LN3@stbi__tga_:
; 6627 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11))
000d5 83 7d 24 02 cmp DWORD PTR sz$[rbp], 2
000d9 74 17 je SHORT $LN7@stbi__tga_
000db 83 7d 24 03 cmp DWORD PTR sz$[rbp], 3
000df 74 11 je SHORT $LN7@stbi__tga_
000e1 83 7d 24 0a cmp DWORD PTR sz$[rbp], 10
000e5 74 0b je SHORT $LN7@stbi__tga_
000e7 83 7d 24 0b cmp DWORD PTR sz$[rbp], 11
000eb 74 05 je SHORT $LN7@stbi__tga_
; 6628 : goto errorEnd; // only RGB or grey allowed, +/- RLE
000ed e9 85 00 00 00 jmp $errorEnd$13
$LN7@stbi__tga_:
; 6629 : stbi__skip(s, 9); // skip colormap specification and image x/y origin
000f2 ba 09 00 00 00 mov edx, 9
000f7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000fe e8 00 00 00 00 call stbi__skip
00103 90 npad 1
$LN4@stbi__tga_:
; 6630 : }
; 6631 : if (stbi__get16le(s) < 1)
00104 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0010b e8 00 00 00 00 call stbi__get16le
00110 83 f8 01 cmp eax, 1
00113 7d 02 jge SHORT $LN8@stbi__tga_
; 6632 : goto errorEnd; // test width
00115 eb 60 jmp SHORT $errorEnd$13
$LN8@stbi__tga_:
; 6633 : if (stbi__get16le(s) < 1)
00117 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0011e e8 00 00 00 00 call stbi__get16le
00123 83 f8 01 cmp eax, 1
00126 7d 02 jge SHORT $LN9@stbi__tga_
; 6634 : goto errorEnd; // test height
00128 eb 4d jmp SHORT $errorEnd$13
$LN9@stbi__tga_:
; 6635 : sz = stbi__get8(s); // bits per pixel
0012a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00131 e8 00 00 00 00 call stbi__get8
00136 0f b6 c0 movzx eax, al
00139 89 45 24 mov DWORD PTR sz$[rbp], eax
; 6636 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16))
0013c 83 7d 44 01 cmp DWORD PTR tga_color_type$[rbp], 1
00140 75 0e jne SHORT $LN10@stbi__tga_
00142 83 7d 24 08 cmp DWORD PTR sz$[rbp], 8
00146 74 08 je SHORT $LN10@stbi__tga_
00148 83 7d 24 10 cmp DWORD PTR sz$[rbp], 16
0014c 74 02 je SHORT $LN10@stbi__tga_
; 6637 : goto errorEnd; // for colormapped images, bpp is size of an index
0014e eb 27 jmp SHORT $errorEnd$13
$LN10@stbi__tga_:
; 6638 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32))
00150 83 7d 24 08 cmp DWORD PTR sz$[rbp], 8
00154 74 1a je SHORT $LN11@stbi__tga_
00156 83 7d 24 0f cmp DWORD PTR sz$[rbp], 15
0015a 74 14 je SHORT $LN11@stbi__tga_
0015c 83 7d 24 10 cmp DWORD PTR sz$[rbp], 16
00160 74 0e je SHORT $LN11@stbi__tga_
00162 83 7d 24 18 cmp DWORD PTR sz$[rbp], 24
00166 74 08 je SHORT $LN11@stbi__tga_
00168 83 7d 24 20 cmp DWORD PTR sz$[rbp], 32 ; 00000020H
0016c 74 02 je SHORT $LN11@stbi__tga_
; 6639 : goto errorEnd;
0016e eb 07 jmp SHORT $errorEnd$13
$LN11@stbi__tga_:
; 6640 :
; 6641 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0
00170 c7 45 04 01 00
00 00 mov DWORD PTR res$[rbp], 1
$errorEnd$13:
; 6642 :
; 6643 : errorEnd:
; 6644 : stbi__rewind(s);
00177 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0017e e8 00 00 00 00 call stbi__rewind
00183 90 npad 1
; 6645 : return res;
00184 8b 45 04 mov eax, DWORD PTR res$[rbp]
; 6646 : }
00187 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
0018e 5f pop rdi
0018f 5d pop rbp
00190 c3 ret 0
stbi__tga_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bmp_info
_TEXT SEGMENT
p$ = 8
info$ = 40
tv77 = 276
__$ArrayPad$ = 280
s$ = 320
x$ = 328
y$ = 336
comp$ = 344
stbi__bmp_info PROC ; COMDAT
; 8240 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 1a 00 00 00 mov ecx, 26
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 68
01 00 00 mov rcx, QWORD PTR [rsp+360]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 18 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8241 : void *p;
; 8242 : stbi__bmp_data info;
; 8243 :
; 8244 : info.all_a = 255;
00059 c7 45 44 ff 00
00 00 mov DWORD PTR info$[rbp+28], 255 ; 000000ffH
; 8245 : p = stbi__bmp_parse_header(s, &info);
00060 48 8d 55 28 lea rdx, QWORD PTR info$[rbp]
00064 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__bmp_parse_header
00070 48 89 45 08 mov QWORD PTR p$[rbp], rax
; 8246 : if (p == NULL) {
00074 48 83 7d 08 00 cmp QWORD PTR p$[rbp], 0
00079 75 14 jne SHORT $LN2@stbi__bmp_
; 8247 : stbi__rewind(s);
0007b 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
00082 e8 00 00 00 00 call stbi__rewind
00087 90 npad 1
; 8248 : return 0;
00088 33 c0 xor eax, eax
0008a e9 91 00 00 00 jmp $LN1@stbi__bmp_
$LN2@stbi__bmp_:
; 8249 : }
; 8250 : if (x)
0008f 48 83 bd 48 01
00 00 00 cmp QWORD PTR x$[rbp], 0
00097 74 12 je SHORT $LN3@stbi__bmp_
; 8251 : *x = s->img_x;
00099 48 8b 85 48 01
00 00 mov rax, QWORD PTR x$[rbp]
000a0 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000a7 8b 09 mov ecx, DWORD PTR [rcx]
000a9 89 08 mov DWORD PTR [rax], ecx
$LN3@stbi__bmp_:
; 8252 : if (y)
000ab 48 83 bd 50 01
00 00 00 cmp QWORD PTR y$[rbp], 0
000b3 74 13 je SHORT $LN4@stbi__bmp_
; 8253 : *y = s->img_y;
000b5 48 8b 85 50 01
00 00 mov rax, QWORD PTR y$[rbp]
000bc 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c3 8b 49 04 mov ecx, DWORD PTR [rcx+4]
000c6 89 08 mov DWORD PTR [rax], ecx
$LN4@stbi__bmp_:
; 8254 : if (comp) {
000c8 48 83 bd 58 01
00 00 00 cmp QWORD PTR comp$[rbp], 0
000d0 74 49 je SHORT $LN5@stbi__bmp_
; 8255 : if (info.bpp == 24 && info.ma == 0xff000000)
000d2 83 7d 28 18 cmp DWORD PTR info$[rbp], 24
000d6 75 18 jne SHORT $LN6@stbi__bmp_
000d8 81 7d 40 00 00
00 ff cmp DWORD PTR info$[rbp+24], -16777216 ; ff000000H
000df 75 0f jne SHORT $LN6@stbi__bmp_
; 8256 : *comp = 3;
000e1 48 8b 85 58 01
00 00 mov rax, QWORD PTR comp$[rbp]
000e8 c7 00 03 00 00
00 mov DWORD PTR [rax], 3
000ee eb 2b jmp SHORT $LN7@stbi__bmp_
$LN6@stbi__bmp_:
; 8257 : else
; 8258 : *comp = info.ma ? 4 : 3;
000f0 83 7d 40 00 cmp DWORD PTR info$[rbp+24], 0
000f4 74 0c je SHORT $LN9@stbi__bmp_
000f6 c7 85 14 01 00
00 04 00 00 00 mov DWORD PTR tv77[rbp], 4
00100 eb 0a jmp SHORT $LN10@stbi__bmp_
$LN9@stbi__bmp_:
00102 c7 85 14 01 00
00 03 00 00 00 mov DWORD PTR tv77[rbp], 3
$LN10@stbi__bmp_:
0010c 48 8b 85 58 01
00 00 mov rax, QWORD PTR comp$[rbp]
00113 8b 8d 14 01 00
00 mov ecx, DWORD PTR tv77[rbp]
00119 89 08 mov DWORD PTR [rax], ecx
$LN7@stbi__bmp_:
$LN5@stbi__bmp_:
; 8259 : }
; 8260 : return 1;
0011b b8 01 00 00 00 mov eax, 1
$LN1@stbi__bmp_:
; 8261 : }
00120 48 8b f8 mov rdi, rax
00123 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00127 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__bmp_info$rtcFrameData
0012e e8 00 00 00 00 call _RTC_CheckStackVars
00133 48 8b c7 mov rax, rdi
00136 48 8b 8d 18 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0013d 48 33 cd xor rcx, rbp
00140 e8 00 00 00 00 call __security_check_cookie
00145 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
0014c 5f pop rdi
0014d 5d pop rbp
0014e c3 ret 0
stbi__bmp_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bmp_load
_TEXT SEGMENT
out$ = 8
mr$ = 36
mg$ = 68
mb$ = 100
ma$ = 132
all_a$ = 164
pal$ = 208
psize$ = 1252
i$ = 1284
j$ = 1316
width$ = 1348
flip_vertically$ = 1380
pad$ = 1412
target$ = 1444
info$ = 1480
bytes_read_so_far$5 = 1540
header_limit$6 = 1572
extra_data_limit$7 = 1604
z$8 = 1636
bit_offset$9 = 1668
v$10 = 1700
color$11 = 1732
v$12 = 1764
v2$13 = 1796
rshift$14 = 1828
gshift$15 = 1860
bshift$16 = 1892
ashift$17 = 1924
rcount$18 = 1956
gcount$19 = 1988
bcount$20 = 2020
acount$21 = 2052
z$22 = 2084
easy$23 = 2116
a$24 = 2148
bpp$25 = 2180
v$26 = 2212
a$27 = 2244
t$28 = 2276
p1$29 = 2312
p2$30 = 2344
tv70 = 3316
tv188 = 3316
tv257 = 3316
tv384 = 3316
tv505 = 3316
tv522 = 3316
tv562 = 3316
tv86 = 3320
tv172 = 3320
tv179 = 3320
tv203 = 3320
tv215 = 3320
tv223 = 3320
tv80 = 3320
tv445 = 3320
tv474 = 3320
tv276 = 3320
__$ArrayPad$ = 3328
s$ = 3376
x$ = 3384
y$ = 3392
comp$ = 3400
req_comp$ = 3408
ri$ = 3416
stbi__bmp_load PROC ; COMDAT
; 6260 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 48 0d
00 00 sub rsp, 3400 ; 00000d48H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 56 02 00 00 mov ecx, 598 ; 00000256H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 68
0d 00 00 mov rcx, QWORD PTR [rsp+3432]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 00 0d
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 6261 : stbi_uc *out;
; 6262 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a;
00059 c7 45 24 00 00
00 00 mov DWORD PTR mr$[rbp], 0
00060 c7 45 44 00 00
00 00 mov DWORD PTR mg$[rbp], 0
00067 c7 45 64 00 00
00 00 mov DWORD PTR mb$[rbp], 0
0006e c7 85 84 00 00
00 00 00 00 00 mov DWORD PTR ma$[rbp], 0
; 6263 : stbi_uc pal[256][4];
; 6264 : int psize = 0, i, j, width;
00078 c7 85 e4 04 00
00 00 00 00 00 mov DWORD PTR psize$[rbp], 0
; 6265 : int flip_vertically, pad, target;
; 6266 : stbi__bmp_data info;
; 6267 : STBI_NOTUSED(ri);
; 6268 :
; 6269 : info.all_a = 255;
00082 c7 85 e4 05 00
00 ff 00 00 00 mov DWORD PTR info$[rbp+28], 255 ; 000000ffH
; 6270 : if (stbi__bmp_parse_header(s, &info) == NULL)
0008c 48 8d 95 c8 05
00 00 lea rdx, QWORD PTR info$[rbp]
00093 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
0009a e8 00 00 00 00 call stbi__bmp_parse_header
0009f 48 85 c0 test rax, rax
000a2 75 07 jne SHORT $LN35@stbi__bmp_
; 6271 : return NULL; // error code already set
000a4 33 c0 xor eax, eax
000a6 e9 67 12 00 00 jmp $LN1@stbi__bmp_
$LN35@stbi__bmp_:
; 6272 :
; 6273 : flip_vertically = ((int)s->img_y) > 0;
000ab 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
000b2 83 78 04 00 cmp DWORD PTR [rax+4], 0
000b6 7e 0c jle SHORT $LN97@stbi__bmp_
000b8 c7 85 f4 0c 00
00 01 00 00 00 mov DWORD PTR tv70[rbp], 1
000c2 eb 0a jmp SHORT $LN98@stbi__bmp_
$LN97@stbi__bmp_:
000c4 c7 85 f4 0c 00
00 00 00 00 00 mov DWORD PTR tv70[rbp], 0
$LN98@stbi__bmp_:
000ce 8b 85 f4 0c 00
00 mov eax, DWORD PTR tv70[rbp]
000d4 89 85 64 05 00
00 mov DWORD PTR flip_vertically$[rbp], eax
; 6274 : s->img_y = abs((int)s->img_y);
000da 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
000e1 8b 48 04 mov ecx, DWORD PTR [rax+4]
000e4 e8 00 00 00 00 call abs
000e9 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
000f0 89 41 04 mov DWORD PTR [rcx+4], eax
; 6275 :
; 6276 : if (s->img_y > STBI_MAX_DIMENSIONS)
000f3 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
000fa 81 78 04 00 00
00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
00101 76 34 jbe SHORT $LN36@stbi__bmp_
; 6277 : return stbi__errpuc("too large", "Very large image (corrupt?)");
00103 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
0010a e8 00 00 00 00 call stbi__err
0010f 85 c0 test eax, eax
00111 74 0d je SHORT $LN99@stbi__bmp_
00113 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv80[rbp], 0
0011e eb 0b jmp SHORT $LN100@stbi__bmp_
$LN99@stbi__bmp_:
00120 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv80[rbp], 0
$LN100@stbi__bmp_:
0012b 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv80[rbp]
00132 e9 db 11 00 00 jmp $LN1@stbi__bmp_
$LN36@stbi__bmp_:
; 6278 : if (s->img_x > STBI_MAX_DIMENSIONS)
00137 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0013e 81 38 00 00 00
01 cmp DWORD PTR [rax], 16777216 ; 01000000H
00144 76 34 jbe SHORT $LN37@stbi__bmp_
; 6279 : return stbi__errpuc("too large", "Very large image (corrupt?)");
00146 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
0014d e8 00 00 00 00 call stbi__err
00152 85 c0 test eax, eax
00154 74 0d je SHORT $LN101@stbi__bmp_
00156 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv86[rbp], 0
00161 eb 0b jmp SHORT $LN102@stbi__bmp_
$LN101@stbi__bmp_:
00163 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv86[rbp], 0
$LN102@stbi__bmp_:
0016e 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv86[rbp]
00175 e9 98 11 00 00 jmp $LN1@stbi__bmp_
$LN37@stbi__bmp_:
; 6280 :
; 6281 : mr = info.mr;
0017a 8b 85 d4 05 00
00 mov eax, DWORD PTR info$[rbp+12]
00180 89 45 24 mov DWORD PTR mr$[rbp], eax
; 6282 : mg = info.mg;
00183 8b 85 d8 05 00
00 mov eax, DWORD PTR info$[rbp+16]
00189 89 45 44 mov DWORD PTR mg$[rbp], eax
; 6283 : mb = info.mb;
0018c 8b 85 dc 05 00
00 mov eax, DWORD PTR info$[rbp+20]
00192 89 45 64 mov DWORD PTR mb$[rbp], eax
; 6284 : ma = info.ma;
00195 8b 85 e0 05 00
00 mov eax, DWORD PTR info$[rbp+24]
0019b 89 85 84 00 00
00 mov DWORD PTR ma$[rbp], eax
; 6285 : all_a = info.all_a;
001a1 8b 85 e4 05 00
00 mov eax, DWORD PTR info$[rbp+28]
001a7 89 85 a4 00 00
00 mov DWORD PTR all_a$[rbp], eax
; 6286 :
; 6287 : if (info.hsz == 12) {
001ad 83 bd d0 05 00
00 0c cmp DWORD PTR info$[rbp+8], 12
001b4 75 2c jne SHORT $LN38@stbi__bmp_
; 6288 : if (info.bpp < 24)
001b6 83 bd c8 05 00
00 18 cmp DWORD PTR info$[rbp], 24
001bd 7d 21 jge SHORT $LN40@stbi__bmp_
; 6289 : psize = (info.offset - info.extra_read - 24) / 3;
001bf 8b 85 e8 05 00
00 mov eax, DWORD PTR info$[rbp+32]
001c5 8b 8d cc 05 00
00 mov ecx, DWORD PTR info$[rbp+4]
001cb 2b c8 sub ecx, eax
001cd 8b c1 mov eax, ecx
001cf 83 e8 18 sub eax, 24
001d2 99 cdq
001d3 b9 03 00 00 00 mov ecx, 3
001d8 f7 f9 idiv ecx
001da 89 85 e4 04 00
00 mov DWORD PTR psize$[rbp], eax
$LN40@stbi__bmp_:
; 6290 : } else {
001e0 eb 28 jmp SHORT $LN39@stbi__bmp_
$LN38@stbi__bmp_:
; 6291 : if (info.bpp < 16)
001e2 83 bd c8 05 00
00 10 cmp DWORD PTR info$[rbp], 16
001e9 7d 1f jge SHORT $LN41@stbi__bmp_
; 6292 : psize = (info.offset - info.extra_read - info.hsz) >> 2;
001eb 8b 85 e8 05 00
00 mov eax, DWORD PTR info$[rbp+32]
001f1 8b 8d cc 05 00
00 mov ecx, DWORD PTR info$[rbp+4]
001f7 2b c8 sub ecx, eax
001f9 8b c1 mov eax, ecx
001fb 2b 85 d0 05 00
00 sub eax, DWORD PTR info$[rbp+8]
00201 c1 f8 02 sar eax, 2
00204 89 85 e4 04 00
00 mov DWORD PTR psize$[rbp], eax
$LN41@stbi__bmp_:
$LN39@stbi__bmp_:
; 6293 : }
; 6294 : if (psize == 0) {
0020a 83 bd e4 04 00
00 00 cmp DWORD PTR psize$[rbp], 0
00211 0f 85 0c 01 00
00 jne $LN42@stbi__bmp_
; 6295 : // accept some number of extra bytes after the header, but if the offset points either to before
; 6296 : // the header ends or implies a large amount of extra data, reject the file as malformed
; 6297 : int bytes_read_so_far =
00217 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0021e 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00225 48 8b 89 d0 00
00 00 mov rcx, QWORD PTR [rcx+208]
0022c 48 8b 80 c0 00
00 00 mov rax, QWORD PTR [rax+192]
00233 48 2b c1 sub rax, rcx
00236 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
0023d 03 81 b8 00 00
00 add eax, DWORD PTR [rcx+184]
00243 89 85 04 06 00
00 mov DWORD PTR bytes_read_so_far$5[rbp], eax
; 6298 : s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original);
; 6299 : int header_limit = 1024; // max we actually read is below 256 bytes currently.
00249 c7 85 24 06 00
00 00 04 00 00 mov DWORD PTR header_limit$6[rbp], 1024 ; 00000400H
; 6300 : int extra_data_limit =
00253 c7 85 44 06 00
00 00 04 00 00 mov DWORD PTR extra_data_limit$7[rbp], 1024 ; 00000400H
; 6301 : 256 *
; 6302 : 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size.
; 6303 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) {
0025d 83 bd 04 06 00
00 00 cmp DWORD PTR bytes_read_so_far$5[rbp], 0
00264 7e 0e jle SHORT $LN44@stbi__bmp_
00266 8b 85 24 06 00
00 mov eax, DWORD PTR header_limit$6[rbp]
0026c 39 85 04 06 00
00 cmp DWORD PTR bytes_read_so_far$5[rbp], eax
00272 7e 34 jle SHORT $LN43@stbi__bmp_
$LN44@stbi__bmp_:
; 6304 : return stbi__errpuc("bad header", "Corrupt BMP");
00274 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0L@PJHPAMCH@bad?5header@
0027b e8 00 00 00 00 call stbi__err
00280 85 c0 test eax, eax
00282 74 0d je SHORT $LN103@stbi__bmp_
00284 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv172[rbp], 0
0028f eb 0b jmp SHORT $LN104@stbi__bmp_
$LN103@stbi__bmp_:
00291 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv172[rbp], 0
$LN104@stbi__bmp_:
0029c 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv172[rbp]
002a3 e9 6a 10 00 00 jmp $LN1@stbi__bmp_
$LN43@stbi__bmp_:
; 6305 : }
; 6306 : // we established that bytes_read_so_far is positive and sensible.
; 6307 : // the first half of this test rejects offsets that are either too small positives, or
; 6308 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn
; 6309 : // ensures the number computed in the second half of the test can't overflow.
; 6310 : if (info.offset < bytes_read_so_far ||
002a8 8b 85 04 06 00
00 mov eax, DWORD PTR bytes_read_so_far$5[rbp]
002ae 39 85 cc 05 00
00 cmp DWORD PTR info$[rbp+4], eax
002b4 7c 18 jl SHORT $LN47@stbi__bmp_
002b6 8b 85 04 06 00
00 mov eax, DWORD PTR bytes_read_so_far$5[rbp]
002bc 8b 8d cc 05 00
00 mov ecx, DWORD PTR info$[rbp+4]
002c2 2b c8 sub ecx, eax
002c4 8b c1 mov eax, ecx
002c6 3b 85 44 06 00
00 cmp eax, DWORD PTR extra_data_limit$7[rbp]
002cc 7e 36 jle SHORT $LN45@stbi__bmp_
$LN47@stbi__bmp_:
; 6311 : info.offset - bytes_read_so_far > extra_data_limit) {
; 6312 : return stbi__errpuc("bad offset", "Corrupt BMP");
002ce 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0L@JDPIFELH@bad?5offset@
002d5 e8 00 00 00 00 call stbi__err
002da 85 c0 test eax, eax
002dc 74 0d je SHORT $LN105@stbi__bmp_
002de 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv179[rbp], 0
002e9 eb 0b jmp SHORT $LN106@stbi__bmp_
$LN105@stbi__bmp_:
002eb 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv179[rbp], 0
$LN106@stbi__bmp_:
002f6 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv179[rbp]
002fd e9 10 10 00 00 jmp $LN1@stbi__bmp_
; 6313 : } else {
00302 eb 1f jmp SHORT $LN46@stbi__bmp_
$LN45@stbi__bmp_:
; 6314 : stbi__skip(s, info.offset - bytes_read_so_far);
00304 8b 85 04 06 00
00 mov eax, DWORD PTR bytes_read_so_far$5[rbp]
0030a 8b 8d cc 05 00
00 mov ecx, DWORD PTR info$[rbp+4]
00310 2b c8 sub ecx, eax
00312 8b c1 mov eax, ecx
00314 8b d0 mov edx, eax
00316 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
0031d e8 00 00 00 00 call stbi__skip
00322 90 npad 1
$LN46@stbi__bmp_:
$LN42@stbi__bmp_:
; 6315 : }
; 6316 : }
; 6317 :
; 6318 : if (info.bpp == 24 && ma == 0xff000000)
00323 83 bd c8 05 00
00 18 cmp DWORD PTR info$[rbp], 24
0032a 75 1c jne SHORT $LN48@stbi__bmp_
0032c 81 bd 84 00 00
00 00 00 00 ff cmp DWORD PTR ma$[rbp], -16777216 ; ff000000H
00336 75 10 jne SHORT $LN48@stbi__bmp_
; 6319 : s->img_n = 3;
00338 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0033f c7 40 08 03 00
00 00 mov DWORD PTR [rax+8], 3
00346 eb 2f jmp SHORT $LN49@stbi__bmp_
$LN48@stbi__bmp_:
; 6320 : else
; 6321 : s->img_n = ma ? 4 : 3;
00348 83 bd 84 00 00
00 00 cmp DWORD PTR ma$[rbp], 0
0034f 74 0c je SHORT $LN107@stbi__bmp_
00351 c7 85 f4 0c 00
00 04 00 00 00 mov DWORD PTR tv188[rbp], 4
0035b eb 0a jmp SHORT $LN108@stbi__bmp_
$LN107@stbi__bmp_:
0035d c7 85 f4 0c 00
00 03 00 00 00 mov DWORD PTR tv188[rbp], 3
$LN108@stbi__bmp_:
00367 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0036e 8b 8d f4 0c 00
00 mov ecx, DWORD PTR tv188[rbp]
00374 89 48 08 mov DWORD PTR [rax+8], ecx
$LN49@stbi__bmp_:
; 6322 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4
00377 83 bd 50 0d 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
0037e 74 17 je SHORT $LN50@stbi__bmp_
00380 83 bd 50 0d 00
00 03 cmp DWORD PTR req_comp$[rbp], 3
00387 7c 0e jl SHORT $LN50@stbi__bmp_
; 6323 : target = req_comp;
00389 8b 85 50 0d 00
00 mov eax, DWORD PTR req_comp$[rbp]
0038f 89 85 a4 05 00
00 mov DWORD PTR target$[rbp], eax
00395 eb 10 jmp SHORT $LN51@stbi__bmp_
$LN50@stbi__bmp_:
; 6324 : else
; 6325 : target = s->img_n; // if they want monochrome, we'll post-convert
00397 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0039e 8b 40 08 mov eax, DWORD PTR [rax+8]
003a1 89 85 a4 05 00
00 mov DWORD PTR target$[rbp], eax
$LN51@stbi__bmp_:
; 6326 :
; 6327 : // sanity-check size
; 6328 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0))
003a7 45 33 c9 xor r9d, r9d
003aa 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
003b1 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
003b5 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
003bc 8b 10 mov edx, DWORD PTR [rax]
003be 8b 8d a4 05 00
00 mov ecx, DWORD PTR target$[rbp]
003c4 e8 00 00 00 00 call stbi__mad3sizes_valid
003c9 85 c0 test eax, eax
003cb 75 34 jne SHORT $LN52@stbi__bmp_
; 6329 : return stbi__errpuc("too large", "Corrupt BMP");
003cd 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
003d4 e8 00 00 00 00 call stbi__err
003d9 85 c0 test eax, eax
003db 74 0d je SHORT $LN109@stbi__bmp_
003dd 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv203[rbp], 0
003e8 eb 0b jmp SHORT $LN110@stbi__bmp_
$LN109@stbi__bmp_:
003ea 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv203[rbp], 0
$LN110@stbi__bmp_:
003f5 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv203[rbp]
003fc e9 11 0f 00 00 jmp $LN1@stbi__bmp_
$LN52@stbi__bmp_:
; 6330 :
; 6331 : out = (stbi_uc *)stbi__malloc_mad3(target, s->img_x, s->img_y, 0);
00401 45 33 c9 xor r9d, r9d
00404 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0040b 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
0040f 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00416 8b 10 mov edx, DWORD PTR [rax]
00418 8b 8d a4 05 00
00 mov ecx, DWORD PTR target$[rbp]
0041e e8 00 00 00 00 call stbi__malloc_mad3
00423 48 89 45 08 mov QWORD PTR out$[rbp], rax
; 6332 : if (!out)
00427 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
0042c 75 34 jne SHORT $LN53@stbi__bmp_
; 6333 : return stbi__errpuc("outofmem", "Out of memory");
0042e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
00435 e8 00 00 00 00 call stbi__err
0043a 85 c0 test eax, eax
0043c 74 0d je SHORT $LN111@stbi__bmp_
0043e 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv215[rbp], 0
00449 eb 0b jmp SHORT $LN112@stbi__bmp_
$LN111@stbi__bmp_:
0044b 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv215[rbp], 0
$LN112@stbi__bmp_:
00456 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv215[rbp]
0045d e9 b0 0e 00 00 jmp $LN1@stbi__bmp_
$LN53@stbi__bmp_:
; 6334 : if (info.bpp < 16) {
00462 83 bd c8 05 00
00 10 cmp DWORD PTR info$[rbp], 16
00469 0f 8d ce 06 00
00 jge $LN54@stbi__bmp_
; 6335 : int z = 0;
0046f c7 85 64 06 00
00 00 00 00 00 mov DWORD PTR z$8[rbp], 0
; 6336 : if (psize == 0 || psize > 256) {
00479 83 bd e4 04 00
00 00 cmp DWORD PTR psize$[rbp], 0
00480 74 0c je SHORT $LN57@stbi__bmp_
00482 81 bd e4 04 00
00 00 01 00 00 cmp DWORD PTR psize$[rbp], 256 ; 00000100H
0048c 7e 3f jle SHORT $LN56@stbi__bmp_
$LN57@stbi__bmp_:
; 6337 : STBI_FREE(out);
0048e 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00492 ff 15 00 00 00
00 call QWORD PTR __imp_free
00498 90 npad 1
; 6338 : return stbi__errpuc("invalid", "Corrupt BMP");
00499 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07MALOAKCI@invalid@
004a0 e8 00 00 00 00 call stbi__err
004a5 85 c0 test eax, eax
004a7 74 0d je SHORT $LN113@stbi__bmp_
004a9 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv223[rbp], 0
004b4 eb 0b jmp SHORT $LN114@stbi__bmp_
$LN113@stbi__bmp_:
004b6 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv223[rbp], 0
$LN114@stbi__bmp_:
004c1 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv223[rbp]
004c8 e9 45 0e 00 00 jmp $LN1@stbi__bmp_
$LN56@stbi__bmp_:
; 6339 : }
; 6340 : for (i = 0; i < psize; ++i) {
004cd c7 85 04 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
004d7 eb 0e jmp SHORT $LN4@stbi__bmp_
$LN2@stbi__bmp_:
004d9 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
004df ff c0 inc eax
004e1 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
$LN4@stbi__bmp_:
004e7 8b 85 e4 04 00
00 mov eax, DWORD PTR psize$[rbp]
004ed 39 85 04 05 00
00 cmp DWORD PTR i$[rbp], eax
004f3 0f 8d ac 00 00
00 jge $LN3@stbi__bmp_
; 6341 : pal[i][2] = stbi__get8(s);
004f9 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00500 e8 00 00 00 00 call stbi__get8
00505 48 63 8d 04 05
00 00 movsxd rcx, DWORD PTR i$[rbp]
0050c 48 8d 8c 8d d0
00 00 00 lea rcx, QWORD PTR pal$[rbp+rcx*4]
00514 ba 01 00 00 00 mov edx, 1
00519 48 6b d2 02 imul rdx, rdx, 2
0051d 88 04 11 mov BYTE PTR [rcx+rdx], al
; 6342 : pal[i][1] = stbi__get8(s);
00520 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00527 e8 00 00 00 00 call stbi__get8
0052c 48 63 8d 04 05
00 00 movsxd rcx, DWORD PTR i$[rbp]
00533 48 8d 8c 8d d0
00 00 00 lea rcx, QWORD PTR pal$[rbp+rcx*4]
0053b ba 01 00 00 00 mov edx, 1
00540 48 6b d2 01 imul rdx, rdx, 1
00544 88 04 11 mov BYTE PTR [rcx+rdx], al
; 6343 : pal[i][0] = stbi__get8(s);
00547 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
0054e e8 00 00 00 00 call stbi__get8
00553 48 63 8d 04 05
00 00 movsxd rcx, DWORD PTR i$[rbp]
0055a 48 8d 8c 8d d0
00 00 00 lea rcx, QWORD PTR pal$[rbp+rcx*4]
00562 ba 01 00 00 00 mov edx, 1
00567 48 6b d2 00 imul rdx, rdx, 0
0056b 88 04 11 mov BYTE PTR [rcx+rdx], al
; 6344 : if (info.hsz != 12)
0056e 83 bd d0 05 00
00 0c cmp DWORD PTR info$[rbp+8], 12
00575 74 0d je SHORT $LN58@stbi__bmp_
; 6345 : stbi__get8(s);
00577 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
0057e e8 00 00 00 00 call stbi__get8
00583 90 npad 1
$LN58@stbi__bmp_:
; 6346 : pal[i][3] = 255;
00584 48 63 85 04 05
00 00 movsxd rax, DWORD PTR i$[rbp]
0058b 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
00593 b9 01 00 00 00 mov ecx, 1
00598 48 6b c9 03 imul rcx, rcx, 3
0059c c6 04 08 ff mov BYTE PTR [rax+rcx], 255 ; 000000ffH
; 6347 : }
005a0 e9 34 ff ff ff jmp $LN2@stbi__bmp_
$LN3@stbi__bmp_:
; 6348 : stbi__skip(s, info.offset - info.extra_read - info.hsz -
005a5 83 bd d0 05 00
00 0c cmp DWORD PTR info$[rbp+8], 12
005ac 75 0c jne SHORT $LN115@stbi__bmp_
005ae c7 85 f4 0c 00
00 03 00 00 00 mov DWORD PTR tv257[rbp], 3
005b8 eb 0a jmp SHORT $LN116@stbi__bmp_
$LN115@stbi__bmp_:
005ba c7 85 f4 0c 00
00 04 00 00 00 mov DWORD PTR tv257[rbp], 4
$LN116@stbi__bmp_:
005c4 8b 85 e8 05 00
00 mov eax, DWORD PTR info$[rbp+32]
005ca 8b 8d cc 05 00
00 mov ecx, DWORD PTR info$[rbp+4]
005d0 2b c8 sub ecx, eax
005d2 8b c1 mov eax, ecx
005d4 2b 85 d0 05 00
00 sub eax, DWORD PTR info$[rbp+8]
005da 8b 8d e4 04 00
00 mov ecx, DWORD PTR psize$[rbp]
005e0 0f af 8d f4 0c
00 00 imul ecx, DWORD PTR tv257[rbp]
005e7 2b c1 sub eax, ecx
005e9 8b d0 mov edx, eax
005eb 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
005f2 e8 00 00 00 00 call stbi__skip
005f7 90 npad 1
; 6349 : psize * (info.hsz == 12 ? 3 : 4));
; 6350 : if (info.bpp == 1)
005f8 83 bd c8 05 00
00 01 cmp DWORD PTR info$[rbp], 1
005ff 75 17 jne SHORT $LN59@stbi__bmp_
; 6351 : width = (s->img_x + 7) >> 3;
00601 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00608 8b 00 mov eax, DWORD PTR [rax]
0060a 83 c0 07 add eax, 7
0060d c1 e8 03 shr eax, 3
00610 89 85 44 05 00
00 mov DWORD PTR width$[rbp], eax
00616 eb 77 jmp SHORT $LN60@stbi__bmp_
$LN59@stbi__bmp_:
; 6352 : else if (info.bpp == 4)
00618 83 bd c8 05 00
00 04 cmp DWORD PTR info$[rbp], 4
0061f 75 15 jne SHORT $LN61@stbi__bmp_
; 6353 : width = (s->img_x + 1) >> 1;
00621 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00628 8b 00 mov eax, DWORD PTR [rax]
0062a ff c0 inc eax
0062c d1 e8 shr eax, 1
0062e 89 85 44 05 00
00 mov DWORD PTR width$[rbp], eax
00634 eb 59 jmp SHORT $LN62@stbi__bmp_
$LN61@stbi__bmp_:
; 6354 : else if (info.bpp == 8)
00636 83 bd c8 05 00
00 08 cmp DWORD PTR info$[rbp], 8
0063d 75 11 jne SHORT $LN63@stbi__bmp_
; 6355 : width = s->img_x;
0063f 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00646 8b 00 mov eax, DWORD PTR [rax]
00648 89 85 44 05 00
00 mov DWORD PTR width$[rbp], eax
0064e eb 3f jmp SHORT $LN64@stbi__bmp_
$LN63@stbi__bmp_:
; 6356 : else {
; 6357 : STBI_FREE(out);
00650 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00654 ff 15 00 00 00
00 call QWORD PTR __imp_free
0065a 90 npad 1
; 6358 : return stbi__errpuc("bad bpp", "Corrupt BMP");
0065b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_07JNJHIMGH@bad?5bpp@
00662 e8 00 00 00 00 call stbi__err
00667 85 c0 test eax, eax
00669 74 0d je SHORT $LN117@stbi__bmp_
0066b 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv276[rbp], 0
00676 eb 0b jmp SHORT $LN118@stbi__bmp_
$LN117@stbi__bmp_:
00678 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv276[rbp], 0
$LN118@stbi__bmp_:
00683 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv276[rbp]
0068a e9 83 0c 00 00 jmp $LN1@stbi__bmp_
$LN64@stbi__bmp_:
$LN62@stbi__bmp_:
$LN60@stbi__bmp_:
; 6359 : }
; 6360 : pad = (-width) & 3;
0068f 8b 85 44 05 00
00 mov eax, DWORD PTR width$[rbp]
00695 f7 d8 neg eax
00697 83 e0 03 and eax, 3
0069a 89 85 84 05 00
00 mov DWORD PTR pad$[rbp], eax
; 6361 : if (info.bpp == 1) {
006a0 83 bd c8 05 00
00 01 cmp DWORD PTR info$[rbp], 1
006a7 0f 85 d6 01 00
00 jne $LN65@stbi__bmp_
; 6362 : for (j = 0; j < (int)s->img_y; ++j) {
006ad c7 85 24 05 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
006b7 eb 0e jmp SHORT $LN7@stbi__bmp_
$LN5@stbi__bmp_:
006b9 8b 85 24 05 00
00 mov eax, DWORD PTR j$[rbp]
006bf ff c0 inc eax
006c1 89 85 24 05 00
00 mov DWORD PTR j$[rbp], eax
$LN7@stbi__bmp_:
006c7 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
006ce 8b 40 04 mov eax, DWORD PTR [rax+4]
006d1 39 85 24 05 00
00 cmp DWORD PTR j$[rbp], eax
006d7 0f 8d a1 01 00
00 jge $LN6@stbi__bmp_
; 6363 : int bit_offset = 7, v = stbi__get8(s);
006dd c7 85 84 06 00
00 07 00 00 00 mov DWORD PTR bit_offset$9[rbp], 7
006e7 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
006ee e8 00 00 00 00 call stbi__get8
006f3 0f b6 c0 movzx eax, al
006f6 89 85 a4 06 00
00 mov DWORD PTR v$10[rbp], eax
; 6364 : for (i = 0; i < (int)s->img_x; ++i) {
006fc c7 85 04 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00706 eb 0e jmp SHORT $LN10@stbi__bmp_
$LN8@stbi__bmp_:
00708 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
0070e ff c0 inc eax
00710 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
$LN10@stbi__bmp_:
00716 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0071d 8b 00 mov eax, DWORD PTR [rax]
0071f 39 85 04 05 00
00 cmp DWORD PTR i$[rbp], eax
00725 0f 8d 3b 01 00
00 jge $LN9@stbi__bmp_
; 6365 : int color = (v >> bit_offset) & 0x1;
0072b 8b 85 84 06 00
00 mov eax, DWORD PTR bit_offset$9[rbp]
00731 0f b6 c8 movzx ecx, al
00734 8b 85 a4 06 00
00 mov eax, DWORD PTR v$10[rbp]
0073a d3 f8 sar eax, cl
0073c 83 e0 01 and eax, 1
0073f 89 85 c4 06 00
00 mov DWORD PTR color$11[rbp], eax
; 6366 : out[z++] = pal[color][0];
00745 48 63 85 c4 06
00 00 movsxd rax, DWORD PTR color$11[rbp]
0074c 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
00754 b9 01 00 00 00 mov ecx, 1
00759 48 6b c9 00 imul rcx, rcx, 0
0075d 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
00764 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
00768 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
0076c 41 88 04 10 mov BYTE PTR [r8+rdx], al
00770 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
00776 ff c0 inc eax
00778 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6367 : out[z++] = pal[color][1];
0077e 48 63 85 c4 06
00 00 movsxd rax, DWORD PTR color$11[rbp]
00785 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
0078d b9 01 00 00 00 mov ecx, 1
00792 48 6b c9 01 imul rcx, rcx, 1
00796 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
0079d 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
007a1 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
007a5 41 88 04 10 mov BYTE PTR [r8+rdx], al
007a9 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
007af ff c0 inc eax
007b1 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6368 : out[z++] = pal[color][2];
007b7 48 63 85 c4 06
00 00 movsxd rax, DWORD PTR color$11[rbp]
007be 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
007c6 b9 01 00 00 00 mov ecx, 1
007cb 48 6b c9 02 imul rcx, rcx, 2
007cf 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
007d6 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
007da 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
007de 41 88 04 10 mov BYTE PTR [r8+rdx], al
007e2 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
007e8 ff c0 inc eax
007ea 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6369 : if (target == 4)
007f0 83 bd a4 05 00
00 04 cmp DWORD PTR target$[rbp], 4
007f7 75 1d jne SHORT $LN67@stbi__bmp_
; 6370 : out[z++] = 255;
007f9 48 63 85 64 06
00 00 movsxd rax, DWORD PTR z$8[rbp]
00800 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00804 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
00808 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
0080e ff c0 inc eax
00810 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
$LN67@stbi__bmp_:
; 6371 : if (i + 1 == (int)s->img_x)
00816 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
0081c ff c0 inc eax
0081e 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00825 3b 01 cmp eax, DWORD PTR [rcx]
00827 75 02 jne SHORT $LN68@stbi__bmp_
; 6372 : break;
00829 eb 3b jmp SHORT $LN9@stbi__bmp_
$LN68@stbi__bmp_:
; 6373 : if ((--bit_offset) < 0) {
0082b 8b 85 84 06 00
00 mov eax, DWORD PTR bit_offset$9[rbp]
00831 ff c8 dec eax
00833 89 85 84 06 00
00 mov DWORD PTR bit_offset$9[rbp], eax
00839 83 bd 84 06 00
00 00 cmp DWORD PTR bit_offset$9[rbp], 0
00840 7d 1f jge SHORT $LN69@stbi__bmp_
; 6374 : bit_offset = 7;
00842 c7 85 84 06 00
00 07 00 00 00 mov DWORD PTR bit_offset$9[rbp], 7
; 6375 : v = stbi__get8(s);
0084c 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00853 e8 00 00 00 00 call stbi__get8
00858 0f b6 c0 movzx eax, al
0085b 89 85 a4 06 00
00 mov DWORD PTR v$10[rbp], eax
$LN69@stbi__bmp_:
; 6376 : }
; 6377 : }
00861 e9 a2 fe ff ff jmp $LN8@stbi__bmp_
$LN9@stbi__bmp_:
; 6378 : stbi__skip(s, pad);
00866 8b 95 84 05 00
00 mov edx, DWORD PTR pad$[rbp]
0086c 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00873 e8 00 00 00 00 call stbi__skip
00878 90 npad 1
; 6379 : }
00879 e9 3b fe ff ff jmp $LN5@stbi__bmp_
$LN6@stbi__bmp_:
; 6380 : } else {
0087e e9 b5 02 00 00 jmp $LN66@stbi__bmp_
$LN65@stbi__bmp_:
; 6381 : for (j = 0; j < (int)s->img_y; ++j) {
00883 c7 85 24 05 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
0088d eb 0e jmp SHORT $LN13@stbi__bmp_
$LN11@stbi__bmp_:
0088f 8b 85 24 05 00
00 mov eax, DWORD PTR j$[rbp]
00895 ff c0 inc eax
00897 89 85 24 05 00
00 mov DWORD PTR j$[rbp], eax
$LN13@stbi__bmp_:
0089d 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
008a4 8b 40 04 mov eax, DWORD PTR [rax+4]
008a7 39 85 24 05 00
00 cmp DWORD PTR j$[rbp], eax
008ad 0f 8d 85 02 00
00 jge $LN12@stbi__bmp_
; 6382 : for (i = 0; i < (int)s->img_x; i += 2) {
008b3 c7 85 04 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
008bd eb 0f jmp SHORT $LN16@stbi__bmp_
$LN14@stbi__bmp_:
008bf 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
008c5 83 c0 02 add eax, 2
008c8 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
$LN16@stbi__bmp_:
008ce 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
008d5 8b 00 mov eax, DWORD PTR [rax]
008d7 39 85 04 05 00
00 cmp DWORD PTR i$[rbp], eax
008dd 0f 8d 3d 02 00
00 jge $LN15@stbi__bmp_
; 6383 : int v = stbi__get8(s), v2 = 0;
008e3 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
008ea e8 00 00 00 00 call stbi__get8
008ef 0f b6 c0 movzx eax, al
008f2 89 85 e4 06 00
00 mov DWORD PTR v$12[rbp], eax
008f8 c7 85 04 07 00
00 00 00 00 00 mov DWORD PTR v2$13[rbp], 0
; 6384 : if (info.bpp == 4) {
00902 83 bd c8 05 00
00 04 cmp DWORD PTR info$[rbp], 4
00909 75 1e jne SHORT $LN70@stbi__bmp_
; 6385 : v2 = v & 15;
0090b 8b 85 e4 06 00
00 mov eax, DWORD PTR v$12[rbp]
00911 83 e0 0f and eax, 15
00914 89 85 04 07 00
00 mov DWORD PTR v2$13[rbp], eax
; 6386 : v >>= 4;
0091a 8b 85 e4 06 00
00 mov eax, DWORD PTR v$12[rbp]
00920 c1 f8 04 sar eax, 4
00923 89 85 e4 06 00
00 mov DWORD PTR v$12[rbp], eax
$LN70@stbi__bmp_:
; 6387 : }
; 6388 : out[z++] = pal[v][0];
00929 48 63 85 e4 06
00 00 movsxd rax, DWORD PTR v$12[rbp]
00930 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
00938 b9 01 00 00 00 mov ecx, 1
0093d 48 6b c9 00 imul rcx, rcx, 0
00941 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
00948 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
0094c 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00950 41 88 04 10 mov BYTE PTR [r8+rdx], al
00954 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
0095a ff c0 inc eax
0095c 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6389 : out[z++] = pal[v][1];
00962 48 63 85 e4 06
00 00 movsxd rax, DWORD PTR v$12[rbp]
00969 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
00971 b9 01 00 00 00 mov ecx, 1
00976 48 6b c9 01 imul rcx, rcx, 1
0097a 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
00981 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
00985 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00989 41 88 04 10 mov BYTE PTR [r8+rdx], al
0098d 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
00993 ff c0 inc eax
00995 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6390 : out[z++] = pal[v][2];
0099b 48 63 85 e4 06
00 00 movsxd rax, DWORD PTR v$12[rbp]
009a2 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
009aa b9 01 00 00 00 mov ecx, 1
009af 48 6b c9 02 imul rcx, rcx, 2
009b3 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
009ba 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
009be 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
009c2 41 88 04 10 mov BYTE PTR [r8+rdx], al
009c6 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
009cc ff c0 inc eax
009ce 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6391 : if (target == 4)
009d4 83 bd a4 05 00
00 04 cmp DWORD PTR target$[rbp], 4
009db 75 1d jne SHORT $LN71@stbi__bmp_
; 6392 : out[z++] = 255;
009dd 48 63 85 64 06
00 00 movsxd rax, DWORD PTR z$8[rbp]
009e4 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
009e8 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
009ec 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
009f2 ff c0 inc eax
009f4 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
$LN71@stbi__bmp_:
; 6393 : if (i + 1 == (int)s->img_x)
009fa 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
00a00 ff c0 inc eax
00a02 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00a09 3b 01 cmp eax, DWORD PTR [rcx]
00a0b 75 05 jne SHORT $LN72@stbi__bmp_
; 6394 : break;
00a0d e9 0e 01 00 00 jmp $LN15@stbi__bmp_
$LN72@stbi__bmp_:
; 6395 : v = (info.bpp == 8) ? stbi__get8(s) : v2;
00a12 83 bd c8 05 00
00 08 cmp DWORD PTR info$[rbp], 8
00a19 75 17 jne SHORT $LN119@stbi__bmp_
00a1b 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00a22 e8 00 00 00 00 call stbi__get8
00a27 0f b6 c0 movzx eax, al
00a2a 89 85 f4 0c 00
00 mov DWORD PTR tv384[rbp], eax
00a30 eb 0c jmp SHORT $LN120@stbi__bmp_
$LN119@stbi__bmp_:
00a32 8b 85 04 07 00
00 mov eax, DWORD PTR v2$13[rbp]
00a38 89 85 f4 0c 00
00 mov DWORD PTR tv384[rbp], eax
$LN120@stbi__bmp_:
00a3e 8b 85 f4 0c 00
00 mov eax, DWORD PTR tv384[rbp]
00a44 89 85 e4 06 00
00 mov DWORD PTR v$12[rbp], eax
; 6396 : out[z++] = pal[v][0];
00a4a 48 63 85 e4 06
00 00 movsxd rax, DWORD PTR v$12[rbp]
00a51 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
00a59 b9 01 00 00 00 mov ecx, 1
00a5e 48 6b c9 00 imul rcx, rcx, 0
00a62 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
00a69 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
00a6d 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00a71 41 88 04 10 mov BYTE PTR [r8+rdx], al
00a75 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
00a7b ff c0 inc eax
00a7d 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6397 : out[z++] = pal[v][1];
00a83 48 63 85 e4 06
00 00 movsxd rax, DWORD PTR v$12[rbp]
00a8a 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
00a92 b9 01 00 00 00 mov ecx, 1
00a97 48 6b c9 01 imul rcx, rcx, 1
00a9b 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
00aa2 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
00aa6 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00aaa 41 88 04 10 mov BYTE PTR [r8+rdx], al
00aae 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
00ab4 ff c0 inc eax
00ab6 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6398 : out[z++] = pal[v][2];
00abc 48 63 85 e4 06
00 00 movsxd rax, DWORD PTR v$12[rbp]
00ac3 48 8d 84 85 d0
00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
00acb b9 01 00 00 00 mov ecx, 1
00ad0 48 6b c9 02 imul rcx, rcx, 2
00ad4 48 63 95 64 06
00 00 movsxd rdx, DWORD PTR z$8[rbp]
00adb 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
00adf 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
00ae3 41 88 04 10 mov BYTE PTR [r8+rdx], al
00ae7 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
00aed ff c0 inc eax
00aef 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
; 6399 : if (target == 4)
00af5 83 bd a4 05 00
00 04 cmp DWORD PTR target$[rbp], 4
00afc 75 1d jne SHORT $LN73@stbi__bmp_
; 6400 : out[z++] = 255;
00afe 48 63 85 64 06
00 00 movsxd rax, DWORD PTR z$8[rbp]
00b05 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00b09 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
00b0d 8b 85 64 06 00
00 mov eax, DWORD PTR z$8[rbp]
00b13 ff c0 inc eax
00b15 89 85 64 06 00
00 mov DWORD PTR z$8[rbp], eax
$LN73@stbi__bmp_:
; 6401 : }
00b1b e9 9f fd ff ff jmp $LN14@stbi__bmp_
$LN15@stbi__bmp_:
; 6402 : stbi__skip(s, pad);
00b20 8b 95 84 05 00
00 mov edx, DWORD PTR pad$[rbp]
00b26 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00b2d e8 00 00 00 00 call stbi__skip
00b32 90 npad 1
; 6403 : }
00b33 e9 57 fd ff ff jmp $LN11@stbi__bmp_
$LN12@stbi__bmp_:
$LN66@stbi__bmp_:
; 6404 : }
; 6405 : } else {
00b38 e9 af 05 00 00 jmp $LN55@stbi__bmp_
$LN54@stbi__bmp_:
; 6406 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0,
00b3d c7 85 24 07 00
00 00 00 00 00 mov DWORD PTR rshift$14[rbp], 0
00b47 c7 85 44 07 00
00 00 00 00 00 mov DWORD PTR gshift$15[rbp], 0
00b51 c7 85 64 07 00
00 00 00 00 00 mov DWORD PTR bshift$16[rbp], 0
00b5b c7 85 84 07 00
00 00 00 00 00 mov DWORD PTR ashift$17[rbp], 0
00b65 c7 85 a4 07 00
00 00 00 00 00 mov DWORD PTR rcount$18[rbp], 0
00b6f c7 85 c4 07 00
00 00 00 00 00 mov DWORD PTR gcount$19[rbp], 0
; 6407 : bcount = 0, acount = 0;
00b79 c7 85 e4 07 00
00 00 00 00 00 mov DWORD PTR bcount$20[rbp], 0
00b83 c7 85 04 08 00
00 00 00 00 00 mov DWORD PTR acount$21[rbp], 0
; 6408 : int z = 0;
00b8d c7 85 24 08 00
00 00 00 00 00 mov DWORD PTR z$22[rbp], 0
; 6409 : int easy = 0;
00b97 c7 85 44 08 00
00 00 00 00 00 mov DWORD PTR easy$23[rbp], 0
; 6410 : stbi__skip(s, info.offset - info.extra_read - info.hsz);
00ba1 8b 85 e8 05 00
00 mov eax, DWORD PTR info$[rbp+32]
00ba7 8b 8d cc 05 00
00 mov ecx, DWORD PTR info$[rbp+4]
00bad 2b c8 sub ecx, eax
00baf 8b c1 mov eax, ecx
00bb1 2b 85 d0 05 00
00 sub eax, DWORD PTR info$[rbp+8]
00bb7 8b d0 mov edx, eax
00bb9 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00bc0 e8 00 00 00 00 call stbi__skip
00bc5 90 npad 1
; 6411 : if (info.bpp == 24)
00bc6 83 bd c8 05 00
00 18 cmp DWORD PTR info$[rbp], 24
00bcd 75 12 jne SHORT $LN74@stbi__bmp_
; 6412 : width = 3 * s->img_x;
00bcf 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00bd6 6b 00 03 imul eax, DWORD PTR [rax], 3
00bd9 89 85 44 05 00
00 mov DWORD PTR width$[rbp], eax
00bdf eb 26 jmp SHORT $LN75@stbi__bmp_
$LN74@stbi__bmp_:
; 6413 : else if (info.bpp == 16)
00be1 83 bd c8 05 00
00 10 cmp DWORD PTR info$[rbp], 16
00be8 75 13 jne SHORT $LN76@stbi__bmp_
; 6414 : width = 2 * s->img_x;
00bea 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00bf1 8b 00 mov eax, DWORD PTR [rax]
00bf3 d1 e0 shl eax, 1
00bf5 89 85 44 05 00
00 mov DWORD PTR width$[rbp], eax
00bfb eb 0a jmp SHORT $LN77@stbi__bmp_
$LN76@stbi__bmp_:
; 6415 : else /* bpp = 32 and pad = 0 */
; 6416 : width = 0;
00bfd c7 85 44 05 00
00 00 00 00 00 mov DWORD PTR width$[rbp], 0
$LN77@stbi__bmp_:
$LN75@stbi__bmp_:
; 6417 : pad = (-width) & 3;
00c07 8b 85 44 05 00
00 mov eax, DWORD PTR width$[rbp]
00c0d f7 d8 neg eax
00c0f 83 e0 03 and eax, 3
00c12 89 85 84 05 00
00 mov DWORD PTR pad$[rbp], eax
; 6418 : if (info.bpp == 24) {
00c18 83 bd c8 05 00
00 18 cmp DWORD PTR info$[rbp], 24
00c1f 75 0c jne SHORT $LN78@stbi__bmp_
; 6419 : easy = 1;
00c21 c7 85 44 08 00
00 01 00 00 00 mov DWORD PTR easy$23[rbp], 1
00c2b eb 3a jmp SHORT $LN79@stbi__bmp_
$LN78@stbi__bmp_:
; 6420 : } else if (info.bpp == 32) {
00c2d 83 bd c8 05 00
00 20 cmp DWORD PTR info$[rbp], 32 ; 00000020H
00c34 75 31 jne SHORT $LN80@stbi__bmp_
; 6421 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000)
00c36 81 7d 64 ff 00
00 00 cmp DWORD PTR mb$[rbp], 255 ; 000000ffH
00c3d 75 28 jne SHORT $LN81@stbi__bmp_
00c3f 81 7d 44 00 ff
00 00 cmp DWORD PTR mg$[rbp], 65280 ; 0000ff00H
00c46 75 1f jne SHORT $LN81@stbi__bmp_
00c48 81 7d 24 00 00
ff 00 cmp DWORD PTR mr$[rbp], 16711680 ; 00ff0000H
00c4f 75 16 jne SHORT $LN81@stbi__bmp_
00c51 81 bd 84 00 00
00 00 00 00 ff cmp DWORD PTR ma$[rbp], -16777216 ; ff000000H
00c5b 75 0a jne SHORT $LN81@stbi__bmp_
; 6422 : easy = 2;
00c5d c7 85 44 08 00
00 02 00 00 00 mov DWORD PTR easy$23[rbp], 2
$LN81@stbi__bmp_:
$LN80@stbi__bmp_:
$LN79@stbi__bmp_:
; 6423 : }
; 6424 : if (!easy) {
00c67 83 bd 44 08 00
00 00 cmp DWORD PTR easy$23[rbp], 0
00c6e 0f 85 36 01 00
00 jne $LN82@stbi__bmp_
; 6425 : if (!mr || !mg || !mb) {
00c74 83 7d 24 00 cmp DWORD PTR mr$[rbp], 0
00c78 74 0c je SHORT $LN84@stbi__bmp_
00c7a 83 7d 44 00 cmp DWORD PTR mg$[rbp], 0
00c7e 74 06 je SHORT $LN84@stbi__bmp_
00c80 83 7d 64 00 cmp DWORD PTR mb$[rbp], 0
00c84 75 3f jne SHORT $LN83@stbi__bmp_
$LN84@stbi__bmp_:
; 6426 : STBI_FREE(out);
00c86 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00c8a ff 15 00 00 00
00 call QWORD PTR __imp_free
00c90 90 npad 1
; 6427 : return stbi__errpuc("bad masks", "Corrupt BMP");
00c91 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09DAEBACAB@bad?5masks@
00c98 e8 00 00 00 00 call stbi__err
00c9d 85 c0 test eax, eax
00c9f 74 0d je SHORT $LN121@stbi__bmp_
00ca1 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv445[rbp], 0
00cac eb 0b jmp SHORT $LN122@stbi__bmp_
$LN121@stbi__bmp_:
00cae 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv445[rbp], 0
$LN122@stbi__bmp_:
00cb9 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv445[rbp]
00cc0 e9 4d 06 00 00 jmp $LN1@stbi__bmp_
$LN83@stbi__bmp_:
; 6428 : }
; 6429 : // right shift amt to put high bit in position #7
; 6430 : rshift = stbi__high_bit(mr) - 7;
00cc5 8b 4d 24 mov ecx, DWORD PTR mr$[rbp]
00cc8 e8 00 00 00 00 call stbi__high_bit
00ccd 83 e8 07 sub eax, 7
00cd0 89 85 24 07 00
00 mov DWORD PTR rshift$14[rbp], eax
; 6431 : rcount = stbi__bitcount(mr);
00cd6 8b 4d 24 mov ecx, DWORD PTR mr$[rbp]
00cd9 e8 00 00 00 00 call stbi__bitcount
00cde 89 85 a4 07 00
00 mov DWORD PTR rcount$18[rbp], eax
; 6432 : gshift = stbi__high_bit(mg) - 7;
00ce4 8b 4d 44 mov ecx, DWORD PTR mg$[rbp]
00ce7 e8 00 00 00 00 call stbi__high_bit
00cec 83 e8 07 sub eax, 7
00cef 89 85 44 07 00
00 mov DWORD PTR gshift$15[rbp], eax
; 6433 : gcount = stbi__bitcount(mg);
00cf5 8b 4d 44 mov ecx, DWORD PTR mg$[rbp]
00cf8 e8 00 00 00 00 call stbi__bitcount
00cfd 89 85 c4 07 00
00 mov DWORD PTR gcount$19[rbp], eax
; 6434 : bshift = stbi__high_bit(mb) - 7;
00d03 8b 4d 64 mov ecx, DWORD PTR mb$[rbp]
00d06 e8 00 00 00 00 call stbi__high_bit
00d0b 83 e8 07 sub eax, 7
00d0e 89 85 64 07 00
00 mov DWORD PTR bshift$16[rbp], eax
; 6435 : bcount = stbi__bitcount(mb);
00d14 8b 4d 64 mov ecx, DWORD PTR mb$[rbp]
00d17 e8 00 00 00 00 call stbi__bitcount
00d1c 89 85 e4 07 00
00 mov DWORD PTR bcount$20[rbp], eax
; 6436 : ashift = stbi__high_bit(ma) - 7;
00d22 8b 8d 84 00 00
00 mov ecx, DWORD PTR ma$[rbp]
00d28 e8 00 00 00 00 call stbi__high_bit
00d2d 83 e8 07 sub eax, 7
00d30 89 85 84 07 00
00 mov DWORD PTR ashift$17[rbp], eax
; 6437 : acount = stbi__bitcount(ma);
00d36 8b 8d 84 00 00
00 mov ecx, DWORD PTR ma$[rbp]
00d3c e8 00 00 00 00 call stbi__bitcount
00d41 89 85 04 08 00
00 mov DWORD PTR acount$21[rbp], eax
; 6438 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) {
00d47 83 bd a4 07 00
00 08 cmp DWORD PTR rcount$18[rbp], 8
00d4e 7f 1b jg SHORT $LN86@stbi__bmp_
00d50 83 bd c4 07 00
00 08 cmp DWORD PTR gcount$19[rbp], 8
00d57 7f 12 jg SHORT $LN86@stbi__bmp_
00d59 83 bd e4 07 00
00 08 cmp DWORD PTR bcount$20[rbp], 8
00d60 7f 09 jg SHORT $LN86@stbi__bmp_
00d62 83 bd 04 08 00
00 08 cmp DWORD PTR acount$21[rbp], 8
00d69 7e 3f jle SHORT $LN85@stbi__bmp_
$LN86@stbi__bmp_:
; 6439 : STBI_FREE(out);
00d6b 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00d6f ff 15 00 00 00
00 call QWORD PTR __imp_free
00d75 90 npad 1
; 6440 : return stbi__errpuc("bad masks", "Corrupt BMP");
00d76 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_09DAEBACAB@bad?5masks@
00d7d e8 00 00 00 00 call stbi__err
00d82 85 c0 test eax, eax
00d84 74 0d je SHORT $LN123@stbi__bmp_
00d86 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv474[rbp], 0
00d91 eb 0b jmp SHORT $LN124@stbi__bmp_
$LN123@stbi__bmp_:
00d93 48 c7 85 f8 0c
00 00 00 00 00
00 mov QWORD PTR tv474[rbp], 0
$LN124@stbi__bmp_:
00d9e 48 8b 85 f8 0c
00 00 mov rax, QWORD PTR tv474[rbp]
00da5 e9 68 05 00 00 jmp $LN1@stbi__bmp_
$LN85@stbi__bmp_:
$LN82@stbi__bmp_:
; 6441 : }
; 6442 : }
; 6443 : for (j = 0; j < (int)s->img_y; ++j) {
00daa c7 85 24 05 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
00db4 eb 0e jmp SHORT $LN19@stbi__bmp_
$LN17@stbi__bmp_:
00db6 8b 85 24 05 00
00 mov eax, DWORD PTR j$[rbp]
00dbc ff c0 inc eax
00dbe 89 85 24 05 00
00 mov DWORD PTR j$[rbp], eax
$LN19@stbi__bmp_:
00dc4 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00dcb 8b 40 04 mov eax, DWORD PTR [rax+4]
00dce 39 85 24 05 00
00 cmp DWORD PTR j$[rbp], eax
00dd4 0f 8d 12 03 00
00 jge $LN18@stbi__bmp_
; 6444 : if (easy) {
00dda 83 bd 44 08 00
00 00 cmp DWORD PTR easy$23[rbp], 0
00de1 0f 84 1b 01 00
00 je $LN87@stbi__bmp_
; 6445 : for (i = 0; i < (int)s->img_x; ++i) {
00de7 c7 85 04 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00df1 eb 0e jmp SHORT $LN22@stbi__bmp_
$LN20@stbi__bmp_:
00df3 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
00df9 ff c0 inc eax
00dfb 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
$LN22@stbi__bmp_:
00e01 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00e08 8b 00 mov eax, DWORD PTR [rax]
00e0a 39 85 04 05 00
00 cmp DWORD PTR i$[rbp], eax
00e10 0f 8d e7 00 00
00 jge $LN21@stbi__bmp_
; 6446 : unsigned char a;
; 6447 : out[z + 2] = stbi__get8(s);
00e16 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00e1d e8 00 00 00 00 call stbi__get8
00e22 8b 8d 24 08 00
00 mov ecx, DWORD PTR z$22[rbp]
00e28 83 c1 02 add ecx, 2
00e2b 48 63 c9 movsxd rcx, ecx
00e2e 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
00e32 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6448 : out[z + 1] = stbi__get8(s);
00e35 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00e3c e8 00 00 00 00 call stbi__get8
00e41 8b 8d 24 08 00
00 mov ecx, DWORD PTR z$22[rbp]
00e47 ff c1 inc ecx
00e49 48 63 c9 movsxd rcx, ecx
00e4c 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
00e50 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6449 : out[z + 0] = stbi__get8(s);
00e53 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00e5a e8 00 00 00 00 call stbi__get8
00e5f 8b 8d 24 08 00
00 mov ecx, DWORD PTR z$22[rbp]
00e65 48 63 c9 movsxd rcx, ecx
00e68 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
00e6c 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6450 : z += 3;
00e6f 8b 85 24 08 00
00 mov eax, DWORD PTR z$22[rbp]
00e75 83 c0 03 add eax, 3
00e78 89 85 24 08 00
00 mov DWORD PTR z$22[rbp], eax
; 6451 : a = (easy == 2 ? stbi__get8(s) : 255);
00e7e 83 bd 44 08 00
00 02 cmp DWORD PTR easy$23[rbp], 2
00e85 75 17 jne SHORT $LN125@stbi__bmp_
00e87 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00e8e e8 00 00 00 00 call stbi__get8
00e93 0f b6 c0 movzx eax, al
00e96 89 85 f4 0c 00
00 mov DWORD PTR tv505[rbp], eax
00e9c eb 0a jmp SHORT $LN126@stbi__bmp_
$LN125@stbi__bmp_:
00e9e c7 85 f4 0c 00
00 ff 00 00 00 mov DWORD PTR tv505[rbp], 255 ; 000000ffH
$LN126@stbi__bmp_:
00ea8 0f b6 85 f4 0c
00 00 movzx eax, BYTE PTR tv505[rbp]
00eaf 88 85 64 08 00
00 mov BYTE PTR a$24[rbp], al
; 6452 : all_a |= a;
00eb5 0f b6 85 64 08
00 00 movzx eax, BYTE PTR a$24[rbp]
00ebc 8b 8d a4 00 00
00 mov ecx, DWORD PTR all_a$[rbp]
00ec2 0b c8 or ecx, eax
00ec4 8b c1 mov eax, ecx
00ec6 89 85 a4 00 00
00 mov DWORD PTR all_a$[rbp], eax
; 6453 : if (target == 4)
00ecc 83 bd a4 05 00
00 04 cmp DWORD PTR target$[rbp], 4
00ed3 75 23 jne SHORT $LN89@stbi__bmp_
; 6454 : out[z++] = a;
00ed5 48 63 85 24 08
00 00 movsxd rax, DWORD PTR z$22[rbp]
00edc 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
00ee0 0f b6 95 64 08
00 00 movzx edx, BYTE PTR a$24[rbp]
00ee7 88 14 01 mov BYTE PTR [rcx+rax], dl
00eea 8b 85 24 08 00
00 mov eax, DWORD PTR z$22[rbp]
00ef0 ff c0 inc eax
00ef2 89 85 24 08 00
00 mov DWORD PTR z$22[rbp], eax
$LN89@stbi__bmp_:
; 6455 : }
00ef8 e9 f6 fe ff ff jmp $LN20@stbi__bmp_
$LN21@stbi__bmp_:
; 6456 : } else {
00efd e9 d2 01 00 00 jmp $LN88@stbi__bmp_
$LN87@stbi__bmp_:
; 6457 : int bpp = info.bpp;
00f02 8b 85 c8 05 00
00 mov eax, DWORD PTR info$[rbp]
00f08 89 85 84 08 00
00 mov DWORD PTR bpp$25[rbp], eax
; 6458 : for (i = 0; i < (int)s->img_x; ++i) {
00f0e c7 85 04 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
00f18 eb 0e jmp SHORT $LN25@stbi__bmp_
$LN23@stbi__bmp_:
00f1a 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
00f20 ff c0 inc eax
00f22 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
$LN25@stbi__bmp_:
00f28 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
00f2f 8b 00 mov eax, DWORD PTR [rax]
00f31 39 85 04 05 00
00 cmp DWORD PTR i$[rbp], eax
00f37 0f 8d 97 01 00
00 jge $LN24@stbi__bmp_
; 6459 : stbi__uint32 v = (bpp == 16 ?
00f3d 83 bd 84 08 00
00 10 cmp DWORD PTR bpp$25[rbp], 16
00f44 75 14 jne SHORT $LN127@stbi__bmp_
00f46 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00f4d e8 00 00 00 00 call stbi__get16le
00f52 89 85 f4 0c 00
00 mov DWORD PTR tv522[rbp], eax
00f58 eb 12 jmp SHORT $LN128@stbi__bmp_
$LN127@stbi__bmp_:
00f5a 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
00f61 e8 00 00 00 00 call stbi__get32le
00f66 89 85 f4 0c 00
00 mov DWORD PTR tv522[rbp], eax
$LN128@stbi__bmp_:
00f6c 8b 85 f4 0c 00
00 mov eax, DWORD PTR tv522[rbp]
00f72 89 85 a4 08 00
00 mov DWORD PTR v$26[rbp], eax
; 6460 : (stbi__uint32)stbi__get16le(s) :
; 6461 : stbi__get32le(s));
; 6462 : unsigned int a;
; 6463 : out[z++] = STBI__BYTECAST(
00f78 8b 45 24 mov eax, DWORD PTR mr$[rbp]
00f7b 8b 8d a4 08 00
00 mov ecx, DWORD PTR v$26[rbp]
00f81 23 c8 and ecx, eax
00f83 8b c1 mov eax, ecx
00f85 44 8b 85 a4 07
00 00 mov r8d, DWORD PTR rcount$18[rbp]
00f8c 8b 95 24 07 00
00 mov edx, DWORD PTR rshift$14[rbp]
00f92 8b c8 mov ecx, eax
00f94 e8 00 00 00 00 call stbi__shiftsigned
00f99 25 ff 00 00 00 and eax, 255 ; 000000ffH
00f9e 48 63 8d 24 08
00 00 movsxd rcx, DWORD PTR z$22[rbp]
00fa5 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
00fa9 88 04 0a mov BYTE PTR [rdx+rcx], al
00fac 8b 85 24 08 00
00 mov eax, DWORD PTR z$22[rbp]
00fb2 ff c0 inc eax
00fb4 89 85 24 08 00
00 mov DWORD PTR z$22[rbp], eax
; 6464 : stbi__shiftsigned(v & mr, rshift, rcount));
; 6465 : out[z++] = STBI__BYTECAST(
00fba 8b 45 44 mov eax, DWORD PTR mg$[rbp]
00fbd 8b 8d a4 08 00
00 mov ecx, DWORD PTR v$26[rbp]
00fc3 23 c8 and ecx, eax
00fc5 8b c1 mov eax, ecx
00fc7 44 8b 85 c4 07
00 00 mov r8d, DWORD PTR gcount$19[rbp]
00fce 8b 95 44 07 00
00 mov edx, DWORD PTR gshift$15[rbp]
00fd4 8b c8 mov ecx, eax
00fd6 e8 00 00 00 00 call stbi__shiftsigned
00fdb 25 ff 00 00 00 and eax, 255 ; 000000ffH
00fe0 48 63 8d 24 08
00 00 movsxd rcx, DWORD PTR z$22[rbp]
00fe7 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
00feb 88 04 0a mov BYTE PTR [rdx+rcx], al
00fee 8b 85 24 08 00
00 mov eax, DWORD PTR z$22[rbp]
00ff4 ff c0 inc eax
00ff6 89 85 24 08 00
00 mov DWORD PTR z$22[rbp], eax
; 6466 : stbi__shiftsigned(v & mg, gshift, gcount));
; 6467 : out[z++] = STBI__BYTECAST(
00ffc 8b 45 64 mov eax, DWORD PTR mb$[rbp]
00fff 8b 8d a4 08 00
00 mov ecx, DWORD PTR v$26[rbp]
01005 23 c8 and ecx, eax
01007 8b c1 mov eax, ecx
01009 44 8b 85 e4 07
00 00 mov r8d, DWORD PTR bcount$20[rbp]
01010 8b 95 64 07 00
00 mov edx, DWORD PTR bshift$16[rbp]
01016 8b c8 mov ecx, eax
01018 e8 00 00 00 00 call stbi__shiftsigned
0101d 25 ff 00 00 00 and eax, 255 ; 000000ffH
01022 48 63 8d 24 08
00 00 movsxd rcx, DWORD PTR z$22[rbp]
01029 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
0102d 88 04 0a mov BYTE PTR [rdx+rcx], al
01030 8b 85 24 08 00
00 mov eax, DWORD PTR z$22[rbp]
01036 ff c0 inc eax
01038 89 85 24 08 00
00 mov DWORD PTR z$22[rbp], eax
; 6468 : stbi__shiftsigned(v & mb, bshift, bcount));
; 6469 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255);
0103e 83 bd 84 00 00
00 00 cmp DWORD PTR ma$[rbp], 0
01045 74 2c je SHORT $LN129@stbi__bmp_
01047 8b 85 84 00 00
00 mov eax, DWORD PTR ma$[rbp]
0104d 8b 8d a4 08 00
00 mov ecx, DWORD PTR v$26[rbp]
01053 23 c8 and ecx, eax
01055 8b c1 mov eax, ecx
01057 44 8b 85 04 08
00 00 mov r8d, DWORD PTR acount$21[rbp]
0105e 8b 95 84 07 00
00 mov edx, DWORD PTR ashift$17[rbp]
01064 8b c8 mov ecx, eax
01066 e8 00 00 00 00 call stbi__shiftsigned
0106b 89 85 f4 0c 00
00 mov DWORD PTR tv562[rbp], eax
01071 eb 0a jmp SHORT $LN130@stbi__bmp_
$LN129@stbi__bmp_:
01073 c7 85 f4 0c 00
00 ff 00 00 00 mov DWORD PTR tv562[rbp], 255 ; 000000ffH
$LN130@stbi__bmp_:
0107d 8b 85 f4 0c 00
00 mov eax, DWORD PTR tv562[rbp]
01083 89 85 c4 08 00
00 mov DWORD PTR a$27[rbp], eax
; 6470 : all_a |= a;
01089 8b 85 c4 08 00
00 mov eax, DWORD PTR a$27[rbp]
0108f 8b 8d a4 00 00
00 mov ecx, DWORD PTR all_a$[rbp]
01095 0b c8 or ecx, eax
01097 8b c1 mov eax, ecx
01099 89 85 a4 00 00
00 mov DWORD PTR all_a$[rbp], eax
; 6471 : if (target == 4)
0109f 83 bd a4 05 00
00 04 cmp DWORD PTR target$[rbp], 4
010a6 75 27 jne SHORT $LN90@stbi__bmp_
; 6472 : out[z++] = STBI__BYTECAST(a);
010a8 8b 85 c4 08 00
00 mov eax, DWORD PTR a$27[rbp]
010ae 25 ff 00 00 00 and eax, 255 ; 000000ffH
010b3 48 63 8d 24 08
00 00 movsxd rcx, DWORD PTR z$22[rbp]
010ba 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
010be 88 04 0a mov BYTE PTR [rdx+rcx], al
010c1 8b 85 24 08 00
00 mov eax, DWORD PTR z$22[rbp]
010c7 ff c0 inc eax
010c9 89 85 24 08 00
00 mov DWORD PTR z$22[rbp], eax
$LN90@stbi__bmp_:
; 6473 : }
010cf e9 46 fe ff ff jmp $LN23@stbi__bmp_
$LN24@stbi__bmp_:
$LN88@stbi__bmp_:
; 6474 : }
; 6475 : stbi__skip(s, pad);
010d4 8b 95 84 05 00
00 mov edx, DWORD PTR pad$[rbp]
010da 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
010e1 e8 00 00 00 00 call stbi__skip
010e6 90 npad 1
; 6476 : }
010e7 e9 ca fc ff ff jmp $LN17@stbi__bmp_
$LN18@stbi__bmp_:
$LN55@stbi__bmp_:
; 6477 : }
; 6478 :
; 6479 : // if alpha channel is all 0s, replace with all 255s
; 6480 : if (target == 4 && all_a == 0)
010ec 83 bd a4 05 00
00 04 cmp DWORD PTR target$[rbp], 4
010f3 75 53 jne SHORT $LN91@stbi__bmp_
010f5 83 bd a4 00 00
00 00 cmp DWORD PTR all_a$[rbp], 0
010fc 75 4a jne SHORT $LN91@stbi__bmp_
; 6481 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4)
010fe 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
01105 8b 00 mov eax, DWORD PTR [rax]
01107 c1 e0 02 shl eax, 2
0110a 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
01111 0f af 41 04 imul eax, DWORD PTR [rcx+4]
01115 ff c8 dec eax
01117 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
0111d eb 0f jmp SHORT $LN28@stbi__bmp_
$LN26@stbi__bmp_:
0111f 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
01125 83 e8 04 sub eax, 4
01128 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
$LN28@stbi__bmp_:
0112e 83 bd 04 05 00
00 00 cmp DWORD PTR i$[rbp], 0
01135 7c 11 jl SHORT $LN27@stbi__bmp_
; 6482 : out[i] = 255;
01137 48 63 85 04 05
00 00 movsxd rax, DWORD PTR i$[rbp]
0113e 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
01142 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
01146 eb d7 jmp SHORT $LN26@stbi__bmp_
$LN27@stbi__bmp_:
$LN91@stbi__bmp_:
; 6483 :
; 6484 : if (flip_vertically) {
01148 83 bd 64 05 00
00 00 cmp DWORD PTR flip_vertically$[rbp], 0
0114f 0f 84 21 01 00
00 je $LN92@stbi__bmp_
; 6485 : stbi_uc t;
; 6486 : for (j = 0; j < (int)s->img_y >> 1; ++j) {
01155 c7 85 24 05 00
00 00 00 00 00 mov DWORD PTR j$[rbp], 0
0115f eb 0e jmp SHORT $LN31@stbi__bmp_
$LN29@stbi__bmp_:
01161 8b 85 24 05 00
00 mov eax, DWORD PTR j$[rbp]
01167 ff c0 inc eax
01169 89 85 24 05 00
00 mov DWORD PTR j$[rbp], eax
$LN31@stbi__bmp_:
0116f 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
01176 8b 40 04 mov eax, DWORD PTR [rax+4]
01179 d1 f8 sar eax, 1
0117b 39 85 24 05 00
00 cmp DWORD PTR j$[rbp], eax
01181 0f 8d ef 00 00
00 jge $LN30@stbi__bmp_
; 6487 : stbi_uc *p1 = out + j * s->img_x * target;
01187 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0118e 8b 8d 24 05 00
00 mov ecx, DWORD PTR j$[rbp]
01194 0f af 08 imul ecx, DWORD PTR [rax]
01197 8b c1 mov eax, ecx
01199 0f af 85 a4 05
00 00 imul eax, DWORD PTR target$[rbp]
011a0 8b c0 mov eax, eax
011a2 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
011a6 48 03 c8 add rcx, rax
011a9 48 8b c1 mov rax, rcx
011ac 48 89 85 08 09
00 00 mov QWORD PTR p1$29[rbp], rax
; 6488 : stbi_uc *p2 = out + (s->img_y - 1 - j) * s->img_x * target;
011b3 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
011ba 8b 40 04 mov eax, DWORD PTR [rax+4]
011bd ff c8 dec eax
011bf 2b 85 24 05 00
00 sub eax, DWORD PTR j$[rbp]
011c5 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
011cc 0f af 01 imul eax, DWORD PTR [rcx]
011cf 0f af 85 a4 05
00 00 imul eax, DWORD PTR target$[rbp]
011d6 8b c0 mov eax, eax
011d8 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
011dc 48 03 c8 add rcx, rax
011df 48 8b c1 mov rax, rcx
011e2 48 89 85 28 09
00 00 mov QWORD PTR p2$30[rbp], rax
; 6489 : for (i = 0; i < (int)s->img_x * target; ++i) {
011e9 c7 85 04 05 00
00 00 00 00 00 mov DWORD PTR i$[rbp], 0
011f3 eb 0e jmp SHORT $LN34@stbi__bmp_
$LN32@stbi__bmp_:
011f5 8b 85 04 05 00
00 mov eax, DWORD PTR i$[rbp]
011fb ff c0 inc eax
011fd 89 85 04 05 00
00 mov DWORD PTR i$[rbp], eax
$LN34@stbi__bmp_:
01203 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
0120a 8b 00 mov eax, DWORD PTR [rax]
0120c 0f af 85 a4 05
00 00 imul eax, DWORD PTR target$[rbp]
01213 39 85 04 05 00
00 cmp DWORD PTR i$[rbp], eax
01219 7d 56 jge SHORT $LN33@stbi__bmp_
; 6490 : t = p1[i];
0121b 48 63 85 04 05
00 00 movsxd rax, DWORD PTR i$[rbp]
01222 48 8b 8d 08 09
00 00 mov rcx, QWORD PTR p1$29[rbp]
01229 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0122d 88 85 e4 08 00
00 mov BYTE PTR t$28[rbp], al
; 6491 : p1[i] = p2[i];
01233 48 63 85 04 05
00 00 movsxd rax, DWORD PTR i$[rbp]
0123a 48 63 8d 04 05
00 00 movsxd rcx, DWORD PTR i$[rbp]
01241 48 8b 95 08 09
00 00 mov rdx, QWORD PTR p1$29[rbp]
01248 4c 8b 85 28 09
00 00 mov r8, QWORD PTR p2$30[rbp]
0124f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
01254 88 04 0a mov BYTE PTR [rdx+rcx], al
; 6492 : p2[i] = t;
01257 48 63 85 04 05
00 00 movsxd rax, DWORD PTR i$[rbp]
0125e 48 8b 8d 28 09
00 00 mov rcx, QWORD PTR p2$30[rbp]
01265 0f b6 95 e4 08
00 00 movzx edx, BYTE PTR t$28[rbp]
0126c 88 14 01 mov BYTE PTR [rcx+rax], dl
; 6493 : }
0126f eb 84 jmp SHORT $LN32@stbi__bmp_
$LN33@stbi__bmp_:
; 6494 : }
01271 e9 eb fe ff ff jmp $LN29@stbi__bmp_
$LN30@stbi__bmp_:
$LN92@stbi__bmp_:
; 6495 : }
; 6496 :
; 6497 : if (req_comp && req_comp != target) {
01276 83 bd 50 0d 00
00 00 cmp DWORD PTR req_comp$[rbp], 0
0127d 74 4d je SHORT $LN93@stbi__bmp_
0127f 8b 85 a4 05 00
00 mov eax, DWORD PTR target$[rbp]
01285 39 85 50 0d 00
00 cmp DWORD PTR req_comp$[rbp], eax
0128b 74 3f je SHORT $LN93@stbi__bmp_
; 6498 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y);
0128d 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
01294 8b 40 04 mov eax, DWORD PTR [rax+4]
01297 89 44 24 20 mov DWORD PTR [rsp+32], eax
0129b 48 8b 85 30 0d
00 00 mov rax, QWORD PTR s$[rbp]
012a2 44 8b 08 mov r9d, DWORD PTR [rax]
012a5 44 8b 85 50 0d
00 00 mov r8d, DWORD PTR req_comp$[rbp]
012ac 8b 95 a4 05 00
00 mov edx, DWORD PTR target$[rbp]
012b2 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
012b6 e8 00 00 00 00 call stbi__convert_format
012bb 48 89 45 08 mov QWORD PTR out$[rbp], rax
; 6499 : if (out == NULL)
012bf 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
012c4 75 06 jne SHORT $LN94@stbi__bmp_
; 6500 : return out; // stbi__convert_format frees input on failure
012c6 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
012ca eb 46 jmp SHORT $LN1@stbi__bmp_
$LN94@stbi__bmp_:
$LN93@stbi__bmp_:
; 6501 : }
; 6502 :
; 6503 : *x = s->img_x;
012cc 48 8b 85 38 0d
00 00 mov rax, QWORD PTR x$[rbp]
012d3 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
012da 8b 09 mov ecx, DWORD PTR [rcx]
012dc 89 08 mov DWORD PTR [rax], ecx
; 6504 : *y = s->img_y;
012de 48 8b 85 40 0d
00 00 mov rax, QWORD PTR y$[rbp]
012e5 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
012ec 8b 49 04 mov ecx, DWORD PTR [rcx+4]
012ef 89 08 mov DWORD PTR [rax], ecx
; 6505 : if (comp)
012f1 48 83 bd 48 0d
00 00 00 cmp QWORD PTR comp$[rbp], 0
012f9 74 13 je SHORT $LN95@stbi__bmp_
; 6506 : *comp = s->img_n;
012fb 48 8b 85 48 0d
00 00 mov rax, QWORD PTR comp$[rbp]
01302 48 8b 8d 30 0d
00 00 mov rcx, QWORD PTR s$[rbp]
01309 8b 49 08 mov ecx, DWORD PTR [rcx+8]
0130c 89 08 mov DWORD PTR [rax], ecx
$LN95@stbi__bmp_:
; 6507 : return out;
0130e 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
$LN1@stbi__bmp_:
; 6508 : }
01312 48 8b f8 mov rdi, rax
01315 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
01319 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__bmp_load$rtcFrameData
01320 e8 00 00 00 00 call _RTC_CheckStackVars
01325 48 8b c7 mov rax, rdi
01328 48 8b 8d 00 0d
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0132f 48 33 cd xor rcx, rbp
01332 e8 00 00 00 00 call __security_check_cookie
01337 48 8d a5 18 0d
00 00 lea rsp, QWORD PTR [rbp+3352]
0133e 5f pop rdi
0133f 5d pop rbp
01340 c3 ret 0
stbi__bmp_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__bmp_test
_TEXT SEGMENT
r$ = 4
s$ = 256
stbi__bmp_test PROC ; COMDAT
; 6059 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 6060 : int r = stbi__bmp_test_raw(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__bmp_test_raw
0002c 89 45 04 mov DWORD PTR r$[rbp], eax
; 6061 : stbi__rewind(s);
0002f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__rewind
0003b 90 npad 1
; 6062 : return r;
0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 6063 : }
0003f 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00046 5f pop rdi
00047 5d pop rbp
00048 c3 ret 0
stbi__bmp_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__png_is16
_TEXT SEGMENT
p$ = 8
__$ArrayPad$ = 248
s$ = 288
stbi__png_is16 PROC ; COMDAT
; 6025 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00018 b9 12 00 00 00 mov ecx, 18
0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00022 f3 ab rep stosd
00024 48 8b 8c 24 48
01 00 00 mov rcx, QWORD PTR [rsp+328]
0002c 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00033 48 33 c5 xor rax, rbp
00036 48 89 85 f8 00
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0003d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00049 90 npad 1
; 6026 : stbi__png p;
; 6027 : p.s = s;
0004a 48 8b 85 20 01
00 00 mov rax, QWORD PTR s$[rbp]
00051 48 89 45 08 mov QWORD PTR p$[rbp], rax
; 6028 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL))
00055 45 33 c9 xor r9d, r9d
00058 45 33 c0 xor r8d, r8d
0005b 33 d2 xor edx, edx
0005d 48 8d 4d 08 lea rcx, QWORD PTR p$[rbp]
00061 e8 00 00 00 00 call stbi__png_info_raw
00066 85 c0 test eax, eax
00068 75 04 jne SHORT $LN2@stbi__png_
; 6029 : return 0;
0006a 33 c0 xor eax, eax
0006c eb 19 jmp SHORT $LN1@stbi__png_
$LN2@stbi__png_:
; 6030 : if (p.depth != 16) {
0006e 83 7d 28 10 cmp DWORD PTR p$[rbp+32], 16
00072 74 0e je SHORT $LN3@stbi__png_
; 6031 : stbi__rewind(p.s);
00074 48 8b 4d 08 mov rcx, QWORD PTR p$[rbp]
00078 e8 00 00 00 00 call stbi__rewind
0007d 90 npad 1
; 6032 : return 0;
0007e 33 c0 xor eax, eax
00080 eb 05 jmp SHORT $LN1@stbi__png_
$LN3@stbi__png_:
; 6033 : }
; 6034 : return 1;
00082 b8 01 00 00 00 mov eax, 1
$LN1@stbi__png_:
; 6035 : }
00087 48 8b f8 mov rdi, rax
0008a 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0008e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__png_is16$rtcFrameData
00095 e8 00 00 00 00 call _RTC_CheckStackVars
0009a 48 8b c7 mov rax, rdi
0009d 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000a4 48 33 cd xor rcx, rbp
000a7 e8 00 00 00 00 call __security_check_cookie
000ac 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000b3 5f pop rdi
000b4 5d pop rbp
000b5 c3 ret 0
stbi__png_is16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__png_info
_TEXT SEGMENT
p$ = 8
__$ArrayPad$ = 248
s$ = 288
x$ = 296
y$ = 304
comp$ = 312
stbi__png_info PROC ; COMDAT
; 6018 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 12 00 00 00 mov ecx, 18
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 48
01 00 00 mov rcx, QWORD PTR [rsp+328]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 f8 00
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 6019 : stbi__png p;
; 6020 : p.s = s;
00059 48 8b 85 20 01
00 00 mov rax, QWORD PTR s$[rbp]
00060 48 89 45 08 mov QWORD PTR p$[rbp], rax
; 6021 : return stbi__png_info_raw(&p, x, y, comp);
00064 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
0006b 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
00072 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
00079 48 8d 4d 08 lea rcx, QWORD PTR p$[rbp]
0007d e8 00 00 00 00 call stbi__png_info_raw
; 6022 : }
00082 48 8b f8 mov rdi, rax
00085 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00089 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__png_info$rtcFrameData
00090 e8 00 00 00 00 call _RTC_CheckStackVars
00095 48 8b c7 mov rax, rdi
00098 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0009f 48 33 cd xor rcx, rbp
000a2 e8 00 00 00 00 call __security_check_cookie
000a7 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000ae 5f pop rdi
000af 5d pop rbp
000b0 c3 ret 0
stbi__png_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__png_load
_TEXT SEGMENT
p$ = 8
__$ArrayPad$ = 248
s$ = 288
x$ = 296
y$ = 304
comp$ = 312
req_comp$ = 320
ri$ = 328
stbi__png_load PROC ; COMDAT
; 5988 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 38 01
00 00 sub rsp, 312 ; 00000138H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 12 00 00 00 mov ecx, 18
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 58
01 00 00 mov rcx, QWORD PTR [rsp+344]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 f8 00
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 5989 : stbi__png p;
; 5990 : p.s = s;
00059 48 8b 85 20 01
00 00 mov rax, QWORD PTR s$[rbp]
00060 48 89 45 08 mov QWORD PTR p$[rbp], rax
; 5991 : return stbi__do_png(&p, x, y, comp, req_comp, ri);
00064 48 8b 85 48 01
00 00 mov rax, QWORD PTR ri$[rbp]
0006b 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
00070 8b 85 40 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007a 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
00081 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
00088 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
0008f 48 8d 4d 08 lea rcx, QWORD PTR p$[rbp]
00093 e8 00 00 00 00 call stbi__do_png
; 5992 : }
00098 48 8b f8 mov rdi, rax
0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
0009f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__png_load$rtcFrameData
000a6 e8 00 00 00 00 call _RTC_CheckStackVars
000ab 48 8b c7 mov rax, rdi
000ae 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000b5 48 33 cd xor rcx, rbp
000b8 e8 00 00 00 00 call __security_check_cookie
000bd 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000c4 5f pop rdi
000c5 5d pop rbp
000c6 c3 ret 0
stbi__png_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__png_test
_TEXT SEGMENT
r$ = 4
s$ = 256
stbi__png_test PROC ; COMDAT
; 5995 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 5996 : int r;
; 5997 : r = stbi__check_png_header(s);
00020 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00027 e8 00 00 00 00 call stbi__check_png_header
0002c 89 45 04 mov DWORD PTR r$[rbp], eax
; 5998 : stbi__rewind(s);
0002f 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00036 e8 00 00 00 00 call stbi__rewind
0003b 90 npad 1
; 5999 : return r;
0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 6000 : }
0003f 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00046 5f pop rdi
00047 5d pop rbp
00048 c3 ret 0
stbi__png_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_info
_TEXT SEGMENT
result$ = 4
j$ = 40
s$ = 288
x$ = 296
y$ = 304
comp$ = 312
stbi__jpeg_info PROC ; COMDAT
; 4599 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 4600 : int result;
; 4601 : stbi__jpeg *j = (stbi__jpeg *)(stbi__malloc(sizeof(stbi__jpeg)));
0002f b9 88 48 00 00 mov ecx, 18568 ; 00004888H
00034 e8 00 00 00 00 call stbi__malloc
00039 48 89 45 28 mov QWORD PTR j$[rbp], rax
; 4602 : if (!j)
0003d 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0
00042 75 0e jne SHORT $LN2@stbi__jpeg
; 4603 : return stbi__err("outofmem", "Out of memory");
00044 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0004b e8 00 00 00 00 call stbi__err
00050 eb 4f jmp SHORT $LN1@stbi__jpeg
$LN2@stbi__jpeg:
; 4604 : memset(j, 0, sizeof(stbi__jpeg));
00052 41 b8 88 48 00
00 mov r8d, 18568 ; 00004888H
00058 33 d2 xor edx, edx
0005a 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
0005e e8 00 00 00 00 call memset
00063 90 npad 1
; 4605 : j->s = s;
00064 48 8b 45 28 mov rax, QWORD PTR j$[rbp]
00068 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
0006f 48 89 08 mov QWORD PTR [rax], rcx
; 4606 : result = stbi__jpeg_info_raw(j, x, y, comp);
00072 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
00079 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
00080 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
00087 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
0008b e8 00 00 00 00 call stbi__jpeg_info_raw
00090 89 45 04 mov DWORD PTR result$[rbp], eax
; 4607 : STBI_FREE(j);
00093 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
00097 ff 15 00 00 00
00 call QWORD PTR __imp_free
0009d 90 npad 1
; 4608 : return result;
0009e 8b 45 04 mov eax, DWORD PTR result$[rbp]
$LN1@stbi__jpeg:
; 4609 : }
000a1 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000a8 5f pop rdi
000a9 5d pop rbp
000aa c3 ret 0
stbi__jpeg_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_load
_TEXT SEGMENT
result$ = 8
j$ = 40
tv70 = 248
s$ = 288
x$ = 296
y$ = 304
comp$ = 312
req_comp$ = 320
ri$ = 328
stbi__jpeg_load PROC ; COMDAT
; 4554 : {
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 38 01
00 00 sub rsp, 312 ; 00000138H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 4555 : unsigned char *result;
; 4556 : stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg));
0002f b9 88 48 00 00 mov ecx, 18568 ; 00004888H
00034 e8 00 00 00 00 call stbi__malloc
00039 48 89 45 28 mov QWORD PTR j$[rbp], rax
; 4557 : if (!j)
0003d 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0
00042 75 31 jne SHORT $LN2@stbi__jpeg
; 4558 : return stbi__errpuc("outofmem", "Out of memory");
00044 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0004b e8 00 00 00 00 call stbi__err
00050 85 c0 test eax, eax
00052 74 0d je SHORT $LN4@stbi__jpeg
00054 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv70[rbp], 0
0005f eb 0b jmp SHORT $LN5@stbi__jpeg
$LN4@stbi__jpeg:
00061 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv70[rbp], 0
$LN5@stbi__jpeg:
0006c 48 8b 85 f8 00
00 00 mov rax, QWORD PTR tv70[rbp]
00073 eb 65 jmp SHORT $LN1@stbi__jpeg
$LN2@stbi__jpeg:
; 4559 : memset(j, 0, sizeof(stbi__jpeg));
00075 41 b8 88 48 00
00 mov r8d, 18568 ; 00004888H
0007b 33 d2 xor edx, edx
0007d 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
00081 e8 00 00 00 00 call memset
00086 90 npad 1
; 4560 : STBI_NOTUSED(ri);
; 4561 : j->s = s;
00087 48 8b 45 28 mov rax, QWORD PTR j$[rbp]
0008b 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00092 48 89 08 mov QWORD PTR [rax], rcx
; 4562 : stbi__setup_jpeg(j);
00095 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
00099 e8 00 00 00 00 call stbi__setup_jpeg
0009e 90 npad 1
; 4563 : result = load_jpeg_image(j, x, y, comp, req_comp);
0009f 8b 85 40 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
000a5 89 44 24 20 mov DWORD PTR [rsp+32], eax
000a9 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
000b0 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
000b7 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
000be 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
000c2 e8 00 00 00 00 call load_jpeg_image
000c7 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 4564 : STBI_FREE(j);
000cb 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
000cf ff 15 00 00 00
00 call QWORD PTR __imp_free
000d5 90 npad 1
; 4565 : return result;
000d6 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
$LN1@stbi__jpeg:
; 4566 : }
000da 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000e1 5f pop rdi
000e2 5d pop rbp
000e3 c3 ret 0
stbi__jpeg_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__jpeg_test
_TEXT SEGMENT
r$ = 4
j$ = 40
s$ = 288
stbi__jpeg_test PROC ; COMDAT
; 4569 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 4570 : int r;
; 4571 : stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg));
00020 b9 88 48 00 00 mov ecx, 18568 ; 00004888H
00025 e8 00 00 00 00 call stbi__malloc
0002a 48 89 45 28 mov QWORD PTR j$[rbp], rax
; 4572 : if (!j)
0002e 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0
00033 75 0e jne SHORT $LN2@stbi__jpeg
; 4573 : return stbi__err("outofmem", "Out of memory");
00035 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
0003c e8 00 00 00 00 call stbi__err
00041 eb 56 jmp SHORT $LN1@stbi__jpeg
$LN2@stbi__jpeg:
; 4574 : memset(j, 0, sizeof(stbi__jpeg));
00043 41 b8 88 48 00
00 mov r8d, 18568 ; 00004888H
00049 33 d2 xor edx, edx
0004b 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
0004f e8 00 00 00 00 call memset
00054 90 npad 1
; 4575 : j->s = s;
00055 48 8b 45 28 mov rax, QWORD PTR j$[rbp]
00059 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00060 48 89 08 mov QWORD PTR [rax], rcx
; 4576 : stbi__setup_jpeg(j);
00063 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
00067 e8 00 00 00 00 call stbi__setup_jpeg
0006c 90 npad 1
; 4577 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type);
0006d ba 01 00 00 00 mov edx, 1
00072 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
00076 e8 00 00 00 00 call stbi__decode_jpeg_header
0007b 89 45 04 mov DWORD PTR r$[rbp], eax
; 4578 : stbi__rewind(s);
0007e 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR s$[rbp]
00085 e8 00 00 00 00 call stbi__rewind
0008a 90 npad 1
; 4579 : STBI_FREE(j);
0008b 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
0008f ff 15 00 00 00
00 call QWORD PTR __imp_free
00095 90 npad 1
; 4580 : return r;
00096 8b 45 04 mov eax, DWORD PTR r$[rbp]
$LN1@stbi__jpeg:
; 4581 : }
00099 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000a0 5f pop rdi
000a1 5d pop rbp
000a2 c3 ret 0
stbi__jpeg_test ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__rewind
_TEXT SEGMENT
s$ = 224
stbi__rewind PROC ; COMDAT
; 900 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 901 : // conceptually rewind SHOULD rewind to the beginning of the stream,
; 902 : // but we just rewind to the beginning of the initial buffer, because
; 903 : // we only use it after doing 'test', which only ever looks at at most 92 bytes
; 904 : s->img_buffer = s->img_buffer_original;
00020 48 8b 85 e0 00
00 00 mov rax, QWORD PTR s$[rbp]
00027 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0002e 48 8b 89 d0 00
00 00 mov rcx, QWORD PTR [rcx+208]
00035 48 89 88 c0 00
00 00 mov QWORD PTR [rax+192], rcx
; 905 : s->img_buffer_end = s->img_buffer_original_end;
0003c 48 8b 85 e0 00
00 00 mov rax, QWORD PTR s$[rbp]
00043 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0004a 48 8b 89 d8 00
00 00 mov rcx, QWORD PTR [rcx+216]
00051 48 89 88 c8 00
00 00 mov QWORD PTR [rax+200], rcx
; 906 : }
00058 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0005f 5f pop rdi
00060 5d pop rbp
00061 c3 ret 0
stbi__rewind ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__start_file
_TEXT SEGMENT
s$ = 224
f$ = 232
stbi__start_file PROC ; COMDAT
; 891 : {
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 892 : stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *)f);
00025 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR f$[rbp]
0002c 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__stdio_callbacks
00033 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR s$[rbp]
0003a e8 00 00 00 00 call stbi__start_callbacks
0003f 90 npad 1
; 893 : }
00040 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00047 5f pop rdi
00048 5d pop rbp
00049 c3 ret 0
stbi__start_file ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__stdio_eof
_TEXT SEGMENT
tv70 = 192
user$ = 240
stbi__stdio_eof PROC ; COMDAT
; 880 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 881 : return feof((FILE *)user) || ferror((FILE *)user);
00020 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR user$[rbp]
00027 ff 15 00 00 00
00 call QWORD PTR __imp_feof
0002d 85 c0 test eax, eax
0002f 75 1d jne SHORT $LN3@stbi__stdi
00031 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR user$[rbp]
00038 ff 15 00 00 00
00 call QWORD PTR __imp_ferror
0003e 85 c0 test eax, eax
00040 75 0c jne SHORT $LN3@stbi__stdi
00042 c7 85 c0 00 00
00 00 00 00 00 mov DWORD PTR tv70[rbp], 0
0004c eb 0a jmp SHORT $LN4@stbi__stdi
$LN3@stbi__stdi:
0004e c7 85 c0 00 00
00 01 00 00 00 mov DWORD PTR tv70[rbp], 1
$LN4@stbi__stdi:
00058 8b 85 c0 00 00
00 mov eax, DWORD PTR tv70[rbp]
; 882 : }
0005e 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
00065 5f pop rdi
00066 5d pop rbp
00067 c3 ret 0
stbi__stdio_eof ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__stdio_skip
_TEXT SEGMENT
ch$ = 4
user$ = 256
n$ = 264
stbi__stdio_skip PROC ; COMDAT
; 870 : {
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00023 90 npad 1
; 871 : int ch;
; 872 : fseek((FILE *)user, n, SEEK_CUR);
00024 41 b8 01 00 00
00 mov r8d, 1
0002a 8b 95 08 01 00
00 mov edx, DWORD PTR n$[rbp]
00030 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR user$[rbp]
00037 ff 15 00 00 00
00 call QWORD PTR __imp_fseek
0003d 90 npad 1
; 873 : ch = fgetc((FILE *)user); /* have to read a byte to reset feof()'s flag */
0003e 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR user$[rbp]
00045 ff 15 00 00 00
00 call QWORD PTR __imp_fgetc
0004b 89 45 04 mov DWORD PTR ch$[rbp], eax
; 874 : if (ch != EOF) {
0004e 83 7d 04 ff cmp DWORD PTR ch$[rbp], -1
00052 74 11 je SHORT $LN2@stbi__stdi
; 875 : ungetc(ch, (FILE *)user); /* push byte back onto stream if valid. */
00054 48 8b 95 00 01
00 00 mov rdx, QWORD PTR user$[rbp]
0005b 8b 4d 04 mov ecx, DWORD PTR ch$[rbp]
0005e ff 15 00 00 00
00 call QWORD PTR __imp_ungetc
00064 90 npad 1
$LN2@stbi__stdi:
; 876 : }
; 877 : }
00065 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
0006c 5f pop rdi
0006d 5d pop rbp
0006e c3 ret 0
stbi__stdio_skip ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__stdio_read
_TEXT SEGMENT
user$ = 224
data$ = 232
size$ = 240
stbi__stdio_read PROC ; COMDAT
; 865 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 866 : return (int)fread(data, 1, size, (FILE *)user);
0002a 48 63 85 f0 00
00 00 movsxd rax, DWORD PTR size$[rbp]
00031 4c 8b 8d e0 00
00 00 mov r9, QWORD PTR user$[rbp]
00038 4c 8b c0 mov r8, rax
0003b ba 01 00 00 00 mov edx, 1
00040 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR data$[rbp]
00047 ff 15 00 00 00
00 call QWORD PTR __imp_fread
; 867 : }
0004d 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00054 5f pop rdi
00055 5d pop rbp
00056 c3 ret 0
stbi__stdio_read ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__start_callbacks
_TEXT SEGMENT
tv72 = 192
s$ = 240
c$ = 248
user$ = 256
stbi__start_callbacks PROC ; COMDAT
; 851 : {
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 56 push rsi
00011 57 push rdi
00012 48 81 ec f0 00
00 00 sub rsp, 240 ; 000000f0H
00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002a 90 npad 1
; 852 : s->io = *c;
0002b 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00032 48 8d 78 10 lea rdi, QWORD PTR [rax+16]
00036 48 8b b5 f8 00
00 00 mov rsi, QWORD PTR c$[rbp]
0003d b9 18 00 00 00 mov ecx, 24
00042 f3 a4 rep movsb
; 853 : s->io_user_data = user;
00044 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0004b 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR user$[rbp]
00052 48 89 48 28 mov QWORD PTR [rax+40], rcx
; 854 : s->buflen = sizeof(s->buffer_start);
00056 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0005d c7 40 34 80 00
00 00 mov DWORD PTR [rax+52], 128 ; 00000080H
; 855 : s->read_from_callbacks = 1;
00064 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0006b c7 40 30 01 00
00 00 mov DWORD PTR [rax+48], 1
; 856 : s->callback_already_read = 0;
00072 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00079 c7 80 b8 00 00
00 00 00 00 00 mov DWORD PTR [rax+184], 0
; 857 : s->img_buffer = s->img_buffer_original = s->buffer_start;
00083 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0008a 48 83 c0 38 add rax, 56 ; 00000038H
0008e 48 89 85 c0 00
00 00 mov QWORD PTR tv72[rbp], rax
00095 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0009c 48 8b 8d c0 00
00 00 mov rcx, QWORD PTR tv72[rbp]
000a3 48 89 88 d0 00
00 00 mov QWORD PTR [rax+208], rcx
000aa 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
000b1 48 8b 8d c0 00
00 00 mov rcx, QWORD PTR tv72[rbp]
000b8 48 89 88 c0 00
00 00 mov QWORD PTR [rax+192], rcx
; 858 : stbi__refill_buffer(s);
000bf 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR s$[rbp]
000c6 e8 00 00 00 00 call stbi__refill_buffer
000cb 90 npad 1
; 859 : s->img_buffer_original_end = s->img_buffer_end;
000cc 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
000d3 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR s$[rbp]
000da 48 8b 89 c8 00
00 00 mov rcx, QWORD PTR [rcx+200]
000e1 48 89 88 d8 00
00 00 mov QWORD PTR [rax+216], rcx
; 860 : }
000e8 48 8d a5 d0 00
00 00 lea rsp, QWORD PTR [rbp+208]
000ef 5f pop rdi
000f0 5e pop rsi
000f1 5d pop rbp
000f2 c3 ret 0
stbi__start_callbacks ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__start_mem
_TEXT SEGMENT
tv72 = 192
s$ = 240
buffer$ = 248
len$ = 256
stbi__start_mem PROC ; COMDAT
; 841 : {
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 842 : s->io.read = NULL;
0002a 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00031 48 c7 40 10 00
00 00 00 mov QWORD PTR [rax+16], 0
; 843 : s->read_from_callbacks = 0;
00039 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00040 c7 40 30 00 00
00 00 mov DWORD PTR [rax+48], 0
; 844 : s->callback_already_read = 0;
00047 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0004e c7 80 b8 00 00
00 00 00 00 00 mov DWORD PTR [rax+184], 0
; 845 : s->img_buffer = s->img_buffer_original = (stbi_uc *)buffer;
00058 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
0005f 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR buffer$[rbp]
00066 48 89 88 d0 00
00 00 mov QWORD PTR [rax+208], rcx
0006d 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
00074 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR buffer$[rbp]
0007b 48 89 88 c0 00
00 00 mov QWORD PTR [rax+192], rcx
; 846 : s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *)buffer + len;
00082 48 63 85 00 01
00 00 movsxd rax, DWORD PTR len$[rbp]
00089 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR buffer$[rbp]
00090 48 03 c8 add rcx, rax
00093 48 89 8d c0 00
00 00 mov QWORD PTR tv72[rbp], rcx
0009a 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
000a1 48 8b 8d c0 00
00 00 mov rcx, QWORD PTR tv72[rbp]
000a8 48 89 88 d8 00
00 00 mov QWORD PTR [rax+216], rcx
000af 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp]
000b6 48 8b 8d c0 00
00 00 mov rcx, QWORD PTR tv72[rbp]
000bd 48 89 88 c8 00
00 00 mov QWORD PTR [rax+200], rcx
; 847 : }
000c4 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
000cb 5f pop rdi
000cc 5d pop rbp
000cd c3 ret 0
stbi__start_mem ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__refill_buffer
_TEXT SEGMENT
n$ = 4
s$ = 256
stbi__refill_buffer PROC ; COMDAT
; 1672 : {
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1673 : int n = (s->io.read)(s->io_user_data, (char *)s->buffer_start, s->buflen);
00020 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00027 48 83 c0 38 add rax, 56 ; 00000038H
0002b 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00032 44 8b 41 34 mov r8d, DWORD PTR [rcx+52]
00036 48 8b d0 mov rdx, rax
00039 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00040 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
00044 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
0004b ff 50 10 call QWORD PTR [rax+16]
0004e 89 45 04 mov DWORD PTR n$[rbp], eax
; 1674 : s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original);
00051 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00058 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
0005f 48 8b 89 d0 00
00 00 mov rcx, QWORD PTR [rcx+208]
00066 48 8b 80 c0 00
00 00 mov rax, QWORD PTR [rax+192]
0006d 48 2b c1 sub rax, rcx
00070 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00077 03 81 b8 00 00
00 add eax, DWORD PTR [rcx+184]
0007d 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00084 89 81 b8 00 00
00 mov DWORD PTR [rcx+184], eax
; 1675 : if (n == 0) {
0008a 83 7d 04 00 cmp DWORD PTR n$[rbp], 0
0008e 75 53 jne SHORT $LN2@stbi__refi
; 1676 : // at end of file, treat same as if from memory, but need to handle case
; 1677 : // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file
; 1678 : s->read_from_callbacks = 0;
00090 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
00097 c7 40 30 00 00
00 00 mov DWORD PTR [rax+48], 0
; 1679 : s->img_buffer = s->buffer_start;
0009e 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
000a5 48 83 c0 38 add rax, 56 ; 00000038H
000a9 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000b0 48 89 81 c0 00
00 00 mov QWORD PTR [rcx+192], rax
; 1680 : s->img_buffer_end = s->buffer_start + 1;
000b7 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
000be 48 83 c0 39 add rax, 57 ; 00000039H
000c2 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000c9 48 89 81 c8 00
00 00 mov QWORD PTR [rcx+200], rax
; 1681 : *s->img_buffer = 0;
000d0 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
000d7 48 8b 80 c0 00
00 00 mov rax, QWORD PTR [rax+192]
000de c6 00 00 mov BYTE PTR [rax], 0
; 1682 : } else {
000e1 eb 37 jmp SHORT $LN3@stbi__refi
$LN2@stbi__refi:
; 1683 : s->img_buffer = s->buffer_start;
000e3 48 8b 85 00 01
00 00 mov rax, QWORD PTR s$[rbp]
000ea 48 83 c0 38 add rax, 56 ; 00000038H
000ee 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
000f5 48 89 81 c0 00
00 00 mov QWORD PTR [rcx+192], rax
; 1684 : s->img_buffer_end = s->buffer_start + n;
000fc 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
00100 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00107 48 8d 44 01 38 lea rax, QWORD PTR [rcx+rax+56]
0010c 48 8b 8d 00 01
00 00 mov rcx, QWORD PTR s$[rbp]
00113 48 89 81 c8 00
00 00 mov QWORD PTR [rcx+200], rax
$LN3@stbi__refi:
; 1685 : }
; 1686 : }
0011a 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00121 5f pop rdi
00122 5d pop rbp
00123 c3 ret 0
stbi__refill_buffer ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__sse2_available
_TEXT SEGMENT
info3$ = 4
tv68 = 212
stbi__sse2_available PROC ; COMDAT
; 771 : {
00000 40 55 push rbp
00002 57 push rdi
00003 48 81 ec 08 01
00 00 sub rsp, 264 ; 00000108H
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0000f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001b 90 npad 1
; 772 : int info3 = stbi__cpuid3();
0001c e8 00 00 00 00 call stbi__cpuid3
00021 89 45 04 mov DWORD PTR info3$[rbp], eax
; 773 : return ((info3 >> 26) & 1) != 0;
00024 8b 45 04 mov eax, DWORD PTR info3$[rbp]
00027 c1 f8 1a sar eax, 26
0002a 83 e0 01 and eax, 1
0002d 85 c0 test eax, eax
0002f 74 0c je SHORT $LN3@stbi__sse2
00031 c7 85 d4 00 00
00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
0003b eb 0a jmp SHORT $LN4@stbi__sse2
$LN3@stbi__sse2:
0003d c7 85 d4 00 00
00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
$LN4@stbi__sse2:
00047 8b 85 d4 00 00
00 mov eax, DWORD PTR tv68[rbp]
; 774 : }
0004d 48 8d a5 e8 00
00 00 lea rsp, QWORD PTR [rbp+232]
00054 5f pop rdi
00055 5d pop rbp
00056 c3 ret 0
stbi__sse2_available ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi__cpuid3
_TEXT SEGMENT
info$ = 8
__$ArrayPad$ = 232
stbi__cpuid3 PROC ; COMDAT
; 749 : {
00000 40 55 push rbp
00002 53 push rbx
00003 57 push rdi
00004 48 81 ec 10 01
00 00 sub rsp, 272 ; 00000110H
0000b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00010 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00015 b9 0c 00 00 00 mov ecx, 12
0001a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
0001f f3 ab rep stosd
00021 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00028 48 33 c5 xor rax, rbp
0002b 48 89 85 e8 00
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00032 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00039 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0003e 90 npad 1
; 750 : int info[4];
; 751 : __cpuid(info, 1);
0003f b8 01 00 00 00 mov eax, 1
00044 33 c9 xor ecx, ecx
00046 0f a2 cpuid
00048 4c 8d 45 08 lea r8, QWORD PTR info$[rbp]
0004c 41 89 00 mov DWORD PTR [r8], eax
0004f 41 89 58 04 mov DWORD PTR [r8+4], ebx
00053 41 89 48 08 mov DWORD PTR [r8+8], ecx
00057 41 89 50 0c mov DWORD PTR [r8+12], edx
; 752 : return info[3];
0005b b8 04 00 00 00 mov eax, 4
00060 48 6b c0 03 imul rax, rax, 3
00064 8b 44 05 08 mov eax, DWORD PTR info$[rbp+rax]
; 753 : }
00068 8b f8 mov edi, eax
0006a 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0006e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi__cpuid3$rtcFrameData
00075 e8 00 00 00 00 call _RTC_CheckStackVars
0007a 8b c7 mov eax, edi
0007c 48 8b 8d e8 00
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00083 48 33 cd xor rcx, rbp
00086 e8 00 00 00 00 call __security_check_cookie
0008b 48 8d a5 f0 00
00 00 lea rsp, QWORD PTR [rbp+240]
00092 5f pop rdi
00093 5b pop rbx
00094 5d pop rbp
00095 c3 ret 0
stbi__cpuid3 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_zlib_decode_noheader_buffer
_TEXT SEGMENT
a$ = 16
__$ArrayPad$ = 5672
obuffer$ = 5712
olen$ = 5720
ibuffer$ = 5728
ilen$ = 5736
stbi_zlib_decode_noheader_buffer PROC ; COMDAT
; 5179 : {
$LN5:
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 b8 68 16 00 00 mov eax, 5736 ; 00001668H
0001a e8 00 00 00 00 call __chkstk
0001f 48 2b e0 sub rsp, rax
00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
0002c b9 0e 04 00 00 mov ecx, 1038 ; 0000040eH
00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00036 f3 ab rep stosd
00038 48 8b 8c 24 88
16 00 00 mov rcx, QWORD PTR [rsp+5768]
00040 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00047 48 33 c5 xor rax, rbp
0004a 48 89 85 28 16
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00051 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0005d 90 npad 1
; 5180 : stbi__zbuf a;
; 5181 : a.zbuffer = (stbi_uc *)ibuffer;
0005e 48 8b 85 60 16
00 00 mov rax, QWORD PTR ibuffer$[rbp]
00065 48 89 45 10 mov QWORD PTR a$[rbp], rax
; 5182 : a.zbuffer_end = (stbi_uc *)ibuffer + ilen;
00069 48 63 85 68 16
00 00 movsxd rax, DWORD PTR ilen$[rbp]
00070 48 8b 8d 60 16
00 00 mov rcx, QWORD PTR ibuffer$[rbp]
00077 48 03 c8 add rcx, rax
0007a 48 8b c1 mov rax, rcx
0007d 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
; 5183 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0))
00081 c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
00089 45 33 c9 xor r9d, r9d
0008c 44 8b 85 58 16
00 00 mov r8d, DWORD PTR olen$[rbp]
00093 48 8b 95 50 16
00 00 mov rdx, QWORD PTR obuffer$[rbp]
0009a 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
0009e e8 00 00 00 00 call stbi__do_zlib
000a3 85 c0 test eax, eax
000a5 74 12 je SHORT $LN2@stbi_zlib_
; 5184 : return (int)(a.zout - a.zout_start);
000a7 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000ab 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
000af 48 2b c8 sub rcx, rax
000b2 48 8b c1 mov rax, rcx
000b5 eb 07 jmp SHORT $LN1@stbi_zlib_
000b7 eb 05 jmp SHORT $LN3@stbi_zlib_
$LN2@stbi_zlib_:
; 5185 : else
; 5186 : return -1;
000b9 b8 ff ff ff ff mov eax, -1
$LN3@stbi_zlib_:
$LN1@stbi_zlib_:
; 5187 : }
000be 48 8b f8 mov rdi, rax
000c1 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
000c5 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_noheader_buffer$rtcFrameData
000cc e8 00 00 00 00 call _RTC_CheckStackVars
000d1 48 8b c7 mov rax, rdi
000d4 48 8b 8d 28 16
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000db 48 33 cd xor rcx, rbp
000de e8 00 00 00 00 call __security_check_cookie
000e3 48 8d a5 38 16
00 00 lea rsp, QWORD PTR [rbp+5688]
000ea 5f pop rdi
000eb 5d pop rbp
000ec c3 ret 0
stbi_zlib_decode_noheader_buffer ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_zlib_decode_noheader_malloc
_TEXT SEGMENT
a$ = 16
p$ = 4152
__$ArrayPad$ = 5704
buffer$ = 5744
len$ = 5752
outlen$ = 5760
stbi_zlib_decode_noheader_malloc PROC ; COMDAT
; 5161 : {
$LN7:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 b8 88 16 00 00 mov eax, 5768 ; 00001688H
00015 e8 00 00 00 00 call __chkstk
0001a 48 2b e0 sub rsp, rax
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 16 04 00 00 mov ecx, 1046 ; 00000416H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 a8
16 00 00 mov rcx, QWORD PTR [rsp+5800]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 48 16
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 5162 : stbi__zbuf a;
; 5163 : char *p = (char *)stbi__malloc(16384);
00059 b9 00 40 00 00 mov ecx, 16384 ; 00004000H
0005e e8 00 00 00 00 call stbi__malloc
00063 48 89 85 38 10
00 00 mov QWORD PTR p$[rbp], rax
; 5164 : if (p == NULL)
0006a 48 83 bd 38 10
00 00 00 cmp QWORD PTR p$[rbp], 0
00072 75 07 jne SHORT $LN2@stbi_zlib_
; 5165 : return NULL;
00074 33 c0 xor eax, eax
00076 e9 81 00 00 00 jmp $LN1@stbi_zlib_
$LN2@stbi_zlib_:
; 5166 : a.zbuffer = (stbi_uc *)buffer;
0007b 48 8b 85 70 16
00 00 mov rax, QWORD PTR buffer$[rbp]
00082 48 89 45 10 mov QWORD PTR a$[rbp], rax
; 5167 : a.zbuffer_end = (stbi_uc *)buffer + len;
00086 48 63 85 78 16
00 00 movsxd rax, DWORD PTR len$[rbp]
0008d 48 8b 8d 70 16
00 00 mov rcx, QWORD PTR buffer$[rbp]
00094 48 03 c8 add rcx, rax
00097 48 8b c1 mov rax, rcx
0009a 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
; 5168 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) {
0009e c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
000a6 41 b9 01 00 00
00 mov r9d, 1
000ac 41 b8 00 40 00
00 mov r8d, 16384 ; 00004000H
000b2 48 8b 95 38 10
00 00 mov rdx, QWORD PTR p$[rbp]
000b9 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
000bd e8 00 00 00 00 call stbi__do_zlib
000c2 85 c0 test eax, eax
000c4 74 29 je SHORT $LN3@stbi_zlib_
; 5169 : if (outlen)
000c6 48 83 bd 80 16
00 00 00 cmp QWORD PTR outlen$[rbp], 0
000ce 74 17 je SHORT $LN5@stbi_zlib_
; 5170 : *outlen = (int)(a.zout - a.zout_start);
000d0 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000d4 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
000d8 48 2b c8 sub rcx, rax
000db 48 8b c1 mov rax, rcx
000de 48 8b 8d 80 16
00 00 mov rcx, QWORD PTR outlen$[rbp]
000e5 89 01 mov DWORD PTR [rcx], eax
$LN5@stbi_zlib_:
; 5171 : return a.zout_start;
000e7 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000eb eb 0f jmp SHORT $LN1@stbi_zlib_
; 5172 : } else {
000ed eb 0d jmp SHORT $LN4@stbi_zlib_
$LN3@stbi_zlib_:
; 5173 : STBI_FREE(a.zout_start);
000ef 48 8b 4d 38 mov rcx, QWORD PTR a$[rbp+40]
000f3 ff 15 00 00 00
00 call QWORD PTR __imp_free
000f9 90 npad 1
; 5174 : return NULL;
000fa 33 c0 xor eax, eax
$LN4@stbi_zlib_:
$LN1@stbi_zlib_:
; 5175 : }
; 5176 : }
000fc 48 8b f8 mov rdi, rax
000ff 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00103 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_noheader_malloc$rtcFrameData
0010a e8 00 00 00 00 call _RTC_CheckStackVars
0010f 48 8b c7 mov rax, rdi
00112 48 8b 8d 48 16
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00119 48 33 cd xor rcx, rbp
0011c e8 00 00 00 00 call __security_check_cookie
00121 48 8d a5 58 16
00 00 lea rsp, QWORD PTR [rbp+5720]
00128 5f pop rdi
00129 5d pop rbp
0012a c3 ret 0
stbi_zlib_decode_noheader_malloc ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_zlib_decode_buffer
_TEXT SEGMENT
a$ = 16
__$ArrayPad$ = 5672
obuffer$ = 5712
olen$ = 5720
ibuffer$ = 5728
ilen$ = 5736
stbi_zlib_decode_buffer PROC ; COMDAT
; 5150 : {
$LN5:
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 b8 68 16 00 00 mov eax, 5736 ; 00001668H
0001a e8 00 00 00 00 call __chkstk
0001f 48 2b e0 sub rsp, rax
00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
0002c b9 0e 04 00 00 mov ecx, 1038 ; 0000040eH
00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00036 f3 ab rep stosd
00038 48 8b 8c 24 88
16 00 00 mov rcx, QWORD PTR [rsp+5768]
00040 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00047 48 33 c5 xor rax, rbp
0004a 48 89 85 28 16
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00051 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0005d 90 npad 1
; 5151 : stbi__zbuf a;
; 5152 : a.zbuffer = (stbi_uc *)ibuffer;
0005e 48 8b 85 60 16
00 00 mov rax, QWORD PTR ibuffer$[rbp]
00065 48 89 45 10 mov QWORD PTR a$[rbp], rax
; 5153 : a.zbuffer_end = (stbi_uc *)ibuffer + ilen;
00069 48 63 85 68 16
00 00 movsxd rax, DWORD PTR ilen$[rbp]
00070 48 8b 8d 60 16
00 00 mov rcx, QWORD PTR ibuffer$[rbp]
00077 48 03 c8 add rcx, rax
0007a 48 8b c1 mov rax, rcx
0007d 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
; 5154 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1))
00081 c7 44 24 20 01
00 00 00 mov DWORD PTR [rsp+32], 1
00089 45 33 c9 xor r9d, r9d
0008c 44 8b 85 58 16
00 00 mov r8d, DWORD PTR olen$[rbp]
00093 48 8b 95 50 16
00 00 mov rdx, QWORD PTR obuffer$[rbp]
0009a 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
0009e e8 00 00 00 00 call stbi__do_zlib
000a3 85 c0 test eax, eax
000a5 74 12 je SHORT $LN2@stbi_zlib_
; 5155 : return (int)(a.zout - a.zout_start);
000a7 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000ab 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
000af 48 2b c8 sub rcx, rax
000b2 48 8b c1 mov rax, rcx
000b5 eb 07 jmp SHORT $LN1@stbi_zlib_
000b7 eb 05 jmp SHORT $LN3@stbi_zlib_
$LN2@stbi_zlib_:
; 5156 : else
; 5157 : return -1;
000b9 b8 ff ff ff ff mov eax, -1
$LN3@stbi_zlib_:
$LN1@stbi_zlib_:
; 5158 : }
000be 48 8b f8 mov rdi, rax
000c1 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
000c5 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_buffer$rtcFrameData
000cc e8 00 00 00 00 call _RTC_CheckStackVars
000d1 48 8b c7 mov rax, rdi
000d4 48 8b 8d 28 16
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000db 48 33 cd xor rcx, rbp
000de e8 00 00 00 00 call __security_check_cookie
000e3 48 8d a5 38 16
00 00 lea rsp, QWORD PTR [rbp+5688]
000ea 5f pop rdi
000eb 5d pop rbp
000ec c3 ret 0
stbi_zlib_decode_buffer ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_zlib_decode_malloc
_TEXT SEGMENT
buffer$ = 224
len$ = 232
outlen$ = 240
stbi_zlib_decode_malloc PROC ; COMDAT
; 5125 : {
$LN3:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00028 90 npad 1
; 5126 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen);
00029 4c 8b 8d f0 00
00 00 mov r9, QWORD PTR outlen$[rbp]
00030 41 b8 00 40 00
00 mov r8d, 16384 ; 00004000H
00036 8b 95 e8 00 00
00 mov edx, DWORD PTR len$[rbp]
0003c 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR buffer$[rbp]
00043 e8 00 00 00 00 call stbi_zlib_decode_malloc_guesssize
; 5127 : }
00048 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0004f 5f pop rdi
00050 5d pop rbp
00051 c3 ret 0
stbi_zlib_decode_malloc ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_zlib_decode_malloc_guesssize_headerflag
_TEXT SEGMENT
a$ = 16
p$ = 4152
__$ArrayPad$ = 5704
buffer$ = 5744
len$ = 5752
initial_size$ = 5760
outlen$ = 5768
parse_header$ = 5776
stbi_zlib_decode_malloc_guesssize_headerflag PROC ; COMDAT
; 5132 : {
$LN7:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 b8 88 16 00 00 mov eax, 5768 ; 00001688H
0001a e8 00 00 00 00 call __chkstk
0001f 48 2b e0 sub rsp, rax
00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
0002c b9 16 04 00 00 mov ecx, 1046 ; 00000416H
00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00036 f3 ab rep stosd
00038 48 8b 8c 24 a8
16 00 00 mov rcx, QWORD PTR [rsp+5800]
00040 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00047 48 33 c5 xor rax, rbp
0004a 48 89 85 48 16
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00051 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0005d 90 npad 1
; 5133 : stbi__zbuf a;
; 5134 : char *p = (char *)stbi__malloc(initial_size);
0005e 48 63 85 80 16
00 00 movsxd rax, DWORD PTR initial_size$[rbp]
00065 48 8b c8 mov rcx, rax
00068 e8 00 00 00 00 call stbi__malloc
0006d 48 89 85 38 10
00 00 mov QWORD PTR p$[rbp], rax
; 5135 : if (p == NULL)
00074 48 83 bd 38 10
00 00 00 cmp QWORD PTR p$[rbp], 0
0007c 75 07 jne SHORT $LN2@stbi_zlib_
; 5136 : return NULL;
0007e 33 c0 xor eax, eax
00080 e9 84 00 00 00 jmp $LN1@stbi_zlib_
$LN2@stbi_zlib_:
; 5137 : a.zbuffer = (stbi_uc *)buffer;
00085 48 8b 85 70 16
00 00 mov rax, QWORD PTR buffer$[rbp]
0008c 48 89 45 10 mov QWORD PTR a$[rbp], rax
; 5138 : a.zbuffer_end = (stbi_uc *)buffer + len;
00090 48 63 85 78 16
00 00 movsxd rax, DWORD PTR len$[rbp]
00097 48 8b 8d 70 16
00 00 mov rcx, QWORD PTR buffer$[rbp]
0009e 48 03 c8 add rcx, rax
000a1 48 8b c1 mov rax, rcx
000a4 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
; 5139 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) {
000a8 8b 85 90 16 00
00 mov eax, DWORD PTR parse_header$[rbp]
000ae 89 44 24 20 mov DWORD PTR [rsp+32], eax
000b2 41 b9 01 00 00
00 mov r9d, 1
000b8 44 8b 85 80 16
00 00 mov r8d, DWORD PTR initial_size$[rbp]
000bf 48 8b 95 38 10
00 00 mov rdx, QWORD PTR p$[rbp]
000c6 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
000ca e8 00 00 00 00 call stbi__do_zlib
000cf 85 c0 test eax, eax
000d1 74 29 je SHORT $LN3@stbi_zlib_
; 5140 : if (outlen)
000d3 48 83 bd 88 16
00 00 00 cmp QWORD PTR outlen$[rbp], 0
000db 74 17 je SHORT $LN5@stbi_zlib_
; 5141 : *outlen = (int)(a.zout - a.zout_start);
000dd 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000e1 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
000e5 48 2b c8 sub rcx, rax
000e8 48 8b c1 mov rax, rcx
000eb 48 8b 8d 88 16
00 00 mov rcx, QWORD PTR outlen$[rbp]
000f2 89 01 mov DWORD PTR [rcx], eax
$LN5@stbi_zlib_:
; 5142 : return a.zout_start;
000f4 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000f8 eb 0f jmp SHORT $LN1@stbi_zlib_
; 5143 : } else {
000fa eb 0d jmp SHORT $LN4@stbi_zlib_
$LN3@stbi_zlib_:
; 5144 : STBI_FREE(a.zout_start);
000fc 48 8b 4d 38 mov rcx, QWORD PTR a$[rbp+40]
00100 ff 15 00 00 00
00 call QWORD PTR __imp_free
00106 90 npad 1
; 5145 : return NULL;
00107 33 c0 xor eax, eax
$LN4@stbi_zlib_:
$LN1@stbi_zlib_:
; 5146 : }
; 5147 : }
00109 48 8b f8 mov rdi, rax
0010c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00110 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_malloc_guesssize_headerflag$rtcFrameData
00117 e8 00 00 00 00 call _RTC_CheckStackVars
0011c 48 8b c7 mov rax, rdi
0011f 48 8b 8d 48 16
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00126 48 33 cd xor rcx, rbp
00129 e8 00 00 00 00 call __security_check_cookie
0012e 48 8d a5 58 16
00 00 lea rsp, QWORD PTR [rbp+5720]
00135 5f pop rdi
00136 5d pop rbp
00137 c3 ret 0
stbi_zlib_decode_malloc_guesssize_headerflag ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_zlib_decode_malloc_guesssize
_TEXT SEGMENT
a$ = 16
p$ = 4152
__$ArrayPad$ = 5704
buffer$ = 5744
len$ = 5752
initial_size$ = 5760
outlen$ = 5768
stbi_zlib_decode_malloc_guesssize PROC ; COMDAT
; 5107 : {
$LN7:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 b8 88 16 00 00 mov eax, 5768 ; 00001688H
0001a e8 00 00 00 00 call __chkstk
0001f 48 2b e0 sub rsp, rax
00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
0002c b9 16 04 00 00 mov ecx, 1046 ; 00000416H
00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00036 f3 ab rep stosd
00038 48 8b 8c 24 a8
16 00 00 mov rcx, QWORD PTR [rsp+5800]
00040 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00047 48 33 c5 xor rax, rbp
0004a 48 89 85 48 16
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00051 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0005d 90 npad 1
; 5108 : stbi__zbuf a;
; 5109 : char *p = (char *)stbi__malloc(initial_size);
0005e 48 63 85 80 16
00 00 movsxd rax, DWORD PTR initial_size$[rbp]
00065 48 8b c8 mov rcx, rax
00068 e8 00 00 00 00 call stbi__malloc
0006d 48 89 85 38 10
00 00 mov QWORD PTR p$[rbp], rax
; 5110 : if (p == NULL)
00074 48 83 bd 38 10
00 00 00 cmp QWORD PTR p$[rbp], 0
0007c 75 07 jne SHORT $LN2@stbi_zlib_
; 5111 : return NULL;
0007e 33 c0 xor eax, eax
00080 e9 82 00 00 00 jmp $LN1@stbi_zlib_
$LN2@stbi_zlib_:
; 5112 : a.zbuffer = (stbi_uc *)buffer;
00085 48 8b 85 70 16
00 00 mov rax, QWORD PTR buffer$[rbp]
0008c 48 89 45 10 mov QWORD PTR a$[rbp], rax
; 5113 : a.zbuffer_end = (stbi_uc *)buffer + len;
00090 48 63 85 78 16
00 00 movsxd rax, DWORD PTR len$[rbp]
00097 48 8b 8d 70 16
00 00 mov rcx, QWORD PTR buffer$[rbp]
0009e 48 03 c8 add rcx, rax
000a1 48 8b c1 mov rax, rcx
000a4 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
; 5114 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) {
000a8 c7 44 24 20 01
00 00 00 mov DWORD PTR [rsp+32], 1
000b0 41 b9 01 00 00
00 mov r9d, 1
000b6 44 8b 85 80 16
00 00 mov r8d, DWORD PTR initial_size$[rbp]
000bd 48 8b 95 38 10
00 00 mov rdx, QWORD PTR p$[rbp]
000c4 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
000c8 e8 00 00 00 00 call stbi__do_zlib
000cd 85 c0 test eax, eax
000cf 74 29 je SHORT $LN3@stbi_zlib_
; 5115 : if (outlen)
000d1 48 83 bd 88 16
00 00 00 cmp QWORD PTR outlen$[rbp], 0
000d9 74 17 je SHORT $LN5@stbi_zlib_
; 5116 : *outlen = (int)(a.zout - a.zout_start);
000db 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000df 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
000e3 48 2b c8 sub rcx, rax
000e6 48 8b c1 mov rax, rcx
000e9 48 8b 8d 88 16
00 00 mov rcx, QWORD PTR outlen$[rbp]
000f0 89 01 mov DWORD PTR [rcx], eax
$LN5@stbi_zlib_:
; 5117 : return a.zout_start;
000f2 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
000f6 eb 0f jmp SHORT $LN1@stbi_zlib_
; 5118 : } else {
000f8 eb 0d jmp SHORT $LN4@stbi_zlib_
$LN3@stbi_zlib_:
; 5119 : STBI_FREE(a.zout_start);
000fa 48 8b 4d 38 mov rcx, QWORD PTR a$[rbp+40]
000fe ff 15 00 00 00
00 call QWORD PTR __imp_free
00104 90 npad 1
; 5120 : return NULL;
00105 33 c0 xor eax, eax
$LN4@stbi_zlib_:
$LN1@stbi_zlib_:
; 5121 : }
; 5122 : }
00107 48 8b f8 mov rdi, rax
0010a 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
0010e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_malloc_guesssize$rtcFrameData
00115 e8 00 00 00 00 call _RTC_CheckStackVars
0011a 48 8b c7 mov rax, rdi
0011d 48 8b 8d 48 16
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00124 48 33 cd xor rcx, rbp
00127 e8 00 00 00 00 call __security_check_cookie
0012c 48 8d a5 58 16
00 00 lea rsp, QWORD PTR [rbp+5720]
00133 5f pop rdi
00134 5d pop rbp
00135 c3 ret 0
stbi_zlib_decode_malloc_guesssize ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_set_flip_vertically_on_load_thread
_TEXT SEGMENT
flag_true_if_should_flip$ = 224
stbi_set_flip_vertically_on_load_thread PROC ; COMDAT
; 1160 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 1161 : stbi__vertically_flip_on_load_local = flag_true_if_should_flip;
0001f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
00024 8b c0 mov eax, eax
00026 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0002c 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00035 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00039 8b 95 e0 00 00
00 mov edx, DWORD PTR flag_true_if_should_flip$[rbp]
0003f 89 14 08 mov DWORD PTR [rax+rcx], edx
; 1162 : stbi__vertically_flip_on_load_set = 1;
00042 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
00047 8b c0 mov eax, eax
00049 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0004f 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00058 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
0005c c7 04 08 01 00
00 00 mov DWORD PTR [rax+rcx], 1
; 1163 : }
00063 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0006a 5f pop rdi
0006b 5d pop rbp
0006c c3 ret 0
stbi_set_flip_vertically_on_load_thread ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_convert_iphone_png_to_rgb_thread
_TEXT SEGMENT
flag_true_if_should_convert$ = 224
stbi_convert_iphone_png_to_rgb_thread PROC ; COMDAT
; 5631 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 5632 : stbi__de_iphone_flag_local = flag_true_if_should_convert;
0001f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_local
00024 8b c0 mov eax, eax
00026 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0002c 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00035 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00039 8b 95 e0 00 00
00 mov edx, DWORD PTR flag_true_if_should_convert$[rbp]
0003f 89 14 08 mov DWORD PTR [rax+rcx], edx
; 5633 : stbi__de_iphone_flag_set = 1;
00042 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_set
00047 8b c0 mov eax, eax
00049 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0004f 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00058 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
0005c c7 04 08 01 00
00 00 mov DWORD PTR [rax+rcx], 1
; 5634 : }
00063 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0006a 5f pop rdi
0006b 5d pop rbp
0006c c3 ret 0
stbi_convert_iphone_png_to_rgb_thread ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_set_unpremultiply_on_load_thread
_TEXT SEGMENT
flag_true_if_should_unpremultiply$ = 224
stbi_set_unpremultiply_on_load_thread PROC ; COMDAT
; 5625 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 5626 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply;
0001f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_local
00024 8b c0 mov eax, eax
00026 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0002c 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00035 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00039 8b 95 e0 00 00
00 mov edx, DWORD PTR flag_true_if_should_unpremultiply$[rbp]
0003f 89 14 08 mov DWORD PTR [rax+rcx], edx
; 5627 : stbi__unpremultiply_on_load_set = 1;
00042 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_set
00047 8b c0 mov eax, eax
00049 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
0004f 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00058 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
0005c c7 04 08 01 00
00 00 mov DWORD PTR [rax+rcx], 1
; 5628 : }
00063 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
0006a 5f pop rdi
0006b 5d pop rbp
0006c c3 ret 0
stbi_set_unpremultiply_on_load_thread ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_set_flip_vertically_on_load
_TEXT SEGMENT
flag_true_if_should_flip$ = 224
stbi_set_flip_vertically_on_load PROC ; COMDAT
; 1150 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 1151 : stbi__vertically_flip_on_load_global = flag_true_if_should_flip;
0001f 8b 85 e0 00 00
00 mov eax, DWORD PTR flag_true_if_should_flip$[rbp]
00025 89 05 00 00 00
00 mov DWORD PTR stbi__vertically_flip_on_load_global, eax
; 1152 : }
0002b 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00032 5f pop rdi
00033 5d pop rbp
00034 c3 ret 0
stbi_set_flip_vertically_on_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_convert_iphone_png_to_rgb
_TEXT SEGMENT
flag_true_if_should_convert$ = 224
stbi_convert_iphone_png_to_rgb PROC ; COMDAT
; 5613 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 5614 : stbi__de_iphone_flag_global = flag_true_if_should_convert;
0001f 8b 85 e0 00 00
00 mov eax, DWORD PTR flag_true_if_should_convert$[rbp]
00025 89 05 00 00 00
00 mov DWORD PTR stbi__de_iphone_flag_global, eax
; 5615 : }
0002b 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00032 5f pop rdi
00033 5d pop rbp
00034 c3 ret 0
stbi_convert_iphone_png_to_rgb ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_set_unpremultiply_on_load
_TEXT SEGMENT
flag_true_if_should_unpremultiply$ = 224
stbi_set_unpremultiply_on_load PROC ; COMDAT
; 5608 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 55 push rbp
00005 57 push rdi
00006 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00012 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001e 90 npad 1
; 5609 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply;
0001f 8b 85 e0 00 00
00 mov eax, DWORD PTR flag_true_if_should_unpremultiply$[rbp]
00025 89 05 00 00 00
00 mov DWORD PTR stbi__unpremultiply_on_load_global, eax
; 5610 : }
0002b 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00032 5f pop rdi
00033 5d pop rbp
00034 c3 ret 0
stbi_set_unpremultiply_on_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_16_bit_from_file
_TEXT SEGMENT
r$ = 4
s$ = 48
pos$ = 292
__$ArrayPad$ = 504
f$ = 544
stbi_is_16_bit_from_file PROC ; COMDAT
; 8663 : {
$LN3:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 02
00 00 sub rsp, 552 ; 00000228H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00018 b9 52 00 00 00 mov ecx, 82 ; 00000052H
0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00022 f3 ab rep stosd
00024 48 8b 8c 24 48
02 00 00 mov rcx, QWORD PTR [rsp+584]
0002c 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00033 48 33 c5 xor rax, rbp
00036 48 89 85 f8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0003d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00049 90 npad 1
; 8664 : int r;
; 8665 : stbi__context s;
; 8666 : long pos = ftell(f);
0004a 48 8b 8d 20 02
00 00 mov rcx, QWORD PTR f$[rbp]
00051 ff 15 00 00 00
00 call QWORD PTR __imp_ftell
00057 89 85 24 01 00
00 mov DWORD PTR pos$[rbp], eax
; 8667 : stbi__start_file(&s, f);
0005d 48 8b 95 20 02
00 00 mov rdx, QWORD PTR f$[rbp]
00064 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
00068 e8 00 00 00 00 call stbi__start_file
0006d 90 npad 1
; 8668 : r = stbi__is_16_main(&s);
0006e 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
00072 e8 00 00 00 00 call stbi__is_16_main
00077 89 45 04 mov DWORD PTR r$[rbp], eax
; 8669 : fseek(f, pos, SEEK_SET);
0007a 45 33 c0 xor r8d, r8d
0007d 8b 95 24 01 00
00 mov edx, DWORD PTR pos$[rbp]
00083 48 8b 8d 20 02
00 00 mov rcx, QWORD PTR f$[rbp]
0008a ff 15 00 00 00
00 call QWORD PTR __imp_fseek
00090 90 npad 1
; 8670 : return r;
00091 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 8671 : }
00094 8b f8 mov edi, eax
00096 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
0009a 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_is_16_bit_from_file$rtcFrameData
000a1 e8 00 00 00 00 call _RTC_CheckStackVars
000a6 8b c7 mov eax, edi
000a8 48 8b 8d f8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000af 48 33 cd xor rcx, rbp
000b2 e8 00 00 00 00 call __security_check_cookie
000b7 48 8d a5 08 02
00 00 lea rsp, QWORD PTR [rbp+520]
000be 5f pop rdi
000bf 5d pop rbp
000c0 c3 ret 0
stbi_is_16_bit_from_file ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_16_bit
_TEXT SEGMENT
f$ = 8
result$ = 36
filename$ = 288
stbi_is_16_bit PROC ; COMDAT
; 8652 : {
$LN4:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 8653 : FILE *f = stbi__fopen(filename, "rb");
00020 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
00027 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR filename$[rbp]
0002e e8 00 00 00 00 call stbi__fopen
00033 48 89 45 08 mov QWORD PTR f$[rbp], rax
; 8654 : int result;
; 8655 : if (!f)
00037 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
0003c 75 0e jne SHORT $LN2@stbi_is_16
; 8656 : return stbi__err("can't fopen", "Unable to open file");
0003e 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
00045 e8 00 00 00 00 call stbi__err
0004a eb 1a jmp SHORT $LN1@stbi_is_16
$LN2@stbi_is_16:
; 8657 : result = stbi_is_16_bit_from_file(f);
0004c 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
00050 e8 00 00 00 00 call stbi_is_16_bit_from_file
00055 89 45 24 mov DWORD PTR result$[rbp], eax
; 8658 : fclose(f);
00058 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
0005c ff 15 00 00 00
00 call QWORD PTR __imp_fclose
00062 90 npad 1
; 8659 : return result;
00063 8b 45 24 mov eax, DWORD PTR result$[rbp]
$LN1@stbi_is_16:
; 8660 : }
00066 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
0006d 5f pop rdi
0006e 5d pop rbp
0006f c3 ret 0
stbi_is_16_bit ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_info_from_file
_TEXT SEGMENT
r$ = 4
s$ = 48
pos$ = 292
__$ArrayPad$ = 504
f$ = 544
x$ = 552
y$ = 560
comp$ = 568
stbi_info_from_file PROC ; COMDAT
; 8641 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 28 02
00 00 sub rsp, 552 ; 00000228H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 52 00 00 00 mov ecx, 82 ; 00000052H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 48
02 00 00 mov rcx, QWORD PTR [rsp+584]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 f8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8642 : int r;
; 8643 : stbi__context s;
; 8644 : long pos = ftell(f);
00059 48 8b 8d 20 02
00 00 mov rcx, QWORD PTR f$[rbp]
00060 ff 15 00 00 00
00 call QWORD PTR __imp_ftell
00066 89 85 24 01 00
00 mov DWORD PTR pos$[rbp], eax
; 8645 : stbi__start_file(&s, f);
0006c 48 8b 95 20 02
00 00 mov rdx, QWORD PTR f$[rbp]
00073 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
00077 e8 00 00 00 00 call stbi__start_file
0007c 90 npad 1
; 8646 : r = stbi__info_main(&s, x, y, comp);
0007d 4c 8b 8d 38 02
00 00 mov r9, QWORD PTR comp$[rbp]
00084 4c 8b 85 30 02
00 00 mov r8, QWORD PTR y$[rbp]
0008b 48 8b 95 28 02
00 00 mov rdx, QWORD PTR x$[rbp]
00092 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
00096 e8 00 00 00 00 call stbi__info_main
0009b 89 45 04 mov DWORD PTR r$[rbp], eax
; 8647 : fseek(f, pos, SEEK_SET);
0009e 45 33 c0 xor r8d, r8d
000a1 8b 95 24 01 00
00 mov edx, DWORD PTR pos$[rbp]
000a7 48 8b 8d 20 02
00 00 mov rcx, QWORD PTR f$[rbp]
000ae ff 15 00 00 00
00 call QWORD PTR __imp_fseek
000b4 90 npad 1
; 8648 : return r;
000b5 8b 45 04 mov eax, DWORD PTR r$[rbp]
; 8649 : }
000b8 8b f8 mov edi, eax
000ba 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
000be 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_info_from_file$rtcFrameData
000c5 e8 00 00 00 00 call _RTC_CheckStackVars
000ca 8b c7 mov eax, edi
000cc 48 8b 8d f8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000d3 48 33 cd xor rcx, rbp
000d6 e8 00 00 00 00 call __security_check_cookie
000db 48 8d a5 08 02
00 00 lea rsp, QWORD PTR [rbp+520]
000e2 5f pop rdi
000e3 5d pop rbp
000e4 c3 ret 0
stbi_info_from_file ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_info
_TEXT SEGMENT
f$ = 8
result$ = 36
filename$ = 288
x$ = 296
y$ = 304
comp$ = 312
stbi_info PROC ; COMDAT
; 8630 : {
$LN4:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 8631 : FILE *f = stbi__fopen(filename, "rb");
0002f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
00036 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR filename$[rbp]
0003d e8 00 00 00 00 call stbi__fopen
00042 48 89 45 08 mov QWORD PTR f$[rbp], rax
; 8632 : int result;
; 8633 : if (!f)
00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
0004b 75 0e jne SHORT $LN2@stbi_info
; 8634 : return stbi__err("can't fopen", "Unable to open file");
0004d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
00054 e8 00 00 00 00 call stbi__err
00059 eb 2f jmp SHORT $LN1@stbi_info
$LN2@stbi_info:
; 8635 : result = stbi_info_from_file(f, x, y, comp);
0005b 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
00062 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
00069 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
00070 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
00074 e8 00 00 00 00 call stbi_info_from_file
00079 89 45 24 mov DWORD PTR result$[rbp], eax
; 8636 : fclose(f);
0007c 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
00080 ff 15 00 00 00
00 call QWORD PTR __imp_fclose
00086 90 npad 1
; 8637 : return result;
00087 8b 45 24 mov eax, DWORD PTR result$[rbp]
$LN1@stbi_info:
; 8638 : }
0008a 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00091 5f pop rdi
00092 5d pop rbp
00093 c3 ret 0
stbi_info ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_16_bit_from_callbacks
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
c$ = 480
user$ = 488
stbi_is_16_bit_from_callbacks PROC ; COMDAT
; 8697 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001d b9 42 00 00 00 mov ecx, 66 ; 00000042H
00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00027 f3 ab rep stosd
00029 48 8b 8c 24 08
02 00 00 mov rcx, QWORD PTR [rsp+520]
00031 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00038 48 33 c5 xor rax, rbp
0003b 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00042 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004e 90 npad 1
; 8698 : stbi__context s;
; 8699 : stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user);
0004f 4c 8b 85 e8 01
00 00 mov r8, QWORD PTR user$[rbp]
00056 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR c$[rbp]
0005d 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00061 e8 00 00 00 00 call stbi__start_callbacks
00066 90 npad 1
; 8700 : return stbi__is_16_main(&s);
00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__is_16_main
; 8701 : }
00070 48 8b f8 mov rdi, rax
00073 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00077 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_is_16_bit_from_callbacks$rtcFrameData
0007e e8 00 00 00 00 call _RTC_CheckStackVars
00083 48 8b c7 mov rax, rdi
00086 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0008d 48 33 cd xor rcx, rbp
00090 e8 00 00 00 00 call __security_check_cookie
00095 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
0009c 5f pop rdi
0009d 5d pop rbp
0009e c3 ret 0
stbi_is_16_bit_from_callbacks ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_16_bit_from_memory
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
buffer$ = 480
len$ = 488
stbi_is_16_bit_from_memory PROC ; COMDAT
; 8690 : {
$LN3:
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001c b9 42 00 00 00 mov ecx, 66 ; 00000042H
00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00026 f3 ab rep stosd
00028 48 8b 8c 24 08
02 00 00 mov rcx, QWORD PTR [rsp+520]
00030 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00037 48 33 c5 xor rax, rbp
0003a 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00041 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004d 90 npad 1
; 8691 : stbi__context s;
; 8692 : stbi__start_mem(&s, buffer, len);
0004e 44 8b 85 e8 01
00 00 mov r8d, DWORD PTR len$[rbp]
00055 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR buffer$[rbp]
0005c 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00060 e8 00 00 00 00 call stbi__start_mem
00065 90 npad 1
; 8693 : return stbi__is_16_main(&s);
00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__is_16_main
; 8694 : }
0006f 48 8b f8 mov rdi, rax
00072 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00076 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_is_16_bit_from_memory$rtcFrameData
0007d e8 00 00 00 00 call _RTC_CheckStackVars
00082 48 8b c7 mov rax, rdi
00085 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0008c 48 33 cd xor rcx, rbp
0008f e8 00 00 00 00 call __security_check_cookie
00094 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
0009b 5f pop rdi
0009c 5d pop rbp
0009d c3 ret 0
stbi_is_16_bit_from_memory ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_info_from_callbacks
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
c$ = 480
user$ = 488
x$ = 496
y$ = 504
comp$ = 512
stbi_info_from_callbacks PROC ; COMDAT
; 8683 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 08
02 00 00 mov rcx, QWORD PTR [rsp+520]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 8684 : stbi__context s;
; 8685 : stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user);
00059 4c 8b 85 e8 01
00 00 mov r8, QWORD PTR user$[rbp]
00060 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR c$[rbp]
00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__start_callbacks
00070 90 npad 1
; 8686 : return stbi__info_main(&s, x, y, comp);
00071 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR comp$[rbp]
00078 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
0007f 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
00086 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0008a e8 00 00 00 00 call stbi__info_main
; 8687 : }
0008f 48 8b f8 mov rdi, rax
00092 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00096 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_info_from_callbacks$rtcFrameData
0009d e8 00 00 00 00 call _RTC_CheckStackVars
000a2 48 8b c7 mov rax, rdi
000a5 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000ac 48 33 cd xor rcx, rbp
000af e8 00 00 00 00 call __security_check_cookie
000b4 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000bb 5f pop rdi
000bc 5d pop rbp
000bd c3 ret 0
stbi_info_from_callbacks ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_info_from_memory
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
buffer$ = 480
len$ = 488
x$ = 496
y$ = 504
comp$ = 512
stbi_info_from_memory PROC ; COMDAT
; 8675 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00021 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00030 f3 ab rep stosd
00032 48 8b 8c 24 08
02 00 00 mov rcx, QWORD PTR [rsp+520]
0003a 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00041 48 33 c5 xor rax, rbp
00044 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00057 90 npad 1
; 8676 : stbi__context s;
; 8677 : stbi__start_mem(&s, buffer, len);
00058 44 8b 85 e8 01
00 00 mov r8d, DWORD PTR len$[rbp]
0005f 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR buffer$[rbp]
00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__start_mem
0006f 90 npad 1
; 8678 : return stbi__info_main(&s, x, y, comp);
00070 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR comp$[rbp]
00077 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
0007e 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
00085 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00089 e8 00 00 00 00 call stbi__info_main
; 8679 : }
0008e 48 8b f8 mov rdi, rax
00091 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00095 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_info_from_memory$rtcFrameData
0009c e8 00 00 00 00 call _RTC_CheckStackVars
000a1 48 8b c7 mov rax, rdi
000a4 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000ab 48 33 cd xor rcx, rbp
000ae e8 00 00 00 00 call __security_check_cookie
000b3 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000ba 5f pop rdi
000bb 5d pop rbp
000bc c3 ret 0
stbi_info_from_memory ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_image_free
_TEXT SEGMENT
retval_from_stbi_load$ = 224
stbi_image_free PROC ; COMDAT
; 1135 : {
$LN3:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1136 : STBI_FREE(retval_from_stbi_load);
00020 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR retval_from_stbi_load$[rbp]
00027 ff 15 00 00 00
00 call QWORD PTR __imp_free
0002d 90 npad 1
; 1137 : }
0002e 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00035 5f pop rdi
00036 5d pop rbp
00037 c3 ret 0
stbi_image_free ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_failure_reason
_TEXT SEGMENT
stbi_failure_reason PROC ; COMDAT
; 991 : {
$LN3:
00000 40 55 push rbp
00002 57 push rdi
00003 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0000f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001b 90 npad 1
; 992 : return stbi__g_failure_reason;
0001c b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__g_failure_reason
00021 8b c0 mov eax, eax
00023 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
00029 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
00032 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
00036 48 8b 04 08 mov rax, QWORD PTR [rax+rcx]
; 993 : }
0003a 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00041 5f pop rdi
00042 5d pop rbp
00043 c3 ret 0
stbi_failure_reason ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_hdr_from_file
_TEXT SEGMENT
pos$ = 4
res$ = 36
s$ = 80
__$ArrayPad$ = 504
f$ = 544
stbi_is_hdr_from_file PROC ; COMDAT
; 1611 : {
$LN3:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 02
00 00 sub rsp, 552 ; 00000228H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
00018 b9 52 00 00 00 mov ecx, 82 ; 00000052H
0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00022 f3 ab rep stosd
00024 48 8b 8c 24 48
02 00 00 mov rcx, QWORD PTR [rsp+584]
0002c 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00033 48 33 c5 xor rax, rbp
00036 48 89 85 f8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0003d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00049 90 npad 1
; 1612 : #ifndef STBI_NO_HDR
; 1613 : long pos = ftell(f);
0004a 48 8b 8d 20 02
00 00 mov rcx, QWORD PTR f$[rbp]
00051 ff 15 00 00 00
00 call QWORD PTR __imp_ftell
00057 89 45 04 mov DWORD PTR pos$[rbp], eax
; 1614 : int res;
; 1615 : stbi__context s;
; 1616 : stbi__start_file(&s, f);
0005a 48 8b 95 20 02
00 00 mov rdx, QWORD PTR f$[rbp]
00061 48 8d 4d 50 lea rcx, QWORD PTR s$[rbp]
00065 e8 00 00 00 00 call stbi__start_file
0006a 90 npad 1
; 1617 : res = stbi__hdr_test(&s);
0006b 48 8d 4d 50 lea rcx, QWORD PTR s$[rbp]
0006f e8 00 00 00 00 call stbi__hdr_test
00074 89 45 24 mov DWORD PTR res$[rbp], eax
; 1618 : fseek(f, pos, SEEK_SET);
00077 45 33 c0 xor r8d, r8d
0007a 8b 55 04 mov edx, DWORD PTR pos$[rbp]
0007d 48 8b 8d 20 02
00 00 mov rcx, QWORD PTR f$[rbp]
00084 ff 15 00 00 00
00 call QWORD PTR __imp_fseek
0008a 90 npad 1
; 1619 : return res;
0008b 8b 45 24 mov eax, DWORD PTR res$[rbp]
; 1620 : #else
; 1621 : STBI_NOTUSED(f);
; 1622 : return 0;
; 1623 : #endif
; 1624 : }
0008e 8b f8 mov edi, eax
00090 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00094 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_is_hdr_from_file$rtcFrameData
0009b e8 00 00 00 00 call _RTC_CheckStackVars
000a0 8b c7 mov eax, edi
000a2 48 8b 8d f8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000a9 48 33 cd xor rcx, rbp
000ac e8 00 00 00 00 call __security_check_cookie
000b1 48 8d a5 08 02
00 00 lea rsp, QWORD PTR [rbp+520]
000b8 5f pop rdi
000b9 5d pop rbp
000ba c3 ret 0
stbi_is_hdr_from_file ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_hdr
_TEXT SEGMENT
f$ = 8
result$ = 36
filename$ = 288
stbi_is_hdr PROC ; COMDAT
; 1600 : {
$LN4:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 28 01
00 00 sub rsp, 296 ; 00000128H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0001f 90 npad 1
; 1601 : FILE *f = stbi__fopen(filename, "rb");
00020 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
00027 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR filename$[rbp]
0002e e8 00 00 00 00 call stbi__fopen
00033 48 89 45 08 mov QWORD PTR f$[rbp], rax
; 1602 : int result = 0;
00037 c7 45 24 00 00
00 00 mov DWORD PTR result$[rbp], 0
; 1603 : if (f) {
0003e 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
00043 74 17 je SHORT $LN2@stbi_is_hd
; 1604 : result = stbi_is_hdr_from_file(f);
00045 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
00049 e8 00 00 00 00 call stbi_is_hdr_from_file
0004e 89 45 24 mov DWORD PTR result$[rbp], eax
; 1605 : fclose(f);
00051 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
00055 ff 15 00 00 00
00 call QWORD PTR __imp_fclose
0005b 90 npad 1
$LN2@stbi_is_hd:
; 1606 : }
; 1607 : return result;
0005c 8b 45 24 mov eax, DWORD PTR result$[rbp]
; 1608 : }
0005f 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00066 5f pop rdi
00067 5d pop rbp
00068 c3 ret 0
stbi_is_hdr ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_hdr_from_memory
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
buffer$ = 480
len$ = 488
stbi_is_hdr_from_memory PROC ; COMDAT
; 1586 : {
$LN3:
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00009 55 push rbp
0000a 57 push rdi
0000b 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001c b9 42 00 00 00 mov ecx, 66 ; 00000042H
00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00026 f3 ab rep stosd
00028 48 8b 8c 24 08
02 00 00 mov rcx, QWORD PTR [rsp+520]
00030 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00037 48 33 c5 xor rax, rbp
0003a 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00041 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004d 90 npad 1
; 1587 : #ifndef STBI_NO_HDR
; 1588 : stbi__context s;
; 1589 : stbi__start_mem(&s, buffer, len);
0004e 44 8b 85 e8 01
00 00 mov r8d, DWORD PTR len$[rbp]
00055 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR buffer$[rbp]
0005c 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00060 e8 00 00 00 00 call stbi__start_mem
00065 90 npad 1
; 1590 : return stbi__hdr_test(&s);
00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__hdr_test
; 1591 : #else
; 1592 : STBI_NOTUSED(buffer);
; 1593 : STBI_NOTUSED(len);
; 1594 : return 0;
; 1595 : #endif
; 1596 : }
0006f 48 8b f8 mov rdi, rax
00072 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00076 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_is_hdr_from_memory$rtcFrameData
0007d e8 00 00 00 00 call _RTC_CheckStackVars
00082 48 8b c7 mov rax, rdi
00085 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0008c 48 33 cd xor rcx, rbp
0008f e8 00 00 00 00 call __security_check_cookie
00094 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
0009b 5f pop rdi
0009c 5d pop rbp
0009d c3 ret 0
stbi_is_hdr_from_memory ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_is_hdr_from_callbacks
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
clbk$ = 480
user$ = 488
stbi_is_hdr_from_callbacks PROC ; COMDAT
; 1628 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec e8 01
00 00 sub rsp, 488 ; 000001e8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
0001d b9 42 00 00 00 mov ecx, 66 ; 00000042H
00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00027 f3 ab rep stosd
00029 48 8b 8c 24 08
02 00 00 mov rcx, QWORD PTR [rsp+520]
00031 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00038 48 33 c5 xor rax, rbp
0003b 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
00042 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0004e 90 npad 1
; 1629 : #ifndef STBI_NO_HDR
; 1630 : stbi__context s;
; 1631 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
0004f 4c 8b 85 e8 01
00 00 mov r8, QWORD PTR user$[rbp]
00056 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR clbk$[rbp]
0005d 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00061 e8 00 00 00 00 call stbi__start_callbacks
00066 90 npad 1
; 1632 : return stbi__hdr_test(&s);
00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__hdr_test
; 1633 : #else
; 1634 : STBI_NOTUSED(clbk);
; 1635 : STBI_NOTUSED(user);
; 1636 : return 0;
; 1637 : #endif
; 1638 : }
00070 48 8b f8 mov rdi, rax
00073 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00077 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_is_hdr_from_callbacks$rtcFrameData
0007e e8 00 00 00 00 call _RTC_CheckStackVars
00083 48 8b c7 mov rax, rdi
00086 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
0008d 48 33 cd xor rcx, rbp
00090 e8 00 00 00 00 call __security_check_cookie
00095 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
0009c 5f pop rdi
0009d 5d pop rbp
0009e c3 ret 0
stbi_is_hdr_from_callbacks ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_ldr_to_hdr_scale
_TEXT SEGMENT
scale$ = 224
stbi_ldr_to_hdr_scale PROC ; COMDAT
; 1648 : {
$LN3:
00000 f3 0f 11 44 24
08 movss DWORD PTR [rsp+8], xmm0
00006 55 push rbp
00007 57 push rdi
00008 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00014 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00020 90 npad 1
; 1649 : stbi__l2h_scale = scale;
00021 f3 0f 10 85 e0
00 00 00 movss xmm0, DWORD PTR scale$[rbp]
00029 f3 0f 11 05 00
00 00 00 movss DWORD PTR stbi__l2h_scale, xmm0
; 1650 : }
00031 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00038 5f pop rdi
00039 5d pop rbp
0003a c3 ret 0
stbi_ldr_to_hdr_scale ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_ldr_to_hdr_gamma
_TEXT SEGMENT
gamma$ = 224
stbi_ldr_to_hdr_gamma PROC ; COMDAT
; 1644 : {
$LN3:
00000 f3 0f 11 44 24
08 movss DWORD PTR [rsp+8], xmm0
00006 55 push rbp
00007 57 push rdi
00008 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00014 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00020 90 npad 1
; 1645 : stbi__l2h_gamma = gamma;
00021 f3 0f 10 85 e0
00 00 00 movss xmm0, DWORD PTR gamma$[rbp]
00029 f3 0f 11 05 00
00 00 00 movss DWORD PTR stbi__l2h_gamma, xmm0
; 1646 : }
00031 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00038 5f pop rdi
00039 5d pop rbp
0003a c3 ret 0
stbi_ldr_to_hdr_gamma ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_hdr_to_ldr_scale
_TEXT SEGMENT
scale$ = 224
stbi_hdr_to_ldr_scale PROC ; COMDAT
; 1660 : {
$LN3:
00000 f3 0f 11 44 24
08 movss DWORD PTR [rsp+8], xmm0
00006 55 push rbp
00007 57 push rdi
00008 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00014 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00020 90 npad 1
; 1661 : stbi__h2l_scale_i = 1 / scale;
00021 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
00029 f3 0f 5e 85 e0
00 00 00 divss xmm0, DWORD PTR scale$[rbp]
00031 f3 0f 11 05 00
00 00 00 movss DWORD PTR stbi__h2l_scale_i, xmm0
; 1662 : }
00039 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00040 5f pop rdi
00041 5d pop rbp
00042 c3 ret 0
stbi_hdr_to_ldr_scale ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_hdr_to_ldr_gamma
_TEXT SEGMENT
gamma$ = 224
stbi_hdr_to_ldr_gamma PROC ; COMDAT
; 1656 : {
$LN3:
00000 f3 0f 11 44 24
08 movss DWORD PTR [rsp+8], xmm0
00006 55 push rbp
00007 57 push rdi
00008 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00014 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00020 90 npad 1
; 1657 : stbi__h2l_gamma_i = 1 / gamma;
00021 f3 0f 10 05 00
00 00 00 movss xmm0, DWORD PTR __real@3f800000
00029 f3 0f 5e 85 e0
00 00 00 divss xmm0, DWORD PTR gamma$[rbp]
00031 f3 0f 11 05 00
00 00 00 movss DWORD PTR stbi__h2l_gamma_i, xmm0
; 1658 : }
00039 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00040 5f pop rdi
00041 5d pop rbp
00042 c3 ret 0
stbi_hdr_to_ldr_gamma ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_loadf_from_file
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
f$ = 480
x$ = 488
y$ = 496
comp$ = 504
req_comp$ = 512
stbi_loadf_from_file PROC ; COMDAT
; 1572 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec f8 01
00 00 sub rsp, 504 ; 000001f8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 18
02 00 00 mov rcx, QWORD PTR [rsp+536]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1573 : stbi__context s;
; 1574 : stbi__start_file(&s, f);
00059 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR f$[rbp]
00060 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00064 e8 00 00 00 00 call stbi__start_file
00069 90 npad 1
; 1575 : return stbi__loadf_main(&s, x, y, comp, req_comp);
0006a 8b 85 00 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
00074 4c 8b 8d f8 01
00 00 mov r9, QWORD PTR comp$[rbp]
0007b 4c 8b 85 f0 01
00 00 mov r8, QWORD PTR y$[rbp]
00082 48 8b 95 e8 01
00 00 mov rdx, QWORD PTR x$[rbp]
00089 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0008d e8 00 00 00 00 call stbi__loadf_main
; 1576 : }
00092 48 8b f8 mov rdi, rax
00095 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00099 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_loadf_from_file$rtcFrameData
000a0 e8 00 00 00 00 call _RTC_CheckStackVars
000a5 48 8b c7 mov rax, rdi
000a8 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000af 48 33 cd xor rcx, rbp
000b2 e8 00 00 00 00 call __security_check_cookie
000b7 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000be 5f pop rdi
000bf 5d pop rbp
000c0 c3 ret 0
stbi_loadf_from_file ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_loadf
_TEXT SEGMENT
result$ = 8
f$ = 40
tv71 = 248
filename$ = 288
x$ = 296
y$ = 304
comp$ = 312
req_comp$ = 320
stbi_loadf PROC ; COMDAT
; 1561 : {
$LN6:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 38 01
00 00 sub rsp, 312 ; 00000138H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 1562 : float *result;
; 1563 : FILE *f = stbi__fopen(filename, "rb");
0002f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
00036 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR filename$[rbp]
0003d e8 00 00 00 00 call stbi__fopen
00042 48 89 45 28 mov QWORD PTR f$[rbp], rax
; 1564 : if (!f)
00046 48 83 7d 28 00 cmp QWORD PTR f$[rbp], 0
0004b 75 31 jne SHORT $LN2@stbi_loadf
; 1565 : return stbi__errpf("can't fopen", "Unable to open file");
0004d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
00054 e8 00 00 00 00 call stbi__err
00059 85 c0 test eax, eax
0005b 74 0d je SHORT $LN4@stbi_loadf
0005d 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
00068 eb 0b jmp SHORT $LN5@stbi_loadf
$LN4@stbi_loadf:
0006a 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
$LN5@stbi_loadf:
00075 48 8b 85 f8 00
00 00 mov rax, QWORD PTR tv71[rbp]
0007c eb 3b jmp SHORT $LN1@stbi_loadf
$LN2@stbi_loadf:
; 1566 : result = stbi_loadf_from_file(f, x, y, comp, req_comp);
0007e 8b 85 40 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00084 89 44 24 20 mov DWORD PTR [rsp+32], eax
00088 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
0008f 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
00096 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
0009d 48 8b 4d 28 mov rcx, QWORD PTR f$[rbp]
000a1 e8 00 00 00 00 call stbi_loadf_from_file
000a6 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 1567 : fclose(f);
000aa 48 8b 4d 28 mov rcx, QWORD PTR f$[rbp]
000ae ff 15 00 00 00
00 call QWORD PTR __imp_fclose
000b4 90 npad 1
; 1568 : return result;
000b5 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
$LN1@stbi_loadf:
; 1569 : }
000b9 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000c0 5f pop rdi
000c1 5d pop rbp
000c2 c3 ret 0
stbi_loadf ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_loadf_from_callbacks
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
clbk$ = 480
user$ = 488
x$ = 496
y$ = 504
comp$ = 512
req_comp$ = 520
stbi_loadf_from_callbacks PROC ; COMDAT
; 1553 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec f8 01
00 00 sub rsp, 504 ; 000001f8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 18
02 00 00 mov rcx, QWORD PTR [rsp+536]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1554 : stbi__context s;
; 1555 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
00059 4c 8b 85 e8 01
00 00 mov r8, QWORD PTR user$[rbp]
00060 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR clbk$[rbp]
00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__start_callbacks
00070 90 npad 1
; 1556 : return stbi__loadf_main(&s, x, y, comp, req_comp);
00071 8b 85 08 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00077 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007b 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR comp$[rbp]
00082 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
00089 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
00090 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00094 e8 00 00 00 00 call stbi__loadf_main
; 1557 : }
00099 48 8b f8 mov rdi, rax
0009c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
000a0 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_loadf_from_callbacks$rtcFrameData
000a7 e8 00 00 00 00 call _RTC_CheckStackVars
000ac 48 8b c7 mov rax, rdi
000af 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000b6 48 33 cd xor rcx, rbp
000b9 e8 00 00 00 00 call __security_check_cookie
000be 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000c5 5f pop rdi
000c6 5d pop rbp
000c7 c3 ret 0
stbi_loadf_from_callbacks ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_loadf_from_memory
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
buffer$ = 480
len$ = 488
x$ = 496
y$ = 504
comp$ = 512
req_comp$ = 520
stbi_loadf_from_memory PROC ; COMDAT
; 1545 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec f8 01
00 00 sub rsp, 504 ; 000001f8H
0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00021 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00030 f3 ab rep stosd
00032 48 8b 8c 24 18
02 00 00 mov rcx, QWORD PTR [rsp+536]
0003a 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00041 48 33 c5 xor rax, rbp
00044 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00057 90 npad 1
; 1546 : stbi__context s;
; 1547 : stbi__start_mem(&s, buffer, len);
00058 44 8b 85 e8 01
00 00 mov r8d, DWORD PTR len$[rbp]
0005f 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR buffer$[rbp]
00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__start_mem
0006f 90 npad 1
; 1548 : return stbi__loadf_main(&s, x, y, comp, req_comp);
00070 8b 85 08 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007a 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR comp$[rbp]
00081 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
00088 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
0008f 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00093 e8 00 00 00 00 call stbi__loadf_main
; 1549 : }
00098 48 8b f8 mov rdi, rax
0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
0009f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_loadf_from_memory$rtcFrameData
000a6 e8 00 00 00 00 call _RTC_CheckStackVars
000ab 48 8b c7 mov rax, rdi
000ae 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000b5 48 33 cd xor rcx, rbp
000b8 e8 00 00 00 00 call __security_check_cookie
000bd 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000c4 5f pop rdi
000c5 5d pop rbp
000c6 c3 ret 0
stbi_loadf_from_memory ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_from_file_16
_TEXT SEGMENT
result$ = 8
s$ = 48
__$ArrayPad$ = 472
f$ = 512
x$ = 520
y$ = 528
comp$ = 536
req_comp$ = 544
stbi_load_from_file_16 PROC ; COMDAT
; 1450 : {
$LN4:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 18 02
00 00 sub rsp, 536 ; 00000218H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 38
02 00 00 mov rcx, QWORD PTR [rsp+568]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 d8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1451 : stbi__uint16 *result;
; 1452 : stbi__context s;
; 1453 : stbi__start_file(&s, f);
00059 48 8b 95 00 02
00 00 mov rdx, QWORD PTR f$[rbp]
00060 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
00064 e8 00 00 00 00 call stbi__start_file
00069 90 npad 1
; 1454 : result = stbi__load_and_postprocess_16bit(&s, x, y, comp, req_comp);
0006a 8b 85 20 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
00074 4c 8b 8d 18 02
00 00 mov r9, QWORD PTR comp$[rbp]
0007b 4c 8b 85 10 02
00 00 mov r8, QWORD PTR y$[rbp]
00082 48 8b 95 08 02
00 00 mov rdx, QWORD PTR x$[rbp]
00089 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
0008d e8 00 00 00 00 call stbi__load_and_postprocess_16bit
00092 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 1455 : if (result) {
00096 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
0009b 74 2c je SHORT $LN2@stbi_load_
; 1456 : // need to 'unget' all the characters in the IO buffer
; 1457 : fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR);
0009d 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp+192]
000a4 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR s$[rbp+200]
000ab 48 2b c8 sub rcx, rax
000ae 48 8b c1 mov rax, rcx
000b1 f7 d8 neg eax
000b3 41 b8 01 00 00
00 mov r8d, 1
000b9 8b d0 mov edx, eax
000bb 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR f$[rbp]
000c2 ff 15 00 00 00
00 call QWORD PTR __imp_fseek
000c8 90 npad 1
$LN2@stbi_load_:
; 1458 : }
; 1459 : return result;
000c9 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
; 1460 : }
000cd 48 8b f8 mov rdi, rax
000d0 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
000d4 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_load_from_file_16$rtcFrameData
000db e8 00 00 00 00 call _RTC_CheckStackVars
000e0 48 8b c7 mov rax, rdi
000e3 48 8b 8d d8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000ea 48 33 cd xor rcx, rbp
000ed e8 00 00 00 00 call __security_check_cookie
000f2 48 8d a5 e8 01
00 00 lea rsp, QWORD PTR [rbp+488]
000f9 5f pop rdi
000fa 5d pop rbp
000fb c3 ret 0
stbi_load_from_file_16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_16
_TEXT SEGMENT
f$ = 8
result$ = 40
tv71 = 248
filename$ = 288
x$ = 296
y$ = 304
comp$ = 312
req_comp$ = 320
stbi_load_16 PROC ; COMDAT
; 1463 : {
$LN6:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 38 01
00 00 sub rsp, 312 ; 00000138H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 1464 : FILE *f = stbi__fopen(filename, "rb");
0002f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
00036 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR filename$[rbp]
0003d e8 00 00 00 00 call stbi__fopen
00042 48 89 45 08 mov QWORD PTR f$[rbp], rax
; 1465 : stbi__uint16 *result;
; 1466 : if (!f)
00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
0004b 75 31 jne SHORT $LN2@stbi_load_
; 1467 : return (stbi_us *)stbi__errpuc("can't fopen", "Unable to open file");
0004d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
00054 e8 00 00 00 00 call stbi__err
00059 85 c0 test eax, eax
0005b 74 0d je SHORT $LN4@stbi_load_
0005d 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
00068 eb 0b jmp SHORT $LN5@stbi_load_
$LN4@stbi_load_:
0006a 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
$LN5@stbi_load_:
00075 48 8b 85 f8 00
00 00 mov rax, QWORD PTR tv71[rbp]
0007c eb 3b jmp SHORT $LN1@stbi_load_
$LN2@stbi_load_:
; 1468 : result = stbi_load_from_file_16(f, x, y, comp, req_comp);
0007e 8b 85 40 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00084 89 44 24 20 mov DWORD PTR [rsp+32], eax
00088 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
0008f 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
00096 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
0009d 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
000a1 e8 00 00 00 00 call stbi_load_from_file_16
000a6 48 89 45 28 mov QWORD PTR result$[rbp], rax
; 1469 : fclose(f);
000aa 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
000ae ff 15 00 00 00
00 call QWORD PTR __imp_fclose
000b4 90 npad 1
; 1470 : return result;
000b5 48 8b 45 28 mov rax, QWORD PTR result$[rbp]
$LN1@stbi_load_:
; 1471 : }
000b9 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000c0 5f pop rdi
000c1 5d pop rbp
000c2 c3 ret 0
stbi_load_16 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_16_from_callbacks
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
clbk$ = 480
user$ = 488
x$ = 496
y$ = 504
channels_in_file$ = 512
desired_channels$ = 520
stbi_load_16_from_callbacks PROC ; COMDAT
; 1485 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec f8 01
00 00 sub rsp, 504 ; 000001f8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 18
02 00 00 mov rcx, QWORD PTR [rsp+536]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1486 : stbi__context s;
; 1487 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
00059 4c 8b 85 e8 01
00 00 mov r8, QWORD PTR user$[rbp]
00060 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR clbk$[rbp]
00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__start_callbacks
00070 90 npad 1
; 1488 : return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels);
00071 8b 85 08 02 00
00 mov eax, DWORD PTR desired_channels$[rbp]
00077 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007b 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR channels_in_file$[rbp]
00082 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
00089 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
00090 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00094 e8 00 00 00 00 call stbi__load_and_postprocess_16bit
; 1489 : }
00099 48 8b f8 mov rdi, rax
0009c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
000a0 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_load_16_from_callbacks$rtcFrameData
000a7 e8 00 00 00 00 call _RTC_CheckStackVars
000ac 48 8b c7 mov rax, rdi
000af 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000b6 48 33 cd xor rcx, rbp
000b9 e8 00 00 00 00 call __security_check_cookie
000be 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000c5 5f pop rdi
000c6 5d pop rbp
000c7 c3 ret 0
stbi_load_16_from_callbacks ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_16_from_memory
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
buffer$ = 480
len$ = 488
x$ = 496
y$ = 504
channels_in_file$ = 512
desired_channels$ = 520
stbi_load_16_from_memory PROC ; COMDAT
; 1477 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec f8 01
00 00 sub rsp, 504 ; 000001f8H
0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00021 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00030 f3 ab rep stosd
00032 48 8b 8c 24 18
02 00 00 mov rcx, QWORD PTR [rsp+536]
0003a 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00041 48 33 c5 xor rax, rbp
00044 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00057 90 npad 1
; 1478 : stbi__context s;
; 1479 : stbi__start_mem(&s, buffer, len);
00058 44 8b 85 e8 01
00 00 mov r8d, DWORD PTR len$[rbp]
0005f 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR buffer$[rbp]
00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__start_mem
0006f 90 npad 1
; 1480 : return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels);
00070 8b 85 08 02 00
00 mov eax, DWORD PTR desired_channels$[rbp]
00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007a 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR channels_in_file$[rbp]
00081 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
00088 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
0008f 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00093 e8 00 00 00 00 call stbi__load_and_postprocess_16bit
; 1481 : }
00098 48 8b f8 mov rdi, rax
0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
0009f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_load_16_from_memory$rtcFrameData
000a6 e8 00 00 00 00 call _RTC_CheckStackVars
000ab 48 8b c7 mov rax, rdi
000ae 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000b5 48 33 cd xor rcx, rbp
000b8 e8 00 00 00 00 call __security_check_cookie
000bd 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000c4 5f pop rdi
000c5 5d pop rbp
000c6 c3 ret 0
stbi_load_16_from_memory ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_gif_from_memory
_TEXT SEGMENT
result$ = 8
s$ = 48
tv88 = 468
__$ArrayPad$ = 472
buffer$ = 512
len$ = 520
delays$ = 528
x$ = 536
y$ = 544
z$ = 552
comp$ = 560
req_comp$ = 568
stbi_load_gif_from_memory PROC ; COMDAT
; 1510 : {
$LN6:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec 28 02
00 00 sub rsp, 552 ; 00000228H
0001c 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
00021 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
00026 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH
0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00030 f3 ab rep stosd
00032 48 8b 8c 24 48
02 00 00 mov rcx, QWORD PTR [rsp+584]
0003a 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00041 48 33 c5 xor rax, rbp
00044 48 89 85 d8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00057 90 npad 1
; 1511 : unsigned char *result;
; 1512 : stbi__context s;
; 1513 : stbi__start_mem(&s, buffer, len);
00058 44 8b 85 08 02
00 00 mov r8d, DWORD PTR len$[rbp]
0005f 48 8b 95 00 02
00 00 mov rdx, QWORD PTR buffer$[rbp]
00066 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__start_mem
0006f 90 npad 1
; 1514 :
; 1515 : result = (unsigned char *)stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp);
00070 8b 85 38 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00076 89 44 24 30 mov DWORD PTR [rsp+48], eax
0007a 48 8b 85 30 02
00 00 mov rax, QWORD PTR comp$[rbp]
00081 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
00086 48 8b 85 28 02
00 00 mov rax, QWORD PTR z$[rbp]
0008d 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
00092 4c 8b 8d 20 02
00 00 mov r9, QWORD PTR y$[rbp]
00099 4c 8b 85 18 02
00 00 mov r8, QWORD PTR x$[rbp]
000a0 48 8b 95 10 02
00 00 mov rdx, QWORD PTR delays$[rbp]
000a7 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
000ab e8 00 00 00 00 call stbi__load_gif_main
000b0 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 1516 : if (stbi__vertically_flip_on_load) {
000b4 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
000b9 8b c0 mov eax, eax
000bb 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
000c1 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
000ca 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
000ce 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
000d2 74 25 je SHORT $LN4@stbi_load_
000d4 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
000d9 8b c0 mov eax, eax
000db 8b 0d 00 00 00
00 mov ecx, DWORD PTR _tls_index
000e1 65 48 8b 14 25
58 00 00 00 mov rdx, QWORD PTR gs:88
000ea 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
000ee 8b 04 08 mov eax, DWORD PTR [rax+rcx]
000f1 89 85 d4 01 00
00 mov DWORD PTR tv88[rbp], eax
000f7 eb 0c jmp SHORT $LN5@stbi_load_
$LN4@stbi_load_:
000f9 8b 05 00 00 00
00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
000ff 89 85 d4 01 00
00 mov DWORD PTR tv88[rbp], eax
$LN5@stbi_load_:
00105 83 bd d4 01 00
00 00 cmp DWORD PTR tv88[rbp], 0
0010c 74 34 je SHORT $LN2@stbi_load_
; 1517 : stbi__vertical_flip_slices(result, *x, *y, *z, *comp);
0010e 48 8b 85 30 02
00 00 mov rax, QWORD PTR comp$[rbp]
00115 8b 00 mov eax, DWORD PTR [rax]
00117 89 44 24 20 mov DWORD PTR [rsp+32], eax
0011b 48 8b 85 28 02
00 00 mov rax, QWORD PTR z$[rbp]
00122 44 8b 08 mov r9d, DWORD PTR [rax]
00125 48 8b 85 20 02
00 00 mov rax, QWORD PTR y$[rbp]
0012c 44 8b 00 mov r8d, DWORD PTR [rax]
0012f 48 8b 85 18 02
00 00 mov rax, QWORD PTR x$[rbp]
00136 8b 10 mov edx, DWORD PTR [rax]
00138 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
0013c e8 00 00 00 00 call stbi__vertical_flip_slices
00141 90 npad 1
$LN2@stbi_load_:
; 1518 : }
; 1519 :
; 1520 : return result;
00142 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
; 1521 : }
00146 48 8b f8 mov rdi, rax
00149 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
0014d 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_load_gif_from_memory$rtcFrameData
00154 e8 00 00 00 00 call _RTC_CheckStackVars
00159 48 8b c7 mov rax, rdi
0015c 48 8b 8d d8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
00163 48 33 cd xor rcx, rbp
00166 e8 00 00 00 00 call __security_check_cookie
0016b 48 8d a5 e8 01
00 00 lea rsp, QWORD PTR [rbp+488]
00172 5f pop rdi
00173 5d pop rbp
00174 c3 ret 0
stbi_load_gif_from_memory ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_from_file
_TEXT SEGMENT
result$ = 8
s$ = 48
__$ArrayPad$ = 472
f$ = 512
x$ = 520
y$ = 528
comp$ = 536
req_comp$ = 544
stbi_load_from_file PROC ; COMDAT
; 1437 : {
$LN4:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 18 02
00 00 sub rsp, 536 ; 00000218H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 38
02 00 00 mov rcx, QWORD PTR [rsp+568]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 d8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1438 : unsigned char *result;
; 1439 : stbi__context s;
; 1440 : stbi__start_file(&s, f);
00059 48 8b 95 00 02
00 00 mov rdx, QWORD PTR f$[rbp]
00060 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
00064 e8 00 00 00 00 call stbi__start_file
00069 90 npad 1
; 1441 : result = stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp);
0006a 8b 85 20 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
00074 4c 8b 8d 18 02
00 00 mov r9, QWORD PTR comp$[rbp]
0007b 4c 8b 85 10 02
00 00 mov r8, QWORD PTR y$[rbp]
00082 48 8b 95 08 02
00 00 mov rdx, QWORD PTR x$[rbp]
00089 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
0008d e8 00 00 00 00 call stbi__load_and_postprocess_8bit
00092 48 89 45 08 mov QWORD PTR result$[rbp], rax
; 1442 : if (result) {
00096 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
0009b 74 2c je SHORT $LN2@stbi_load_
; 1443 : // need to 'unget' all the characters in the IO buffer
; 1444 : fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR);
0009d 48 8b 85 f0 00
00 00 mov rax, QWORD PTR s$[rbp+192]
000a4 48 8b 8d f8 00
00 00 mov rcx, QWORD PTR s$[rbp+200]
000ab 48 2b c8 sub rcx, rax
000ae 48 8b c1 mov rax, rcx
000b1 f7 d8 neg eax
000b3 41 b8 01 00 00
00 mov r8d, 1
000b9 8b d0 mov edx, eax
000bb 48 8b 8d 00 02
00 00 mov rcx, QWORD PTR f$[rbp]
000c2 ff 15 00 00 00
00 call QWORD PTR __imp_fseek
000c8 90 npad 1
$LN2@stbi_load_:
; 1445 : }
; 1446 : return result;
000c9 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
; 1447 : }
000cd 48 8b f8 mov rdi, rax
000d0 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
000d4 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_load_from_file$rtcFrameData
000db e8 00 00 00 00 call _RTC_CheckStackVars
000e0 48 8b c7 mov rax, rdi
000e3 48 8b 8d d8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000ea 48 33 cd xor rcx, rbp
000ed e8 00 00 00 00 call __security_check_cookie
000f2 48 8d a5 e8 01
00 00 lea rsp, QWORD PTR [rbp+488]
000f9 5f pop rdi
000fa 5d pop rbp
000fb c3 ret 0
stbi_load_from_file ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load
_TEXT SEGMENT
f$ = 8
result$ = 40
tv71 = 248
filename$ = 288
x$ = 296
y$ = 304
comp$ = 312
req_comp$ = 320
stbi_load PROC ; COMDAT
; 1426 : {
$LN6:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec 38 01
00 00 sub rsp, 312 ; 00000138H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0002e 90 npad 1
; 1427 : FILE *f = stbi__fopen(filename, "rb");
0002f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
00036 48 8b 8d 20 01
00 00 mov rcx, QWORD PTR filename$[rbp]
0003d e8 00 00 00 00 call stbi__fopen
00042 48 89 45 08 mov QWORD PTR f$[rbp], rax
; 1428 : unsigned char *result;
; 1429 : if (!f)
00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
0004b 75 31 jne SHORT $LN2@stbi_load
; 1430 : return stbi__errpuc("can't fopen", "Unable to open file");
0004d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
00054 e8 00 00 00 00 call stbi__err
00059 85 c0 test eax, eax
0005b 74 0d je SHORT $LN4@stbi_load
0005d 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
00068 eb 0b jmp SHORT $LN5@stbi_load
$LN4@stbi_load:
0006a 48 c7 85 f8 00
00 00 00 00 00
00 mov QWORD PTR tv71[rbp], 0
$LN5@stbi_load:
00075 48 8b 85 f8 00
00 00 mov rax, QWORD PTR tv71[rbp]
0007c eb 3b jmp SHORT $LN1@stbi_load
$LN2@stbi_load:
; 1431 : result = stbi_load_from_file(f, x, y, comp, req_comp);
0007e 8b 85 40 01 00
00 mov eax, DWORD PTR req_comp$[rbp]
00084 89 44 24 20 mov DWORD PTR [rsp+32], eax
00088 4c 8b 8d 38 01
00 00 mov r9, QWORD PTR comp$[rbp]
0008f 4c 8b 85 30 01
00 00 mov r8, QWORD PTR y$[rbp]
00096 48 8b 95 28 01
00 00 mov rdx, QWORD PTR x$[rbp]
0009d 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
000a1 e8 00 00 00 00 call stbi_load_from_file
000a6 48 89 45 28 mov QWORD PTR result$[rbp], rax
; 1432 : fclose(f);
000aa 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
000ae ff 15 00 00 00
00 call QWORD PTR __imp_fclose
000b4 90 npad 1
; 1433 : return result;
000b5 48 8b 45 28 mov rax, QWORD PTR result$[rbp]
$LN1@stbi_load:
; 1434 : }
000b9 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
000c0 5f pop rdi
000c1 5d pop rbp
000c2 c3 ret 0
stbi_load ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_from_callbacks
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
clbk$ = 480
user$ = 488
x$ = 496
y$ = 504
comp$ = 512
req_comp$ = 520
stbi_load_from_callbacks PROC ; COMDAT
; 1501 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00014 55 push rbp
00015 57 push rdi
00016 48 81 ec f8 01
00 00 sub rsp, 504 ; 000001f8H
0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00031 f3 ab rep stosd
00033 48 8b 8c 24 18
02 00 00 mov rcx, QWORD PTR [rsp+536]
0003b 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00042 48 33 c5 xor rax, rbp
00045 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00058 90 npad 1
; 1502 : stbi__context s;
; 1503 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
00059 4c 8b 85 e8 01
00 00 mov r8, QWORD PTR user$[rbp]
00060 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR clbk$[rbp]
00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006b e8 00 00 00 00 call stbi__start_callbacks
00070 90 npad 1
; 1504 : return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp);
00071 8b 85 08 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00077 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007b 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR comp$[rbp]
00082 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
00089 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
00090 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00094 e8 00 00 00 00 call stbi__load_and_postprocess_8bit
; 1505 : }
00099 48 8b f8 mov rdi, rax
0009c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
000a0 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_load_from_callbacks$rtcFrameData
000a7 e8 00 00 00 00 call _RTC_CheckStackVars
000ac 48 8b c7 mov rax, rdi
000af 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000b6 48 33 cd xor rcx, rbp
000b9 e8 00 00 00 00 call __security_check_cookie
000be 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000c5 5f pop rdi
000c6 5d pop rbp
000c7 c3 ret 0
stbi_load_from_callbacks ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
; COMDAT stbi_load_from_memory
_TEXT SEGMENT
s$ = 16
__$ArrayPad$ = 440
buffer$ = 480
len$ = 488
x$ = 496
y$ = 504
comp$ = 512
req_comp$ = 520
stbi_load_from_memory PROC ; COMDAT
; 1493 : {
$LN3:
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00013 55 push rbp
00014 57 push rdi
00015 48 81 ec f8 01
00 00 sub rsp, 504 ; 000001f8H
0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00021 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00030 f3 ab rep stosd
00032 48 8b 8c 24 18
02 00 00 mov rcx, QWORD PTR [rsp+536]
0003a 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00041 48 33 c5 xor rax, rbp
00044 48 89 85 b8 01
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
0004b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00057 90 npad 1
; 1494 : stbi__context s;
; 1495 : stbi__start_mem(&s, buffer, len);
00058 44 8b 85 e8 01
00 00 mov r8d, DWORD PTR len$[rbp]
0005f 48 8b 95 e0 01
00 00 mov rdx, QWORD PTR buffer$[rbp]
00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
0006a e8 00 00 00 00 call stbi__start_mem
0006f 90 npad 1
; 1496 : return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp);
00070 8b 85 08 02 00
00 mov eax, DWORD PTR req_comp$[rbp]
00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
0007a 4c 8b 8d 00 02
00 00 mov r9, QWORD PTR comp$[rbp]
00081 4c 8b 85 f8 01
00 00 mov r8, QWORD PTR y$[rbp]
00088 48 8b 95 f0 01
00 00 mov rdx, QWORD PTR x$[rbp]
0008f 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
00093 e8 00 00 00 00 call stbi__load_and_postprocess_8bit
; 1497 : }
00098 48 8b f8 mov rdi, rax
0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
0009f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:stbi_load_from_memory$rtcFrameData
000a6 e8 00 00 00 00 call _RTC_CheckStackVars
000ab 48 8b c7 mov rax, rdi
000ae 48 8b 8d b8 01
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
000b5 48 33 cd xor rcx, rbp
000b8 e8 00 00 00 00 call __security_check_cookie
000bd 48 8d a5 c8 01
00 00 lea rsp, QWORD PTR [rbp+456]
000c4 5f pop rdi
000c5 5d pop rbp
000c6 c3 ret 0
stbi_load_from_memory ENDP
_TEXT ENDS
END