Function at 0x40a946
Capabilities:
Get file size
Read file via mapping

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2778
call fcn.004170c0
mov eax, dword [0x43f434]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x2660], eax
mov eax, dword [ebp + 0x1c]
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x18]
mov dword [ebp - 0x2634], eax
mov eax, dword [ebp + 0x20]
push edi
mov dword [ebp - 0x2618], esi
mov dword [ebp - 0x2620], eax
call fcn.0040a827
test al, al
je 0x40c26b
xor edi, edi
mov dword [ebp - 0x2614], edi
cmp esi, edi
je 0x40a9aa
mov dword [ebp - 0x2614], 1
push pe_nt_image_headers32
lea eax, [ebp - 0x2760]
push edi
push eax
mov dword [ebp - 0x2604], edi
mov dword [ebp - 0x2644], edi
mov dword [ebp - 0x264c], edi
mov dword [ebp - 0x2658], edi
mov dword [ebp - 0x2648], edi
mov dword [ebp - 0x2654], edi
mov dword [ebp - 0x2768], edi
mov dword [ebp - 0x2764], edi
call fcn.00414ce0
push 0x2c8
lea eax, [ebp - 0x25f8]
push edi
push eax
mov dword [ebp - 0x25fc], edi
call fcn.00414ce0
xor eax, eax
push 0x1ffe
mov word [ebp - 0x22c8], ax
lea eax, [ebp - 0x22c6]
push edi
push eax
call fcn.00414ce0
xor eax, eax
push 0x206
mov word [ebp - 0x248], ax
lea eax, [ebp - 0x246]
push edi
push eax
call fcn.00414ce0
add esp, 0x30
cmp dword [ebp + 0x10], edi
je 0x40c26b
cmp ebx, edi
je 0x40c26b
push edi
push 0x80
push 3
push edi
push edi
push 0x80000000
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
mov dword [ebp - 0x265c], ebx
cmp ebx, 0xffffffff
je 0x40c26b
push edi
push ebx
mov dword [0x4422e8], ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, edi
je 0x40c264
push edi
push edi
push edi
push 2
push edi
push ebx
mov dword [0x4422e0], eax
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov dword [ebp - 0x2650], eax
cmp eax, edi
je 0x40c264
push edi
push edi
push edi
push 4
push eax
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov esi, eax
mov dword [ebp - 0x260c], esi
cmp esi, edi
je 0x40c258
lea eax, [ebp - 0x2648]
push eax
lea eax, [ebp - 0x264c]
push eax
lea eax, [ebp - 0x2644]
push eax
push 6
push esi
mov dword [0x4422dc], esi
call dword [0x44230c]
test eax, eax
je 0x40c24b
lea eax, [ebp - 0x2648]
push eax
lea eax, [ebp - 0x2604]
push eax
lea eax, [ebp - 0x2644]
push eax
push 4
push esi
call dword [0x44230c]
test eax, eax
je 0x40c24b
lea eax, [ebp - 0x2648]
push eax
lea eax, [ebp - 0x2654]
push eax
lea eax, [ebp - 0x2644]
push eax
push 3
push esi
call dword [0x44230c]
test eax, eax
je 0x40c24b
mov ecx, dword [ebp - 0x2654]
xor eax, eax
cmp dword [ecx], edi
jbe 0x40ab7c
mov edx, dword [ebp - 0x264c]
mov edx, dword [edx]
mov dword [ebp - 0x261c], edx
lea edx, [ecx + 4]
mov ebx, dword [ebp - 0x261c]
cmp ebx, dword [edx]
je 0x40ab70
inc eax
add edx, 0x30
cmp eax, dword [ecx]
jb 0x40ab5c
jmp 0x40ab7c
imul eax, eax, 0x30
lea eax, [eax + ecx + 4]
mov dword [0x4422d8], eax
lea eax, [ebp - 0x2648]
push eax
lea eax, [ebp - 0x2658]
push eax
lea eax, [ebp - 0x2644]
push eax
push 5
push esi
call dword [0x44230c]
test eax, eax
je 0x40c24b
mov eax, dword [ebp - 0x2658]
mov dword [0x4422e4], eax
mov eax, dword [ebp - 0x264c]
push dword [eax + 0xa0]
mov eax, dword [eax + 0xa4]
add eax, esi
push eax
lea eax, [ebp - 0x25fc]
push 0x2cc
push eax
call fcn.0041813c
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
add esp, 0x10
mov dword [ebp - 0x2610], edi
cmp dword [ebp - 0x2614], edi
jne 0x40acca
mov ecx, dword [ebp - 0x2604]
mov eax, dword [ecx]
mov dword [ebp - 0x2600], edi
mov dword [ebp - 0x2608], eax
cmp eax, edi
jbe 0x40ac5f
mov dword [ebp - 0x2634], edi
add ecx, 4
mov eax, dword [ebp - 0x2634]
mov esi, dword [ecx]
cmp eax, dword [ecx + 4]
jb 0x40ac48
ja 0x40ac26
cmp dword [ebp - 0x2544], esi
jb 0x40ac48
mov eax, dword [ecx + 8]
xor edx, edx
add eax, esi
adc edx, dword [ecx + 4]
and dword [ebp - 0x2634], edi
cmp dword [ebp - 0x2634], edx
jb 0x40ac5f
ja 0x40ac48
cmp dword [ebp - 0x2544], eax
jb 0x40ac5f
inc dword [ebp - 0x2600]
mov eax, dword [ebp - 0x2600]
add ecx, 0x6c
cmp eax, dword [ebp - 0x2608]
jb 0x40ac0f
mov eax, dword [ebp - 0x2608]
cmp dword [ebp - 0x2600], eax
je 0x40addd
push 0x208
lea eax, [ebp - 0x248]
push edi
push eax
call fcn.00414ce0
mov esi, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
mov eax, esi
imul eax, eax, 0x6c
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
mov eax, dword [ebp - 0x2604]
add esp, 0x18
cmp esi, dword [eax]
je 0x40addd
jmp 0x40adc7
lea eax, [ebp - 0x2608]
push eax
push 4
lea eax, [ebp - 0x261c]
push eax
push edi
push dword [ebp - 0x2538]
mov dword [ebp - 0x261c], edi
push esi
call fcn.0040a69a
mov edx, dword [ebp - 0x2604]
mov eax, dword [edx]
mov dword [ebp - 0x2608], eax
cmp eax, edi
mov eax, dword [ebp - 0x261c]
mov dword [ebp - 0x2600], edi
jbe 0x40ad60
mov dword [ebp - 0x2624], edi
add edx, 4
mov esi, dword [edx + 4]
cmp dword [ebp - 0x2624], esi
jb 0x40ad45
ja 0x40ad25
cmp eax, dword [edx]
jb 0x40ad45
mov ecx, dword [edx + 8]
xor edi, edi
add ecx, dword [edx]
adc edi, esi
and dword [ebp - 0x2624], 0
cmp dword [ebp - 0x2624], edi
jb 0x40ad5e
ja 0x40ad43
cmp eax, ecx
jb 0x40ad5e
xor edi, edi
inc dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2608]
add edx, 0x6c
cmp dword [ebp - 0x2600], ecx
jb 0x40ad14
jmp 0x40ad60
xor edi, edi
mov esi, dword [ebp - 0x2600]
cmp esi, dword [ebp - 0x2608]
je 0x40addd
mov ecx, dword [ebp - 0x2604]
imul esi, esi, 0x6c
sub eax, dword [esi + ecx + 4]
push eax
push str.0x_08x
push dword [ebp - 0x2634]
call fcn.0041832a
push 0x208
lea eax, [ebp - 0x248]
push edi
push eax
call fcn.00414ce0
mov eax, dword [ebp - 0x2604]
mov eax, dword [esi + eax + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x24
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
mov dword [ebp - 0x2610], eax
pop ecx
cmp dword [ebp + 0x14], edi
je 0x40b152
mov eax, dword [ebp - 0x2544]
mov dword [ebp - 0x2768], eax
mov eax, dword [ebp - 0x2538]
mov dword [ebp - 0x2738], eax
mov eax, dword [ebp - 0x2548]
push 3
mov dword [ebp - 0x2748], eax
pop eax
push 0x2000
mov dword [ebp - 0x273c], eax
mov dword [ebp - 0x272c], eax
mov dword [ebp - 0x275c], eax
lea eax, [ebp - 0x22c8]
push edi
push eax
mov dword [ebp - 0x2764], edi
mov dword [ebp - 0x2734], edi
mov dword [ebp - 0x2744], edi
call fcn.00414ce0
add esp, 0xc
mov dword [ebp - 0x2610], edi
mov esi, 0x1000
xor edi, edi
push edi
push edi
push edi
push fcn.0040a69a
lea eax, [ebp - 0x25fc]
push eax
lea eax, [ebp - 0x2768]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
push edi
push 0x14c
call dword [0x4422f0]
test eax, eax
je 0x40b120
mov eax, dword [ebp - 0x2604]
mov ecx, dword [eax]
mov dword [ebp - 0x2600], edi
mov dword [ebp - 0x2608], ecx
cmp ecx, edi
jbe 0x40aeef
mov dword [ebp - 0x2624], edi
add eax, 4
mov ecx, dword [ebp - 0x2624]
mov edi, dword [eax]
cmp ecx, dword [eax + 4]
jb 0x40aed8
ja 0x40aebc
cmp dword [ebp - 0x2768], edi
jb 0x40aed8
mov ecx, dword [eax + 8]
xor edx, edx
add ecx, edi
adc edx, dword [eax + 4]
cmp dword [ebp - 0x2624], edx
jb 0x40aeef
ja 0x40aed8
cmp dword [ebp - 0x2768], ecx
jb 0x40aeef
inc dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2600]
add eax, 0x6c
cmp ecx, dword [ebp - 0x2608]
jb 0x40aea5
mov eax, dword [ebp - 0x2608]
cmp dword [ebp - 0x2600], eax
je 0x40b0ff
cmp word [ebp - 0x22c8], 0
jne 0x40afc7
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x18
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2768]
sub eax, dword [edx + ecx + 4]
push eax
push str._0x_08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x2c
jmp 0x40b0ff
push 9
xor eax, eax
pop ecx
mov word [ebp - 0x2c], ax
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
push 0x431d14
stosw word es:[edi], ax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
call fcn.00414ce0
mov edi, dword [ebp - 0x2600]
mov eax, dword [ebp - 0x2604]
imul edi, edi, 0x6c
mov eax, dword [edi + eax + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x24
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov eax, dword [ebp - 0x2768]
mov ecx, dword [ebp - 0x2604]
sub eax, dword [edi + ecx + 4]
push eax
push str._0x_08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov eax, dword [ebp - 0x2604]
mov ecx, dword [ebp - 0x2600]
add esp, 0x2c
cmp ecx, dword [eax]
je 0x40b0ff
cmp dword [ebp - 0x2614], 0
je 0x40b0ff
add eax, edi
movzx edx, word [eax + 0x24]
movzx ecx, word [eax + 0x26]
mov dword [ebp - 0x263c], edx
movzx edx, word [eax + 0x2a]
movzx eax, word [eax + 0x28]
push eax
push edx
push dword [ebp - 0x263c]
push ecx
push str._d._d._d._d
push dword [ebp - 0x2620]
call fcn.0041832a
mov eax, dword [ebp - 0x2604]
mov eax, dword [edi + eax + 0x18]
mov ecx, dword [ebp - 0x260c]
add esp, 0x18
lea eax, [eax + ecx + 4]
push eax
call ebx
push eax
push 0x104
push dword [ebp - 0x2618]
call fcn.00417033
add esp, 0xc
and dword [ebp - 0x2614], 0
mov eax, dword [ebp - 0x2758]
or eax, dword [ebp - 0x2754]
je 0x40b120
inc dword [ebp - 0x2610]
cmp dword [ebp - 0x2610], 5
jl 0x40ae51
xor eax, eax
mov byte [ebp - 0x40], 0
lea edi, [ebp - 0x3f]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x22c8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
mov edi, 0x3fffffff
cmp eax, edi
jle 0x40c12b
xor esi, esi
jmp 0x40c149
mov esi, dword [ebp - 0x2610]
mov edi, dword [sym.imp.SHLWAPI.dll_StrCmpIW]
push str.kernel32
push esi
call edi
test eax, eax
je 0x40b859
push str.user32
push esi
call edi
test eax, eax
je 0x40b859
push str.ntdll
push esi
call edi
test eax, eax
je 0x40b859
push str.kernelbase
push esi
call edi
test eax, eax
je 0x40b859
mov eax, dword [ebp - 0x2544]
mov dword [ebp - 0x2768], eax
mov eax, dword [ebp - 0x2538]
mov dword [ebp - 0x2738], eax
mov eax, dword [ebp - 0x2548]
push 3
mov dword [ebp - 0x2748], eax
pop eax
xor esi, esi
push 0x2000
mov dword [ebp - 0x273c], eax
mov dword [ebp - 0x272c], eax
mov dword [ebp - 0x275c], eax
lea eax, [ebp - 0x22c8]
push esi
push eax
mov dword [ebp - 0x2764], esi
mov dword [ebp - 0x2734], esi
mov dword [ebp - 0x2744], esi
call fcn.00414ce0
mov eax, dword [ebp - 0x2604]
mov ecx, dword [eax]
add esp, 0xc
mov dword [ebp - 0x2600], esi
mov dword [ebp - 0x2608], ecx
cmp ecx, esi
jbe 0x40b26a
mov dword [ebp - 0x2634], esi
add eax, 4
mov edi, dword [eax + 4]
mov esi, dword [eax]
cmp dword [ebp - 0x2634], edi
jb 0x40b253
ja 0x40b238
cmp dword [ebp - 0x2544], esi
jb 0x40b253
mov ecx, dword [eax + 8]
xor edx, edx
add ecx, esi
adc edx, edi
cmp dword [ebp - 0x2634], edx
jb 0x40b26a
ja 0x40b253
cmp dword [ebp - 0x2544], ecx
jb 0x40b26a
inc dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2600]
add eax, 0x6c
cmp ecx, dword [ebp - 0x2608]
jb 0x40b221
mov eax, dword [ebp - 0x2608]
mov esi, 0x1000
cmp dword [ebp - 0x2600], eax
je 0x40b3c1
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x18
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
push 0x432020
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2768]
sub eax, dword [edx + ecx + 4]
push eax
push str._08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x38
cmp dword [ebp - 0x2614], 0
je 0x40b3c1
mov eax, dword [ebp - 0x2604]
mov edi, dword [ebp - 0x2608]
add eax, edi
movzx edx, word [eax + 0x24]
movzx ecx, word [eax + 0x26]
mov dword [ebp - 0x262c], edx
movzx edx, word [eax + 0x2a]
movzx eax, word [eax + 0x28]
push eax
push edx
push dword [ebp - 0x262c]
push ecx
push str._d._d._d._d
push dword [ebp - 0x2620]
call fcn.0041832a
mov eax, dword [ebp - 0x2604]
mov eax, dword [edi + eax + 0x18]
mov ecx, dword [ebp - 0x260c]
add esp, 0x18
lea eax, [eax + ecx + 4]
push eax
call ebx
push eax
push 0x104
push dword [ebp - 0x2618]
call fcn.00417033
add esp, 0xc
and dword [ebp - 0x2614], 0
lea eax, [ebp - 0x2634]
push eax
push 4
lea eax, [ebp - 0x2610]
push eax
xor edi, edi
push edi
push dword [ebp - 0x2538]
mov dword [ebp - 0x2610], edi
push dword [ebp - 0x260c]
call fcn.0040a69a
mov eax, dword [ebp - 0x2604]
mov ecx, dword [eax]
mov dword [ebp - 0x2600], edi
mov dword [ebp - 0x2608], ecx
cmp ecx, edi
jbe 0x40b45d
and dword [ebp - 0x2624], edi
add eax, 4
mov ecx, dword [ebp - 0x2624]
mov edi, dword [eax]
cmp ecx, dword [eax + 4]
jb 0x40b446
ja 0x40b423
cmp dword [ebp - 0x2610], edi
jb 0x40b446
mov ecx, dword [eax + 8]
xor edx, edx
add ecx, edi
adc edx, dword [eax + 4]
and dword [ebp - 0x2624], 0
cmp dword [ebp - 0x2624], edx
jb 0x40b45d
ja 0x40b446
cmp dword [ebp - 0x2610], ecx
jb 0x40b45d
inc dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2600]
add eax, 0x6c
cmp ecx, dword [ebp - 0x2608]
jb 0x40b40c
mov eax, dword [ebp - 0x2608]
cmp dword [ebp - 0x2600], eax
je 0x40b628
cmp word [ebp - 0x22c8], 0
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
jne 0x40b54a
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x18
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
push 0x432020
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2610]
sub eax, dword [edx + ecx + 4]
push eax
push str._08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov edi, dword [ebp - 0x2608]
add esp, 0x38
jmp 0x40b5b3
call fcn.00414ce0
mov edi, dword [ebp - 0x2600]
mov eax, dword [ebp - 0x2604]
imul edi, edi, 0x6c
mov eax, dword [edi + eax + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
push 0x431d14
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x24
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x10
cmp dword [ebp - 0x2614], 0
je 0x40b628
mov eax, dword [ebp - 0x2604]
add eax, edi
movzx edx, word [eax + 0x24]
movzx ecx, word [eax + 0x26]
mov dword [ebp - 0x262c], edx
movzx edx, word [eax + 0x2a]
movzx eax, word [eax + 0x28]
push eax
push edx
push dword [ebp - 0x262c]
push ecx
push str._d._d._d._d
push dword [ebp - 0x2620]
call fcn.0041832a
mov eax, dword [ebp - 0x2604]
mov ecx, dword [ebp - 0x260c]
mov eax, dword [edi + eax + 0x18]
add esp, 0x18
lea eax, [eax + ecx + 4]
push eax
call ebx
push eax
push 0x104
push dword [ebp - 0x2618]
call fcn.00417033
add esp, 0xc
and dword [ebp - 0x2614], 0
xor edi, edi
push edi
push edi
push edi
push fcn.0040a69a
lea eax, [ebp - 0x25fc]
push eax
lea eax, [ebp - 0x2768]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
push edi
push 0x14c
call dword [0x4422f0]
cmp eax, edi
je 0x40b120
mov eax, dword [ebp - 0x2758]
or eax, dword [ebp - 0x2754]
je 0x40b120
mov ecx, dword [ebp - 0x2604]
mov eax, dword [ecx]
mov dword [ebp - 0x2600], edi
mov dword [ebp - 0x2608], eax
cmp eax, edi
jbe 0x40b6e1
mov dword [ebp - 0x2634], edi
add ecx, 4
mov eax, dword [ebp - 0x2634]
mov edi, dword [ecx]
cmp eax, dword [ecx + 4]
jb 0x40b6c8
ja 0x40b6a5
cmp dword [ebp - 0x2758], edi
jb 0x40b6c8
mov eax, dword [ecx + 8]
xor edx, edx
add eax, edi
adc edx, dword [ecx + 4]
and dword [ebp - 0x2634], 0
cmp dword [ebp - 0x2634], edx
jb 0x40b6df
ja 0x40b6c8
cmp dword [ebp - 0x2758], eax
jb 0x40b6df
inc dword [ebp - 0x2600]
mov eax, dword [ebp - 0x2600]
add ecx, 0x6c
cmp eax, dword [ebp - 0x2608]
jb 0x40b68e
xor edi, edi
mov eax, dword [ebp - 0x2608]
cmp dword [ebp - 0x2600], eax
je 0x40b628
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
cmp word [ebp - 0x22c8], di
jne 0x40b7ca
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x18
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
push 0x432020
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2758]
sub eax, dword [edx + ecx + 4]
push eax
push str._08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x38
jmp 0x40b628
call fcn.00414ce0
mov edi, dword [ebp - 0x2600]
mov eax, dword [ebp - 0x2604]
imul edi, edi, 0x6c
mov eax, dword [edi + eax + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
push 0x431d14
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x24
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov eax, dword [ebp - 0x2604]
mov ecx, dword [ebp - 0x2600]
add esp, 0x10
cmp ecx, dword [eax]
je 0x40b628
cmp dword [ebp - 0x2614], 0
je 0x40b628
jmp 0x40b5c2
mov eax, dword [ebp - 0x2544]
mov dword [ebp - 0x2768], eax
mov eax, dword [ebp - 0x2538]
mov dword [ebp - 0x2738], eax
mov eax, dword [ebp - 0x2548]
push 3
mov dword [ebp - 0x2748], eax
pop eax
xor esi, esi
push 0x2000
mov dword [ebp - 0x273c], eax
mov dword [ebp - 0x272c], eax
mov dword [ebp - 0x275c], eax
lea eax, [ebp - 0x22c8]
push esi
push eax
mov dword [ebp - 0x2610], esi
mov dword [ebp - 0x2764], esi
mov dword [ebp - 0x2734], esi
mov dword [ebp - 0x2744], esi
call fcn.00414ce0
mov eax, dword [ebp - 0x2604]
mov ecx, dword [eax]
add esp, 0xc
mov dword [ebp - 0x2600], esi
mov dword [ebp - 0x2608], ecx
cmp ecx, esi
jbe 0x40b92c
mov dword [ebp - 0x2634], esi
add eax, 4
mov ecx, dword [ebp - 0x2634]
mov esi, dword [eax]
cmp ecx, dword [eax + 4]
jb 0x40b915
ja 0x40b8f9
cmp dword [ebp - 0x2544], esi
jb 0x40b915
mov ecx, dword [eax + 8]
xor edx, edx
add ecx, esi
adc edx, dword [eax + 4]
cmp dword [ebp - 0x2634], edx
jb 0x40b92c
ja 0x40b915
cmp dword [ebp - 0x2544], ecx
jb 0x40b92c
inc dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2600]
add eax, 0x6c
cmp ecx, dword [ebp - 0x2608]
jb 0x40b8e2
mov eax, dword [ebp - 0x2608]
mov esi, 0x1000
cmp dword [ebp - 0x2600], eax
je 0x40bb25
cmp word [ebp - 0x22c8], 0
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
jne 0x40ba09
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x18
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2768]
sub eax, dword [edx + ecx + 4]
push eax
push str._0x_08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x2c
jmp 0x40bb25
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
push 0x431d14
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x24
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x10
push str.kernel32.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call edi
test eax, eax
je 0x40bb25
push str.user32.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call edi
test eax, eax
je 0x40bb25
push str.kernelbase.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call edi
test eax, eax
je 0x40bb25
push str.ntdll.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call edi
test eax, eax
je 0x40bb25
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2768]
sub eax, dword [edx + ecx + 4]
push eax
push str._0x_08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x1c
mov dword [ebp - 0x2610], 1
lea eax, [ebp - 0x2634]
push eax
push 4
lea eax, [ebp - 0x261c]
push eax
xor edi, edi
push edi
push dword [ebp - 0x2538]
mov dword [ebp - 0x261c], edi
push dword [ebp - 0x260c]
call fcn.0040a69a
mov eax, dword [ebp - 0x2604]
mov dword [ebp - 0x2600], edi
cmp dword [eax], edi
jbe 0x40bbb4
mov dword [ebp - 0x2624], edi
add eax, 4
mov ecx, dword [ebp - 0x2624]
mov edi, dword [eax]
cmp ecx, dword [eax + 4]
jb 0x40bb9b
ja 0x40bb7f
cmp dword [ebp - 0x261c], edi
jb 0x40bb9b
mov ecx, dword [eax + 8]
xor edx, edx
add ecx, edi
adc edx, dword [eax + 4]
cmp dword [ebp - 0x2624], edx
jb 0x40bbb4
ja 0x40bb9b
cmp dword [ebp - 0x261c], ecx
jb 0x40bbb4
inc dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
mov edx, dword [ebp - 0x2600]
add eax, 0x6c
cmp edx, dword [ecx]
jb 0x40bb68
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
cmp eax, dword [ecx]
je 0x40be5a
xor eax, eax
cmp word [ebp - 0x22c8], ax
jne 0x40bca1
push 0x208
push eax
lea eax, [ebp - 0x248]
push eax
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x18
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2768]
mov ecx, dword [ebp - 0x2604]
mov edx, dword [ebp - 0x2608]
sub eax, dword [edx + ecx + 4]
push eax
push str._0x_08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x2c
cmp dword [ebp - 0x2614], 0
je 0x40be5a
mov edi, dword [ebp - 0x2608]
jmp 0x40bdee
cmp dword [ebp - 0x2610], eax
jne 0x40bddc
push 0x208
push eax
lea eax, [ebp - 0x248]
push eax
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
push 0x431d14
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x24
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x10
push str.kernel32.dll
lea eax, [ebp - 0x248]
push eax
call ebx
mov edi, dword [sym.imp.SHLWAPI.dll_StrCmpIW]
push eax
call edi
test eax, eax
je 0x40bddc
push str.user32.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call edi
test eax, eax
je 0x40bddc
push str.kernelbase.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call edi
test eax, eax
je 0x40bddc
push str.ntdll.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call edi
test eax, eax
je 0x40bddc
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2768]
sub eax, dword [edx + ecx + 4]
push eax
push str._0x_08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x1c
mov dword [ebp - 0x2610], 1
cmp dword [ebp - 0x2614], 0
je 0x40be5a
mov edi, dword [ebp - 0x2600]
imul edi, edi, 0x6c
mov eax, dword [ebp - 0x2604]
add eax, edi
movzx edx, word [eax + 0x24]
movzx ecx, word [eax + 0x26]
mov dword [ebp - 0x262c], edx
movzx edx, word [eax + 0x2a]
movzx eax, word [eax + 0x28]
push eax
push edx
push dword [ebp - 0x262c]
push ecx
push str._d._d._d._d
push dword [ebp - 0x2620]
call fcn.0041832a
mov eax, dword [ebp - 0x2604]
mov ecx, dword [ebp - 0x260c]
mov eax, dword [edi + eax + 0x18]
add esp, 0x18
lea eax, [eax + ecx + 4]
push eax
call ebx
push eax
push 0x104
push dword [ebp - 0x2618]
call fcn.00417033
add esp, 0xc
and dword [ebp - 0x2614], 0
xor edi, edi
push edi
push edi
push edi
push fcn.0040a69a
lea eax, [ebp - 0x25fc]
push eax
lea eax, [ebp - 0x2768]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
push edi
push 0x14c
call dword [0x4422f0]
cmp eax, edi
je 0x40b120
mov eax, dword [ebp - 0x2758]
or eax, dword [ebp - 0x2754]
je 0x40b120
mov ecx, dword [ebp - 0x2604]
mov eax, dword [ecx]
mov dword [ebp - 0x2600], edi
mov dword [ebp - 0x2608], eax
cmp eax, edi
jbe 0x40bf11
and dword [ebp - 0x2634], edi
add ecx, 4
mov eax, dword [ebp - 0x2634]
mov edi, dword [ecx]
cmp eax, dword [ecx + 4]
jb 0x40befa
ja 0x40bed7
cmp dword [ebp - 0x2758], edi
jb 0x40befa
mov eax, dword [ecx + 8]
xor edx, edx
add eax, edi
adc edx, dword [ecx + 4]
and dword [ebp - 0x2634], 0
cmp dword [ebp - 0x2634], edx
jb 0x40bf11
ja 0x40befa
cmp dword [ebp - 0x2758], eax
jb 0x40bf11
inc dword [ebp - 0x2600]
mov eax, dword [ebp - 0x2600]
add ecx, 0x6c
cmp eax, dword [ebp - 0x2608]
jb 0x40bec0
mov eax, dword [ebp - 0x2608]
cmp dword [ebp - 0x2600], eax
je 0x40be5a
cmp word [ebp - 0x22c8], 0
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
jne 0x40bfb0
call fcn.00414ce0
mov eax, dword [ebp - 0x2600]
mov ecx, dword [ebp - 0x2604]
imul eax, eax, 0x6c
mov dword [ebp - 0x2608], eax
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
call fcn.00417033
add esp, 0x18
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2758]
jmp 0x40bc54
call fcn.00414ce0
mov edi, dword [ebp - 0x2600]
mov eax, dword [ebp - 0x2604]
imul edi, edi, 0x6c
mov eax, dword [edi + eax + 0x18]
mov ecx, dword [ebp - 0x260c]
lea eax, [eax + ecx + 4]
push eax
lea eax, [ebp - 0x248]
push 0x104
push eax
mov dword [ebp - 0x2608], edi
call fcn.00417033
push 0x431d14
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x24
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call fcn.0040a7bc
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
add esp, 0x10
cmp dword [ebp - 0x2610], 0
jne 0x40c0f3
push str.kernel32.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call dword [sym.imp.SHLWAPI.dll_StrCmpIW]
test eax, eax
je 0x40c0f3
push str.user32.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call dword [sym.imp.SHLWAPI.dll_StrCmpIW]
test eax, eax
je 0x40c0f3
push str.kernelbase.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call dword [sym.imp.SHLWAPI.dll_StrCmpIW]
test eax, eax
je 0x40c0f3
push str.ntdll.dll
lea eax, [ebp - 0x248]
push eax
call ebx
push eax
call dword [sym.imp.SHLWAPI.dll_StrCmpIW]
test eax, eax
je 0x40c0f3
mov edx, dword [ebp - 0x2608]
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x2604]
stosw word es:[edi], ax
mov eax, dword [ebp - 0x2758]
sub eax, dword [edx + ecx + 4]
push eax
push str._0x_08x
lea eax, [ebp - 0x2c]
push 0x14
push eax
call fcn.004183c2
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x22c8]
push esi
push eax
call fcn.00416e7b
mov edi, dword [ebp - 0x2608]
add esp, 0x1c
mov dword [ebp - 0x2610], 1
cmp dword [ebp - 0x2614], 0
je 0x40be5a
mov eax, dword [ebp - 0x2604]
add eax, edi
movzx edx, word [eax + 0x24]
movzx ecx, word [eax + 0x26]
mov dword [ebp - 0x2774], edx
movzx edx, word [eax + 0x2a]
movzx eax, word [eax + 0x28]
push eax
push edx
push dword [ebp - 0x2774]
jmp 0x40be14
lea esi, [eax + eax]
mov eax, esi
call fcn.00417bc0
mov eax, esp
push 3
push esi
lea ecx, [ebp - 0x22c8]
push ecx
push eax
call fcn.004027fe
mov esi, eax
push esi
call fcn.00416df0
inc eax
push eax
push esi
call fcn.0041a02b
xor ebx, ebx
lea eax, [ebp - 0x2330]
push ebx
push eax
call fcn.0040e5ba
push esi
call fcn.00416df0
push eax
lea eax, [ebp - 0x2330]
push esi
push eax
call fcn.0040e602
lea eax, [ebp - 0x2330]
push eax
call fcn.0040e68c
push 0x10
lea eax, [ebp - 0x22d8]
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.00414df0
push 0x3f
lea eax, [ebp - 0x287]
push ebx
push eax
mov byte [ebp - 0x288], bl
call fcn.00414ce0
add esp, 0x40
push 0x3f
lea eax, [ebp - 0x2c7]
push ebx
push eax
mov byte [ebp - 0x2c8], bl
call fcn.00414ce0
add esp, 0xc
xor esi, esi
movzx eax, byte [ebp + esi - 0x40]
push eax
push str._02x
lea eax, [ebp - 0x2c8]
push 0x40
push eax
call fcn.00417508
lea eax, [ebp - 0x2c8]
push eax
lea eax, [ebp - 0x288]
push 0x40
push eax
call fcn.0041a042
add esp, 0x1c
inc esi
cmp esi, 0x10
jl 0x40c1ca
lea eax, [ebp - 0x288]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
cmp esi, edi
jle 0x40c219
xor eax, eax
jmp 0x40c233
lea eax, [esi + esi]
call fcn.00417bc0
mov eax, esp
push 3
push esi
lea ecx, [ebp - 0x288]
push ecx
push eax
call fcn.004031da
push eax
push dword [ebp + 0x10]
push dword [ebp - 0x2660]
call fcn.00417033
mov esi, dword [ebp - 0x260c]
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov ebx, dword [ebp - 0x265c]
push dword [ebp - 0x2650]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea esp, [ebp - 0x2784]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00414cce
leave
ret