Function at 0x403c38
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
push ebx
push esi
push edi
mov edi, ecx
push 0
mov dword [ebp - 0xc], edi
mov ecx, dword [edi]
mov eax, dword [ecx]
call dword [eax + 0x2c]
mov ebx, eax
mov dword [ebp - 0x5c], ebx
jmp 0x4043da
mov ecx, dword [edi]
push dword [ebx]
mov eax, dword [ecx]
call dword [eax + 0x3c]
mov ecx, dword [edi + 4]
mov esi, eax
cmp dword [ecx + 0x44], 0
je 0x403c7a
push esi
push 0x2f5d
call fcn.0040b51a
pop ecx
pop ecx
cmp dword [ebx + 4], 0
je 0x4043cd
mov ecx, dword [edi]
push ebx
mov eax, dword [ecx]
call dword [eax + 0x64]
mov ecx, dword [edi]
mov edx, dword [ecx]
test eax, eax
je 0x404452
lea eax, [ebp - 0x48]
push eax
push 9
call dword [edx + 0x20]
mov ecx, dword [edi]
mov ebx, eax
mov dword [ebp - 0x28], ebx
mov edx, dword [ecx]
call dword [edx]
cmp eax, 9
je 0x4043f9
test ebx, ebx
je 0x40443d
mov ecx, dword [edi]
lea edx, [ebp - 0x48]
push edx
push 0xa
mov eax, dword [ecx]
call dword [eax + 0x20]
mov ecx, dword [edi]
mov ebx, eax
mov dword [ebp - 8], ebx
mov edx, dword [ecx]
call dword [edx]
cmp eax, 9
je 0x4043f9
test ebx, ebx
je 0x404413
mov ecx, dword [edi]
lea edx, [ebp - 0x38]
push edx
push 0xb
mov eax, dword [ecx]
call dword [eax + 0x20]
mov ecx, dword [edi]
mov ebx, eax
mov dword [ebp - 0x24], ebx
mov edx, dword [ecx]
call dword [edx]
cmp eax, 9
je 0x4043f9
test ebx, ebx
jne 0x403d2f
mov eax, dword [edi + 4]
push dword [eax + 0x38]
mov eax, dword [sym.imp.pgodb140.dll_PogoDbStreamNames]
push esi
push dword [eax + 0x2c]
push 0xa6
push 0x2ee1
call fcn.0040b1de
push eax
call fcn.0040a27c
push dword [ebp - 0x38]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
pop ecx
push dword [ebp - 0x38]
mov ebx, eax
push 0
push ebx
mov dword [ebp - 0x34], ebx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
test ebx, ebx
jne 0x403d61
push 0x8e6
push 0x4013c0
push 2
call fcn.0040a1c6
mov ecx, dword [edi]
lea edx, [ebp - 0x64]
push edx
mov eax, dword [ecx]
call dword [eax + 0xe0]
test eax, eax
je 0x4043ea
mov ecx, dword [edi]
xor edx, edx
and dword [ebp - 0x20], 0
xor ebx, ebx
and dword [ebp - 0x2c], 0
and dword [ebp - 0x14], edx
mov eax, dword [ecx]
push ebx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], ebx
call dword [eax + 0xe4]
mov ebx, eax
mov dword [ebp - 0x30], ebx
test ebx, ebx
je 0x4043a7
cmp dword [ebx + 0x14], 0
je 0x403e56
mov ecx, dword [edi]
lea edx, [ebp - 4]
push edx
push dword [ebx]
mov eax, dword [ecx]
call dword [eax + 0x1bc]
test eax, eax
je 0x403e56
mov eax, dword [ebp - 4]
mov esi, dword [eax + 0x24]
add esi, dword [ebp - 0x28]
movzx eax, word [eax + 8]
inc dword [ebp - 0x2c]
mov dword [ebp - 0x58], eax
test eax, eax
je 0x403e11
mov eax, dword [ebx + 0x14]
mov edi, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x54], eax
mov eax, dword [esi]
mov cl, 0x2a
mov edx, dword [esi + 4]
call fcn.0040c220
cmp eax, dword [ebp - 0x54]
jne 0x403dff
inc dword [ebp - 0x10]
jmp 0x403e00
inc ebx
add esi, 0x10
sub edi, 1
jne 0x403de9
mov edi, dword [ebp - 0xc]
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0xc]
mov dword [ebp - 0x58], eax
test eax, eax
je 0x403e56
mov eax, dword [ebx + 0x14]
mov edi, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x54], eax
mov eax, dword [esi]
mov cl, 0x2a
mov edx, dword [esi + 4]
call fcn.0040c220
cmp eax, dword [ebp - 0x54]
jne 0x403e44
inc dword [ebp - 0x10]
inc dword [ebp - 0x1c]
jmp 0x403e45
inc ebx
add esi, 0x10
sub edi, 1
jne 0x403e2b
mov edi, dword [ebp - 0xc]
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x30]
mov ecx, dword [edi]
push ebx
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov ebx, eax
mov dword [ebp - 0x30], eax
test ebx, ebx
jne 0x403da4
cmp dword [ebp - 0x14], eax
jbe 0x4043a7
imul esi, dword [ebp - 0x2c], 3
mov ecx, 0x42eae0
mov edx, dword [ebp - 0x10]
dec esi
push esi
call fcn.004039cf
mov edx, dword [ebp - 0x1c]
mov ecx, 0x42eac0
push esi
call fcn.004039cf
mov edx, dword [ebp - 0x1c]
mov ecx, 0x42ead0
push esi
call fcn.004039cf
and dword [ebp - 0x14], ebx
push ebx
jmp 0x403fdc
cmp dword [eax + 0x14], 0
je 0x403fd9
mov ecx, dword [edi]
lea edx, [ebp - 4]
push edx
mov edx, dword [ebp - 0x10]
mov eax, dword [ecx]
push dword [edx]
call dword [eax + 0x1bc]
test eax, eax
je 0x403fd9
mov ecx, dword [ebp - 4]
xor eax, eax
mov edx, dword [ebp - 8]
and dword [ebp - 0x30], 0
mov esi, dword [ecx + 0x24]
mov ebx, dword [ecx + 0x28]
add esi, dword [ebp - 0x28]
add ebx, edx
cmp ax, word [ecx + 8]
jae 0x403f3c
mov edi, dword [ecx + 0x28]
mov edx, dword [ebp - 0x10]
mov eax, dword [esi + 4]
shr eax, 0xa
cmp eax, dword [edx + 0x14]
jne 0x403f21
cmp dword [ebp - 0x14], edi
jae 0x403f0a
mov dword [ebp - 0x14], edi
push dword [esi + 4]
mov edx, edi
mov ecx, 0x42eae0
push dword [esi]
call fcn.00403a77
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
inc dword [ebp - 0x30]
add esi, 0x10
movzx eax, word [ecx + 8]
add ebx, 8
add edi, 8
cmp dword [ebp - 0x30], eax
jl 0x403ef7
mov edi, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
and dword [ebp - 0x44], 0
xor eax, eax
cmp ax, word [ecx + 0xc]
jae 0x403fd9
mov edi, dword [ebp - 0x10]
sub ebx, edx
mov ecx, dword [esi + 4]
mov eax, ecx
mov edx, dword [esi]
shr eax, 0xa
cmp eax, dword [edi + 0x14]
jne 0x403f8c
cmp dword [ebp - 0x14], ebx
jae 0x403f68
mov dword [ebp - 0x14], ebx
push ecx
push edx
mov edx, ebx
mov ecx, 0x42eae0
call fcn.00403a77
push dword [esi + 4]
xor edx, edx
mov ecx, 0x42ead0
push dword [esi]
call fcn.00403a77
mov edx, dword [esi]
mov ecx, dword [esi + 4]
push ecx
push edx
mov ecx, 0x42eac0
call fcn.00403a13
mov ecx, dword [ebp - 8]
push dword [esi + 4]
push dword [esi]
mov edx, dword [ebx + ecx]
lea ecx, [eax + 1]
shr edx, 1
neg ecx
sbb ecx, ecx
and ecx, eax
add edx, ecx
mov ecx, 0x42eac0
call fcn.00403a77
mov eax, dword [ebp - 4]
add esi, 0x10
mov ecx, dword [ebp - 0x44]
add ebx, 8
inc ecx
mov dword [ebp - 0x44], ecx
movzx eax, word [eax + 0xc]
cmp ecx, eax
jl 0x403f51
mov edi, dword [ebp - 0xc]
push dword [ebp - 0x10]
mov ecx, dword [edi]
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x403eaf
push 0
jmp 0x404101
cmp dword [eax + 0x14], 0
je 0x4040fe
mov ecx, dword [edi]
lea edx, [ebp - 4]
push edx
mov edx, dword [ebp - 0x10]
mov eax, dword [ecx]
push dword [edx]
call dword [eax + 0x1bc]
test eax, eax
je 0x4040fe
mov ecx, dword [ebp - 4]
xor eax, eax
and dword [ebp - 0x58], 0
mov ebx, dword [ecx + 0x24]
mov esi, dword [ecx + 0x28]
add ebx, dword [ebp - 0x28]
add esi, dword [ebp - 8]
cmp ax, word [ecx + 8]
jae 0x40408b
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x58]
mov eax, dword [ebx + 4]
shr eax, 0xa
cmp eax, dword [edx + 0x14]
je 0x404079
push dword [ebx + 4]
mov ecx, 0x42eae0
push dword [ebx]
call fcn.00403a13
cmp eax, dword [ebp - 0x14]
ja 0x40406c
mov edx, dword [ebp - 8]
mov ecx, dword [esi]
add dword [eax + edx], ecx
mov ecx, dword [esi + 4]
adc dword [eax + edx + 4], ecx
and dword [esi], 0
and dword [esi + 4], 0
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
movzx eax, word [ecx + 8]
inc edi
add ebx, 0x10
add esi, 8
cmp edi, eax
jl 0x40403e
mov edi, dword [ebp - 0xc]
and dword [ebp - 0x44], 0
xor eax, eax
cmp ax, word [ecx + 0xc]
jae 0x4040fe
mov edi, dword [ebp - 0x10]
mov eax, dword [ebx + 4]
shr eax, 0xa
cmp eax, dword [edi + 0x14]
je 0x4040c9
push dword [ebx + 4]
mov ecx, 0x42eae0
push dword [ebx]
call fcn.00403a13
cmp eax, dword [ebp - 0x14]
ja 0x4040c0
mov ecx, dword [ebp - 8]
add ecx, eax
jmp 0x4040cb
and dword [esi], 1
and dword [esi + 4], 0
jmp 0x4040e3
mov ecx, esi
push dword [ebp - 0x20]
mov edx, esi
push dword [ebp - 0x34]
push dword [ebp - 0x24]
push dword [ebx + 4]
push dword [ebx]
call fcn.00403b3b
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 4]
add ebx, 0x10
mov edx, dword [ebp - 0x44]
add esi, 8
inc edx
mov dword [ebp - 0x44], edx
movzx eax, word [eax + 0xc]
cmp edx, eax
jl 0x40409a
mov edi, dword [ebp - 0xc]
push dword [ebp - 0x10]
mov ecx, dword [edi]
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x403ff8
push dword [ebp - 0x38]
push 0
push dword [ebp - 0x24]
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [edi]
add esp, 0xc
xor ebx, ebx
mov dword [ebp - 0x30], ebx
mov eax, dword [ecx]
push ebx
call dword [eax + 0xe4]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x404326
cmp dword [eax + 0x14], 0
je 0x40430b
mov ecx, dword [edi]
lea edx, [ebp - 4]
push edx
mov edx, dword [ebp - 0x20]
mov eax, dword [ecx]
push dword [edx]
call dword [eax + 0x1bc]
test eax, eax
je 0x40430b
mov esi, dword [ebp - 4]
and dword [ebp - 0x54], 0
movzx eax, word [esi + 8]
mov edx, dword [esi + 0x24]
mov ebx, eax
mov ecx, dword [esi + 0x28]
add edx, dword [ebp - 0x28]
add ecx, dword [ebp - 8]
shl ebx, 4
add ebx, edx
mov dword [ebp - 0x44], ebx
lea ebx, [ecx + eax*8]
xor eax, eax
mov dword [ebp - 0x58], ebx
cmp ax, word [esi + 0xc]
jae 0x40430b
mov edi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x44]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov cl, 0x2a
call fcn.0040c220
cmp eax, dword [edi + 0x14]
jne 0x4042e6
cmp dword [ebx], 2
jb 0x4042e6
mov eax, dword [ebp - 0x30]
xor edx, edx
mov edi, dword [ebx + 4]
mov esi, eax
shl edi, 4
add edi, dword [ebp - 0x34]
shl esi, 4
add esi, dword [ebp - 0x24]
mov dword [ebx + 4], eax
xor eax, eax
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x4c], eax
mov ecx, dword [edi + 0xc]
lea edx, [edi + 0x10]
mov eax, dword [edi]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebx]
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x14], ecx
shr dword [ebp - 0x14], 1
sub dword [ebp - 0x14], 1
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x3c], edi
je 0x404299
mov ebx, dword [ebp - 0x18]
mov edi, eax
mov esi, dword [ebp - 0x4c]
test esi, esi
je 0x404235
mov eax, dword [esi]
cmp eax, dword [edx]
jne 0x404235
mov eax, dword [esi + 4]
cmp eax, dword [edx + 4]
jne 0x404235
or dword [edx + 8], 0xffffffff
or dword [edx + 0xc], 0xffffffff
mov ecx, dword [edx + 4]
mov eax, edi
and eax, ebx
cmp eax, 0xffffffff
je 0x40426b
mov eax, dword [ebp - 0x2c]
cmp dword [edx], eax
jne 0x404255
cmp ecx, dword [ebp - 0x1c]
jne 0x404258
add edi, dword [edx + 8]
adc ebx, dword [edx + 0xc]
jmp 0x40427c
cmp ecx, dword [ebp - 0x1c]
ja 0x40427c
jb 0x404260
cmp dword [edx], eax
jae 0x40427c
mov eax, dword [edx + 8]
and eax, dword [edx + 0xc]
cmp eax, 0xffffffff
je 0x40427c
mov eax, dword [edx]
mov ebx, dword [edx + 0xc]
mov edi, dword [edx + 8]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x2c], eax
add edx, 0x10
sub dword [ebp - 0x14], 1
jne 0x40421b
mov esi, dword [ebp - 0x50]
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x58]
mov dword [ebp - 0x10], edi
mov edi, dword [ebp - 0x60]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebx]
mov edx, dword [ebp - 0x18]
and eax, edx
cmp eax, 0xffffffff
je 0x4042d0
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x4c], eax
or dword [eax + 8], 0xffffffff
or dword [eax + 0xc], 0xffffffff
mov eax, dword [ebp - 0x2c]
mov dword [esi], eax
mov eax, dword [ebp - 0x1c]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 8], eax
mov dword [esi + 0xc], edx
add esi, 0x10
inc dword [ebp - 0x40]
jmp 0x4041e1
mov edx, dword [ebp - 0x40]
and ecx, 1
mov edi, dword [ebp - 0x20]
lea eax, [edx + edx]
or ecx, eax
add dword [ebp - 0x30], edx
mov dword [ebx], ecx
mov esi, dword [ebp - 4]
mov edx, dword [ebp - 0x54]
add ebx, 8
mov ecx, dword [ebp - 0x44]
inc edx
movzx eax, word [esi + 0xc]
add ecx, 0x10
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x58], ebx
cmp edx, eax
jl 0x40419f
mov edi, dword [ebp - 0xc]
mov ecx, dword [edi]
push dword [ebp - 0x20]
mov eax, dword [ecx]
call dword [eax + 0xe4]
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x404141
mov ebx, dword [ebp - 0x30]
push dword [ebp - 0x48]
mov ecx, dword [edi]
mov esi, dword [ebp - 8]
push esi
push 0
mov eax, dword [ecx]
push 0xa
call dword [eax + 0xc]
mov ecx, dword [edi]
shl ebx, 4
push ebx
mov ebx, dword [ebp - 0x24]
mov eax, dword [ecx]
push ebx
push 0xb
call dword [eax + 4]
push dword [ebp - 0x34]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
pop ecx
push ebx
call dword [sym.imp.pgodb140.dll_public:_static_void___stdcall_PogoDbUtil::FreeMemory_void__]
push dword [0x42eae0]
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call ebx
and dword [0x42eae0], 0
and dword [0x42eae8], 0
pop ecx
push dword [0x42eac0]
call ebx
and dword [0x42eac0], 0
and dword [0x42eac8], 0
pop ecx
push dword [0x42ead0]
call ebx
and dword [0x42ead0], 0
and dword [0x42ead8], 0
pop ecx
jmp 0x4043aa
mov esi, dword [ebp - 8]
push dword [ebp - 0x48]
mov ecx, dword [edi]
push esi
push 0
push 0xa
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [edi]
mov eax, dword [ecx]
call dword [eax + pe_nt_image_headers32]
mov ecx, dword [edi]
mov eax, dword [ecx]
call dword [eax + 0x70]
mov ebx, dword [ebp - 0x5c]
mov ecx, dword [edi]
push ebx
mov eax, dword [ecx]
call dword [eax + 0x2c]
mov ebx, eax
mov dword [ebp - 0x5c], eax
test ebx, ebx
jne 0x403c59
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
leave
ret
push 0x401480
call fcn.0040b56c
pop ecx
xor eax, eax
jmp 0x4043e5
push 2
push 0x2ee1
call fcn.0040b1de
push eax
call fcn.0040a374
push 1
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_exit]
mov eax, dword [edi + 4]
push dword [eax + 0x38]
mov eax, dword [sym.imp.pgodb140.dll_PogoDbStreamNames]
push 0x40146c
push dword [eax + 0x28]
push 0xa6
push 0x2ee1
call fcn.0040b1de
push eax
call fcn.0040a27c
jmp 0x40440b
mov eax, dword [edi + 4]
push dword [eax + 0x38]
mov eax, dword [sym.imp.pgodb140.dll_PogoDbStreamNames]
push 0x40146c
push dword [eax + 0x24]
jmp 0x404426
call dword [edx]
push eax
call dword [sym.imp.pgodb140.dll_public:_static_unsigned_short_int_const____stdcall_PogoDbUtil::GetErrorText_enum_POGODB_ERROR_]
push eax
mov eax, dword [edi + 4]
push dword [eax + 0x38]
push 0xa5
push 0x2ee1
call fcn.0040b1de
push eax
call fcn.0040a2be
jmp 0x40440b