Function at 0x402e50
Capabilities:
Get file size
Parse pe header
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40b59c
mov eax, dword fs:[0]
push eax
sub esp, 0x90
mov eax, dword [0x4261d0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 0x2c]
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x78], edx
xor edi, edi
xor ecx, ecx
mov dword [ebp - 4], edi
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], edi
mov word [ebp - 0x2c], cx
push edi
push 0x8000000
push 3
push edi
push 1
push 0x80000000
push eax
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
push edi
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, eax
push ebx
mov dword [ebp - 0x8c], ebx
call fcn.004064a3
add esp, 4
push 0
lea edx, [ebp - 0x9c]
push edx
mov edi, eax
push ebx
push edi
push esi
mov dword [ebp - 0x84], edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 0x5a4d
cmp word [edi], ax
je 0x402f62
mov esi, 8
cmp dword [ebp - 0x18], esi
jb 0x402f1f
mov ecx, dword [ebp - 0x2c]
push ecx
call fcn.00405537
add esp, 4
xor edx, edx
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], 0
mov word [ebp - 0x2c], dx
cmp dword [ebp + 0x20], esi
jb 0x402f44
mov eax, dword [ebp + 0xc]
push eax
call fcn.00405537
add esp, 4
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00406291
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 0x3c]
cmp dword [ecx + edi], 0x4550
lea eax, [ecx + edi]
je 0x402fa6
mov esi, 8
cmp dword [ebp - 0x18], esi
jb 0x402f87
mov edx, dword [ebp - 0x2c]
push edx
call fcn.00405537
add esp, 4
xor eax, eax
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], 0
mov word [ebp - 0x2c], ax
cmp dword [ebp + 0x20], esi
jb 0x402f44
mov ecx, dword [ebp + 0xc]
push ecx
jmp 0x402f3c
add eax, 0xf8
mov cl, 0x61
lea ecx, [ecx]
cmp dword [eax], 0x7461642e
jne 0x402fbd
cmp byte [eax + 4], cl
je 0x402fc2
add eax, 0x28
jmp 0x402fb0
mov edx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
lea ecx, [eax + edi]
lea edi, [ecx + edx]
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x7c], edi
cmp ecx, edi
jae 0x40301d
mov esi, ecx
sub esi, 0x426058
mov dl, byte [ecx]
cmp dl, byte [0x426058]
jne 0x403014
mov edx, 0x20
mov eax, 0x426058
lea ebx, [ebx]
cmp edx, 4
jb 0x403059
mov ebx, dword [eax + esi]
cmp ebx, dword [eax]
jne 0x403014
sub edx, 4
add eax, 4
jmp 0x403000
inc ecx
inc esi
mov dword [ebp - 0x70], ecx
cmp ecx, edi
jb 0x402fe6
mov esi, 8
cmp dword [ebp - 0x18], esi
jb 0x403033
mov eax, dword [ebp - 0x2c]
push eax
call fcn.00405537
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], 0
mov word [ebp - 0x2c], cx
cmp dword [ebp + 0x20], esi
jb 0x402f44
mov edx, dword [ebp + 0xc]
push edx
jmp 0x402f3c
push 0x20
call fcn.004064a3
mov ebx, eax
add esp, 4
mov dword [ebp - 0x88], ebx
xor esi, esi
lea ecx, [ecx]
call fcn.00406448
cdq
mov ecx, 0xff
idiv ecx
inc esi
inc dl
mov byte [esi + ebx - 1], dl
cmp esi, 0x20
jl 0x403070
mov eax, dword [ebp - 0x70]
lea edx, [ebp - 0x90]
push edx
push 4
push 4
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x40301d
mov eax, dword [ebp - 0x70]
mov edi, eax
mov ecx, 8
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebp - 0x90]
lea ecx, [ebp - 0x90]
push ecx
push edx
push 0x20
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov edi, dword [ebp - 0x78]
push edi
call fcn.004064a3
mov esi, eax
mov eax, dword [ebp - 0x4c]
push edi
push eax
push esi
mov dword [ebp - 0x70], esi
call fcn.00405550
push 0x20
push edi
push 0x426058
push esi
call fcn.00401580
push 0x20
push edi
push ebx
push esi
call fcn.00401580
xor edx, edx
add esp, 0x30
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x54], edx
xor ebx, ebx
xor esi, esi
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], edx
mov byte [ebp - 4], 3
mov dword [ebp - 0x80], 0xffffffff
jmp 0x403127
mov edx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x80]
add eax, dword [ebp - 0x70]
mov dword [ebp - 0x4c], 0
mov edi, dword [ebp - 0x80]
mov ecx, ebx
sub ecx, esi
lea edi, [ecx + edi + 0x2800]
mov ecx, dword [ebp - 0x78]
cmp edi, ecx
ja 0x403333
inc dword [ebp - 0x80]
inc eax
mov dword [ebp - 0x74], eax
cmp eax, esi
jae 0x4031b1
cmp ebx, eax
ja 0x4031b1
mov edi, eax
sub edi, ebx
cmp esi, edx
jne 0x4031a8
mov eax, esi
sub eax, ebx
cmp eax, 0xfffffffe
ja 0x40355d
mov ecx, edx
inc eax
sub ecx, ebx
cmp eax, ecx
jbe 0x4031a5
mov edx, ecx
shr edx, 1
or esi, 0xffffffff
sub esi, edx
cmp esi, ecx
jae 0x40318b
xor ecx, ecx
jmp 0x40318d
add ecx, edx
cmp ecx, eax
jae 0x403193
mov ecx, eax
push ecx
lea ecx, [ebp - 0x6c]
call fcn.00401fd0
mov edx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x74]
test esi, esi
je 0x403201
mov cl, byte [edi + ebx]
jmp 0x4031ff
cmp esi, edx
jne 0x4031f9
mov eax, esi
sub eax, ebx
cmp eax, 0xfffffffe
ja 0x40355d
mov ecx, edx
inc eax
sub ecx, ebx
cmp eax, ecx
jbe 0x4031f6
mov edx, ecx
shr edx, 1
or esi, 0xffffffff
sub esi, edx
cmp esi, ecx
jae 0x4031dc
xor ecx, ecx
jmp 0x4031de
add ecx, edx
cmp ecx, eax
jae 0x4031e4
mov ecx, eax
push ecx
lea ecx, [ebp - 0x6c]
call fcn.00401fd0
mov edx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x74]
test esi, esi
je 0x403201
mov cl, byte [eax]
mov byte [esi], cl
mov ecx, dword [ebp - 0x4c]
inc ecx
inc esi
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x4c], ecx
cmp ecx, 0x2800
jl 0x403134
mov eax, dword [ebp - 0x58]
lea edx, [ebp - 0x6c]
cmp edx, eax
jae 0x4032a9
mov ecx, edx
cmp dword [ebp - 0x5c], ecx
ja 0x4032a9
mov ecx, dword [ebp - 0x54]
mov edi, edx
mov edx, dword [ebp - 0x5c]
sub edi, edx
cmp eax, ecx
jne 0x403282
sub eax, edx
sar eax, 4
cmp eax, 0xffffffe
ja 0x40355d
sub ecx, edx
inc eax
sar ecx, 4
cmp eax, ecx
jbe 0x40327f
mov edx, ecx
shr edx, 1
mov ebx, 0xfffffff
sub ebx, edx
cmp ebx, ecx
jae 0x403268
xor ecx, ecx
jmp 0x40326a
add ecx, edx
cmp ecx, eax
jae 0x403270
mov ecx, eax
push ecx
lea ecx, [ebp - 0x5c]
call fcn.00402d70
mov ebx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x58]
and edi, 0xfffffff0
add edi, edx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x74], eax
mov byte [ebp - 4], 6
test eax, eax
je 0x4032a1
mov ecx, dword [ebp - 0x58]
push edi
call fcn.00402760
mov eax, dword [ebp - 0x58]
add eax, 0x10
mov dword [ebp - 0x58], eax
jmp 0x403311
cmp eax, dword [ebp - 0x54]
jne 0x4032f1
sub eax, dword [ebp - 0x5c]
sar eax, 4
cmp eax, 0xffffffe
ja 0x40355d
mov ecx, dword [ebp - 0x54]
sub ecx, dword [ebp - 0x5c]
inc eax
sar ecx, 4
cmp eax, ecx
jbe 0x4032f1
mov edx, ecx
shr edx, 1
mov edi, 0xfffffff
sub edi, edx
cmp edi, ecx
jae 0x4032e0
xor ecx, ecx
jmp 0x4032e2
add ecx, edx
cmp ecx, eax
jae 0x4032e8
mov ecx, eax
push ecx
lea ecx, [ebp - 0x5c]
call fcn.00402d70
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x74], eax
mov byte [ebp - 4], 7
test eax, eax
je 0x40330d
lea edx, [ebp - 0x6c]
push edx
mov ecx, eax
call fcn.00402760
add dword [ebp - 0x58], 0x10
mov byte [ebp - 4], 3
cmp ebx, esi
je 0x403124
push 0
push esi
push ebx
call fcn.00405970
mov esi, ebx
add esp, 0xc
mov dword [ebp - 0x68], esi
jmp 0x403124
mov eax, dword [ebp - 0x80]
dec ecx
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], ecx
cmp eax, ecx
jae 0x403412
mov ecx, dword [ebp - 0x70]
lea edi, [eax + ecx]
jmp 0x403353
mov edi, dword [ebp - 0x4c]
inc edi
mov dword [ebp - 0x4c], edi
cmp edi, esi
jae 0x4033b1
cmp ebx, edi
ja 0x4033b1
sub edi, ebx
cmp esi, edx
jne 0x4033a6
mov eax, esi
sub eax, ebx
cmp eax, 0xfffffffe
ja 0x40355d
mov ecx, edx
inc eax
sub ecx, ebx
cmp eax, ecx
jbe 0x4033a6
mov edx, ecx
shr edx, 1
or esi, 0xffffffff
sub esi, edx
cmp esi, ecx
jae 0x40338c
xor ecx, ecx
jmp 0x40338e
add ecx, edx
cmp ecx, eax
jae 0x403394
mov ecx, eax
push ecx
lea ecx, [ebp - 0x6c]
call fcn.00401fd0
mov edx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x6c]
test esi, esi
je 0x4033fe
mov al, byte [ebx + edi]
mov byte [esi], al
jmp 0x4033fe
cmp esi, edx
jne 0x4033f6
mov eax, esi
sub eax, ebx
cmp eax, 0xfffffffe
ja 0x40355d
mov ecx, edx
inc eax
sub ecx, ebx
cmp eax, ecx
jbe 0x4033f6
mov edx, ecx
shr edx, 1
or esi, 0xffffffff
sub esi, edx
cmp esi, ecx
jae 0x4033dc
xor ecx, ecx
jmp 0x4033de
add ecx, edx
cmp ecx, eax
jae 0x4033e4
mov ecx, eax
push ecx
lea ecx, [ebp - 0x6c]
call fcn.00401fd0
mov edx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x6c]
test esi, esi
je 0x4033fe
mov cl, byte [edi]
mov byte [esi], cl
mov eax, dword [ebp - 0x78]
inc eax
inc esi
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x78], eax
cmp eax, dword [ebp - 0x74]
jb 0x403350
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x5c]
lea edx, [ebp - 0x6c]
cmp edx, eax
jae 0x403488
cmp ecx, edx
ja 0x403488
mov esi, edx
sub esi, ecx
cmp eax, dword [ebp - 0x54]
jne 0x40346e
sub eax, ecx
sar eax, 4
cmp eax, 0xffffffe
ja 0x40355d
mov ecx, dword [ebp - 0x54]
sub ecx, dword [ebp - 0x5c]
inc eax
sar ecx, 4
cmp eax, ecx
jbe 0x40346e
mov edx, ecx
shr edx, 1
mov edi, 0xfffffff
sub edi, edx
cmp edi, ecx
jae 0x40345d
xor ecx, ecx
jmp 0x40345f
add ecx, edx
cmp ecx, eax
jae 0x403465
mov ecx, eax
push ecx
lea ecx, [ebp - 0x5c]
call fcn.00402d70
mov eax, dword [ebp - 0x58]
and esi, 0xfffffff0
add esi, dword [ebp - 0x5c]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x78], eax
mov byte [ebp - 4], 4
test eax, eax
je 0x4034ec
push esi
jmp 0x4034e4
cmp eax, dword [ebp - 0x54]
jne 0x4034cf
sub eax, ecx
sar eax, 4
cmp eax, 0xffffffe
ja 0x40355d
mov ecx, dword [ebp - 0x54]
sub ecx, dword [ebp - 0x5c]
inc eax
sar ecx, 4
cmp eax, ecx
jbe 0x4034cf
mov edx, ecx
shr edx, 1
mov esi, 0xfffffff
sub esi, edx
cmp esi, ecx
jae 0x4034be
xor ecx, ecx
jmp 0x4034c0
add ecx, edx
cmp ecx, eax
jae 0x4034c6
mov ecx, eax
push ecx
lea ecx, [ebp - 0x5c]
call fcn.00402d70
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x78], eax
mov byte [ebp - 4], 5
test eax, eax
je 0x4034ec
lea eax, [ebp - 0x6c]
push eax
mov ecx, dword [ebp - 0x58]
call fcn.00402760
mov ecx, dword [0x4260c0]
add dword [ebp - 0x58], 0x10
push ecx
lea edx, [ebp - 0x48]
push edx
mov byte [ebp - 4], 3
call fcn.00402a60
add esp, 8
mov esi, eax
mov ebx, 0xf
cmp esi, 0x4260cc
je 0x403588
cmp dword [0x4260e0], 0x10
jb 0x40352d
mov eax, dword [0x4260cc]
push eax
call fcn.00405537
add esp, 4
xor edi, edi
mov dword [0x4260e0], ebx
mov dword [0x4260dc], edi
mov byte [0x4260cc], 0
cmp dword [esi + 0x14], 0x10
jae 0x403567
mov eax, dword [esi + 0x10]
inc eax
push eax
push esi
push 0x4260cc
call fcn.00405970
add esp, 0xc
jmp 0x403571
push str.vector_T__too_long
call fcn.004052e5
mov ecx, dword [esi]
mov dword [0x4260cc], ecx
mov dword [esi], edi
mov edx, dword [esi + 0x10]
mov dword [0x4260dc], edx
mov eax, dword [esi + 0x14]
mov dword [0x4260e0], eax
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
xor edi, edi
cmp dword [ebp - 0x34], 0x10
mov byte [ebp - 4], 3
jb 0x4035a0
mov ecx, dword [ebp - 0x48]
push ecx
call fcn.00405537
add esp, 4
mov edx, dword [0x4260f8]
push edx
lea eax, [ebp - 0x48]
push eax
call fcn.00402a60
add esp, 8
mov esi, eax
cmp esi, 0x426104
je 0x403624
cmp dword [0x426118], 0x10
jb 0x4035d5
mov ecx, dword [0x426104]
push ecx
call fcn.00405537
add esp, 4
mov dword [0x426118], ebx
mov dword [0x426114], edi
mov byte [0x426104], 0
cmp dword [esi + 0x14], 0x10
jae 0x403603
mov eax, dword [esi + 0x10]
inc eax
push eax
push esi
push 0x426104
call fcn.00405970
add esp, 0xc
jmp 0x40360d
mov edx, dword [esi]
mov dword [0x426104], edx
mov dword [esi], edi
mov eax, dword [esi + 0x10]
mov dword [0x426114], eax
mov ecx, dword [esi + 0x14]
mov dword [0x426118], ecx
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
cmp dword [ebp - 0x34], 0x10
mov byte [ebp - 4], 3
jb 0x40363a
mov edx, dword [ebp - 0x48]
push edx
call fcn.00405537
add esp, 4
mov eax, dword [0x426130]
push eax
lea ecx, [ebp - 0x48]
push ecx
call fcn.00402a60
add esp, 8
mov esi, eax
cmp esi, 0x42613c
je 0x4036bd
cmp dword [0x426150], 0x10
jb 0x40366e
mov edx, dword [0x42613c]
push edx
call fcn.00405537
add esp, 4
mov dword [0x426150], ebx
mov dword [0x42614c], edi
mov byte [0x42613c], 0
cmp dword [esi + 0x14], 0x10
jae 0x40369c
mov eax, dword [esi + 0x10]
inc eax
push eax
push esi
push 0x42613c
call fcn.00405970
add esp, 0xc
jmp 0x4036a5
mov eax, dword [esi]
mov dword [0x42613c], eax
mov dword [esi], edi
mov ecx, dword [esi + 0x10]
mov dword [0x42614c], ecx
mov edx, dword [esi + 0x14]
mov dword [0x426150], edx
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
cmp dword [ebp - 0x34], 0x10
mov byte [ebp - 4], 3
jb 0x4036d3
mov eax, dword [ebp - 0x48]
push eax
call fcn.00405537
add esp, 4
mov esi, dword [ebp - 0x7c]
mov edi, dword [ebp - 0x84]
mov edx, dword [0x426088]
push esi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x7c], esp
push edx
push ecx
call fcn.00402a60
sub esp, 0x14
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x426078
mov byte [ebp - 4], 0xb
mov byte [ecx], 0
call fcn.004012d0
mov byte [ebp - 4], 3
call fcn.00401e50
add esp, 0x40
test al, al
je 0x403ae9
mov ecx, dword [0x4260a4]
push esi
push edi
sub esp, 0x1c
mov eax, esp
mov dword [ebp - 0x7c], esp
push ecx
push eax
call fcn.00402a60
sub esp, 0x14
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x426094
mov byte [ebp - 4], 0xc
mov byte [ecx], 0
call fcn.004012d0
mov byte [ebp - 4], 3
call fcn.00401e50
add esp, 0x40
test al, al
je 0x403ae9
push esi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x7c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x4260cc
mov byte [ecx], 0
call fcn.004012d0
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x4260b0
mov byte [ebp - 4], 0xd
mov byte [ecx], 0
call fcn.004012d0
mov byte [ebp - 4], 3
call fcn.00401e50
add esp, 0x40
test al, al
je 0x403ae9
push esi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x7c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x426104
mov byte [ecx], 0
call fcn.004012d0
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x4260e8
mov byte [ebp - 4], 0xe
mov byte [ecx], 0
call fcn.004012d0
mov byte [ebp - 4], 3
call fcn.00401e50
add esp, 0x40
test al, al
je 0x403ae9
push esi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x7c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x42613c
mov byte [ecx], 0
call fcn.004012d0
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x4c], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], ebx
mov dword [ecx + 0x10], 0
push 0x426120
mov byte [ebp - 4], bl
mov byte [ecx], 0
call fcn.004012d0
mov byte [ebp - 4], 3
call fcn.00401e50
add esp, 0x40
test al, al
je 0x403ae9
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
mov edi, dword [ebp - 0x94]
mov ecx, dword [ebx]
push esi
push edi
push eax
push ecx
push 0x410058
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x14]
sub eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x10]
push esi
push edi
push eax
push ecx
push 0x412858
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x24]
sub eax, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x20]
push esi
push edi
push eax
push ecx
push 0x415058
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x34]
sub eax, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x30]
push esi
push edi
push eax
push ecx
push str.bmgG
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x44]
sub eax, dword [ebx + 0x40]
mov ecx, dword [ebx + 0x40]
push esi
push edi
push eax
push ecx
push 0x41a058
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x54]
sub eax, dword [ebx + 0x50]
mov ecx, dword [ebx + 0x50]
push esi
push edi
push eax
push ecx
push 0x41c858
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x64]
sub eax, dword [ebx + 0x60]
mov ecx, dword [ebx + 0x60]
push esi
push edi
push eax
push ecx
push 0x41f058
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x74]
sub eax, dword [ebx + 0x70]
mov ecx, dword [ebx + 0x70]
push esi
push edi
push eax
push ecx
push 0x421858
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov eax, dword [ebx + 0x84]
sub eax, dword [ebx + 0x80]
mov ecx, dword [ebx + 0x80]
push esi
push edi
push eax
push ecx
push 0x424058
call fcn.004018d0
add esp, 0x14
test al, al
je 0x403aec
mov edx, dword [ebp - 0x98]
push edx
lea ecx, [ebp - 0x2c]
call fcn.00402640
push 2
push 0xffffffffffffffff
push 0x40c24c
lea ecx, [ebp - 0x2c]
call fcn.004019f0
push eax
push 0
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp - 0x2c]
call fcn.004026a0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0x10
call fcn.004026e0
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 3
call fcn.00401c20
push 0x40c248
lea ecx, [ebp - 0x2c]
call fcn.00402670
push 0xffffffffffffffff
push 0
lea ecx, [ebp + 0xc]
push ecx
lea ecx, [ebp - 0x2c]
call fcn.00402200
cmp dword [ebp - 0x18], 8
mov eax, dword [ebp - 0x2c]
jae 0x403a52
lea eax, [ebp - 0x2c]
push 0
push 0x8000000
push 2
push 0
push 2
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x403aec
mov eax, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x84]
push 0
lea edx, [ebp - 0x8c]
push edx
push eax
push edi
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x403ae0
push edi
call fcn.00406469
mov ecx, dword [ebp - 0x70]
push ecx
call fcn.00406469
mov edx, dword [ebp - 0x88]
push edx
call fcn.00406469
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x6c]
call fcn.00402070
lea ecx, [ebp - 0x5c]
call fcn.00402d30
lea ecx, [ebp - 0x2c]
call fcn.00401c20
lea ecx, [ebp + 0xc]
call fcn.00401c20
mov al, 1
jmp 0x402f46
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x403aec
mov ebx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x84]
push eax
call fcn.00406469
mov ecx, dword [ebp - 0x70]
push ecx
call fcn.00406469
mov edx, dword [ebp - 0x88]
push edx
call fcn.00406469
mov eax, dword [ebp - 0x6c]
add esp, 0xc
test eax, eax
je 0x403b20
push eax
call fcn.00405537
add esp, 4
test ebx, ebx
je 0x40301d
mov edi, dword [ebp - 0x58]
mov esi, ebx
cmp ebx, edi
je 0x403b51
mov eax, dword [esi]
test eax, eax
je 0x403b40
push eax
call fcn.00405537
add esp, 4
xor eax, eax
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
add esi, 0x10
cmp esi, edi
jne 0x403b31
push ebx
call fcn.00405537
add esp, 4
jmp 0x40301d