Function at 0x40f640
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x43f191
mov eax, dword fs:[0]
push eax
sub esp, 0x690
mov eax, dword [0x44ef30]
xor eax, esp
mov dword [esp + 0x68c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x44ef30]
xor eax, esp
push eax
lea eax, [esp + 0x6a4]
mov dword fs:[0], eax
mov edi, ecx
mov ecx, dword [esp + 0x6b4]
mov ebx, 0xf
xor ebp, ebp
mov eax, ecx
mov dword [esp + 0x6ac], 2
mov dword [esp + 0x27c], ebx
mov dword [esp + 0x278], ebp
mov byte [esp + 0x268], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f6b1
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x26c]
call fcn.00404c60
mov ecx, dword [esp + 0x6b8]
mov eax, ecx
mov byte [esp + 0x6ac], 3
mov dword [esp + 0x298], ebx
mov dword [esp + 0x294], ebp
mov byte [esp + 0x284], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f6f2
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x288]
call fcn.00404c60
mov ecx, dword [esp + 0x6bc]
mov eax, ecx
mov byte [esp + 0x6ac], 4
mov dword [esp + 0x260], ebx
mov dword [esp + 0x25c], ebp
mov byte [esp + 0x24c], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f733
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x250]
call fcn.00404c60
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x2c]
mov byte [esp + 0x6b4], 5
call fcn.00407d10
mov eax, dword [esp + 0x268]
mov esi, 0x10
mov byte [esp + 0x6ac], 6
cmp dword [esp + 0x27c], esi
jae 0x40f789
lea eax, [esp + 0x268]
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.004087b0
mov ecx, edi
call fcn.004031f0
test al, al
je 0x410081
mov eax, dword [esp + 0x24c]
cmp dword [esp + 0x260], esi
jae 0x40f7bc
lea eax, [esp + 0x24c]
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.004087b0
mov ecx, edi
call fcn.004031f0
test al, al
je 0x410081
push 1
lea ecx, [esp + 0x110]
call fcn.0040e930
mov eax, dword [esp + 0x24c]
mov byte [esp + 0x6ac], 7
cmp dword [esp + 0x260], esi
jae 0x40f805
lea eax, [esp + 0x24c]
push 0x40
push 1
push eax
lea ecx, [esp + 0x124]
call fcn.0040c490
test eax, eax
jne 0x40f844
mov edx, dword [esp + 0x10c]
mov ecx, dword [edx + 4]
mov eax, dword [esp + ecx + 0x114]
lea ecx, [esp + ecx + 0x10c]
or eax, 2
cmp dword [ecx + 0x28], ebp
jne 0x40f83d
or eax, 4
push ebp
push eax
call fcn.00408560
cmp dword [esp + 0x164], ebp
je 0x40fa99
push 0x400
lea eax, [esp + 0x2a1]
push ebp
push eax
mov byte [esp + 0x2a8], 0
call fcn.00425480
mov ecx, dword [esp + 0x118]
mov ecx, dword [ecx + 4]
add esp, 0xc
push 0xa
lea ecx, [esp + ecx + 0x110]
call fcn.00407c50
movzx edx, al
push edx
push 0x400
lea eax, [esp + 0x2a4]
push eax
lea ecx, [esp + 0x118]
call fcn.0040dc90
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov edx, dword [ecx + eax + 8]
add ecx, eax
and dl, 6
movsx eax, dl
neg eax
sbb eax, eax
not eax
test ecx, eax
je 0x40fa88
mov bl, 9
mov byte [esp + 0x18], bl
mov edi, 0x10
mov edi, edi
lea eax, [esp + 0x29c]
mov dword [esp + 0x244], 0xf
mov dword [esp + 0x240], ebp
mov byte [esp + 0x230], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f8f4
sub eax, edx
push eax
lea ecx, [esp + 0x2a0]
push ecx
lea ecx, [esp + 0x234]
call fcn.00404c60
push 1
push ebp
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x238]
mov byte [esp + 0x6b8], 8
call fcn.00401a20
cmp eax, 0xffffffff
je 0x40fa15
push 1
push ebp
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x238]
mov byte [esp + 0x20], bl
call fcn.00401a20
test eax, eax
je 0x40fa15
push 1
push ebp
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x238]
mov byte [esp + 0x20], bl
call fcn.00401a20
push 0xffffffffffffffff
inc eax
push eax
lea edx, [esp + 0xf8]
push edx
lea ecx, [esp + 0x238]
call fcn.00406520
mov esi, eax
push 1
push ebp
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x238]
mov byte [esp + 0x6b8], bl
mov byte [esp + 0x20], bl
call fcn.00401a20
push eax
push ebp
lea ecx, [esp + 0x4c]
push ecx
lea ecx, [esp + 0x238]
call fcn.00406520
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x6b0], 0xa
call fcn.0040e730
push 0xffffffffffffffff
push ebp
push esi
mov ecx, eax
call fcn.00404b40
cmp dword [esp + 0x5c], edi
jb 0x40f9eb
mov edx, dword [esp + 0x48]
push edx
call fcn.00417568
add esp, 4
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], ebp
mov byte [esp + 0x48], 0
cmp dword [esp + 0x108], edi
jb 0x40fa15
mov eax, dword [esp + 0xf4]
push eax
call fcn.00417568
add esp, 4
mov byte [esp + 0x6ac], 7
cmp dword [esp + 0x244], edi
jb 0x40fa36
mov ecx, dword [esp + 0x230]
push ecx
call fcn.00417568
add esp, 4
mov edx, dword [esp + 0x10c]
mov ecx, dword [edx + 4]
push 0xa
lea ecx, [esp + ecx + 0x110]
call fcn.00407c50
movzx eax, al
push eax
push 0x400
lea ecx, [esp + 0x2a4]
push ecx
lea ecx, [esp + 0x118]
call fcn.0040dc90
mov edx, dword [eax]
mov ecx, dword [edx + 4]
add ecx, eax
mov eax, dword [ecx + 8]
and al, 6
movsx edx, al
neg edx
sbb edx, edx
not edx
test ecx, edx
jne 0x40f8d0
lea ecx, [esp + 0x10c]
call fcn.0040c140
mov esi, 0x10
push 1
lea ecx, [esp + 0x64]
call fcn.0040e930
push 1
lea ecx, [esp + 0x1a0]
mov byte [esp + 0x6b0], 0xb
call fcn.0040e930
mov eax, dword [esp + 0x268]
mov byte [esp + 0x6ac], 0xc
cmp dword [esp + 0x27c], esi
jae 0x40fad9
lea eax, [esp + 0x268]
push 0x40
push 1
push eax
lea ecx, [esp + 0x78]
call fcn.0040c490
test eax, eax
jne 0x40fb0c
mov eax, dword [esp + 0x60]
mov ecx, dword [eax + 4]
mov eax, dword [esp + ecx + 0x68]
lea ecx, [esp + ecx + 0x60]
or eax, 2
cmp dword [ecx + 0x28], ebp
jne 0x40fb05
or eax, 4
push ebp
push eax
call fcn.00408560
mov eax, dword [esp + 0x284]
cmp dword [esp + 0x298], esi
jae 0x40fb23
lea eax, [esp + 0x284]
push 0x40
push 2
push eax
lea ecx, [esp + 0x1b4]
call fcn.0040c490
test eax, eax
jne 0x40fb62
mov ecx, dword [esp + 0x19c]
mov ecx, dword [ecx + 4]
mov eax, dword [esp + ecx + 0x1a4]
lea ecx, [esp + ecx + 0x19c]
or eax, 2
cmp dword [ecx + 0x28], ebp
jne 0x40fb5b
or eax, 4
push ebp
push eax
call fcn.00408560
cmp dword [esp + 0xb8], ebp
je 0x40fec6
cmp dword [esp + 0x1f4], 0
je 0x40fec6
push 0x400
lea edx, [esp + 0x2a1]
push 0
push edx
mov byte [esp + 0x2a8], 0
call fcn.00425480
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 4]
add esp, 0xc
push 0xa
lea ecx, [esp + ecx + 0x64]
call fcn.00407c50
movzx ecx, al
push ecx
push 0x400
lea edx, [esp + 0x2a4]
push edx
lea ecx, [esp + 0x6c]
call fcn.0040dc90
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov edx, dword [ecx + eax + 8]
add ecx, eax
and dl, 6
movsx eax, dl
neg eax
sbb eax, eax
not eax
test ecx, eax
je 0x40fe5a
lea eax, [esp + 0x29c]
mov dword [esp + 0x244], 0xf
mov dword [esp + 0x240], 0
mov byte [esp + 0x230], 0
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40fc10
sub eax, edx
push eax
lea ecx, [esp + 0x2a0]
push ecx
lea ecx, [esp + 0x234]
call fcn.00404c60
mov edx, dword [esp + 0x3c]
mov esi, dword [edx]
mov edi, dword [esp + 0x24]
mov byte [esp + 0x6ac], 0xd
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], esi
mov ebx, 0x10
lea ecx, [ecx]
mov ebp, dword [esp + 0x3c]
test edi, edi
je 0x40fc5e
cmp edi, dword [esp + 0x24]
je 0x40fc63
call fcn.004259ab
cmp esi, ebp
je 0x40fd56
test edi, edi
jne 0x40fc8d
call fcn.004259ab
xor eax, eax
cmp esi, dword [eax + 0x18]
jne 0x40fc80
call fcn.004259ab
mov ecx, dword [esi + 0x20]
cmp dword [esi + 0x24], ebx
jb 0x40fc91
mov eax, dword [esi + 0x10]
jmp 0x40fc94
mov eax, dword [edi]
jmp 0x40fc76
lea eax, [esi + 0x10]
push ecx
push 0
push eax
lea ecx, [esp + 0x238]
call fcn.00401a20
cmp eax, 0xffffffff
je 0x40fd40
test edi, edi
jne 0x40fcfa
call fcn.004259ab
xor eax, eax
cmp esi, dword [eax + 0x18]
jne 0x40fcc2
call fcn.004259ab
test edi, edi
jne 0x40fcfe
call fcn.004259ab
xor eax, eax
cmp esi, dword [eax + 0x18]
jne 0x40fcd7
call fcn.004259ab
mov ebp, dword [esi + 0x20]
test edi, edi
jne 0x40fd02
call fcn.004259ab
cmp esi, dword [edi + 0x18]
jne 0x40fced
call fcn.004259ab
mov ecx, dword [esi + 0x20]
cmp dword [esi + 0x24], ebx
jb 0x40fd06
mov eax, dword [esi + 0x10]
jmp 0x40fd09
mov eax, dword [edi]
jmp 0x40fcb8
mov eax, dword [edi]
jmp 0x40fccd
mov edi, dword [edi]
jmp 0x40fce3
lea eax, [esi + 0x10]
push ecx
push 0
push eax
lea ecx, [esp + 0x238]
call fcn.00401a20
push 0xffffffffffffffff
push 0
add esi, 0x28
push esi
push ebp
push eax
lea ecx, [esp + 0x240]
call fcn.00403fb0
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x238]
call fcn.00404b40
lea ecx, [esp + 0x1c]
call fcn.00401ae0
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
jmp 0x40fc50
mov eax, dword [esp + 0x230]
cmp dword [esp + 0x244], ebx
jae 0x40fd6d
lea eax, [esp + 0x230]
push eax
lea eax, [esp + 0x1a8]
push eax
call fcn.0040e2b0
add esp, 8
mov esi, eax
push 0xa
mov ecx, esi
call fcn.0040e500
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
lea eax, [edx + esi]
xor edi, edi
test byte [eax + 8], 6
jne 0x40fdaf
mov eax, dword [eax + 0x28]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x30]
call eax
cmp eax, 0xffffffff
jne 0x40fdaf
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
test edi, edi
je 0x40fdd0
mov eax, dword [ecx + 8]
or eax, edi
cmp dword [ecx + 0x28], 0
jne 0x40fdc8
or eax, 4
push 0
push eax
call fcn.00408560
mov byte [esp + 0x6ac], 0xc
cmp dword [esp + 0x244], ebx
jb 0x40fdf1
mov edx, dword [esp + 0x230]
push edx
call fcn.00417568
add esp, 4
mov eax, dword [esp + 0x60]
mov ecx, dword [eax + 4]
push 0xa
lea ecx, [esp + ecx + 0x64]
mov dword [esp + 0x248], 0xf
mov dword [esp + 0x244], 0
mov byte [esp + 0x234], 0
call fcn.00407c50
movzx ecx, al
push ecx
push 0x400
lea edx, [esp + 0x2a4]
push edx
lea ecx, [esp + 0x6c]
call fcn.0040dc90
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov edx, dword [ecx + eax + 8]
add ecx, eax
and dl, 6
movsx eax, dl
neg eax
sbb eax, eax
not eax
test ecx, eax
jne 0x40fbe7
lea ecx, [esp + 0x6c]
call fcn.00406b90
test eax, eax
jne 0x40fe8a
mov ecx, dword [esp + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [esp + ecx + 0x68]
lea ecx, [esp + ecx + 0x60]
or eax, 2
cmp dword [ecx + 0x28], 0
jne 0x40fe82
or eax, 4
push 0
push eax
call fcn.00408560
lea ecx, [esp + 0x1a8]
call fcn.00406b90
test eax, eax
jne 0x40fec6
mov edx, dword [esp + 0x19c]
mov ecx, dword [edx + 4]
mov eax, dword [esp + ecx + 0x1a4]
lea ecx, [esp + ecx + 0x19c]
or eax, 2
cmp dword [ecx + 0x28], 0
jne 0x40febe
or eax, 4
push 0
push eax
call fcn.00408560
lea ecx, [esp + 0x1f8]
mov byte [esp + 0x6ac], 0xb
call fcn.0040a730
lea eax, [esp + 0x1f8]
mov esi, vtable.std::ios_base.0
push eax
mov dword [esp + 0x1fc], esi
call fcn.0043c229
add esp, 4
lea ecx, [esp + 0xbc]
mov byte [esp + 0x6ac], 7
call fcn.0040a730
lea ecx, [esp + 0xbc]
push ecx
mov dword [esp + 0xc0], esi
call fcn.0043c229
add esp, 4
lea ecx, [esp + 0x168]
mov byte [esp + 0x6ac], 6
call fcn.0040a730
lea edx, [esp + 0x168]
push edx
mov dword [esp + 0x16c], esi
call fcn.0043c229
add esp, 4
lea ecx, [esp + 0x24]
mov byte [esp + 0x6ac], 5
call fcn.0040e8b0
mov ebx, 0x10
cmp dword [esp + 0x260], ebx
jb 0x40ff7b
mov eax, dword [esp + 0x24c]
push eax
call fcn.00417568
add esp, 4
xor edi, edi
mov esi, 0xf
mov dword [esp + 0x260], esi
mov dword [esp + 0x25c], edi
mov byte [esp + 0x24c], 0
cmp dword [esp + 0x298], ebx
jb 0x40ffb1
mov ecx, dword [esp + 0x284]
push ecx
call fcn.00417568
add esp, 4
mov dword [esp + 0x298], esi
mov dword [esp + 0x294], edi
mov byte [esp + 0x284], 0
cmp dword [esp + 0x27c], ebx
jb 0x40ffe0
mov edx, dword [esp + 0x268]
push edx
call fcn.00417568
add esp, 4
mov eax, dword [esp + 0x6b4]
add eax, 0xfffffff0
mov dword [esp + 0x27c], esi
mov dword [esp + 0x278], edi
mov byte [esp + 0x268], 0
mov byte [esp + 0x6ac], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x410021
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x6b8]
add eax, 0xfffffff0
mov byte [esp + 0x6ac], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41004c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x6bc]
add eax, 0xfffffff0
mov dword [esp + 0x6ac], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41007a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov al, 1
jmp 0x4101a5
lea ecx, [esp + 0x24]
mov byte [esp + 0x6ac], 5
call fcn.0040e8b0
cmp dword [esp + 0x260], esi
jb 0x4100ab
mov ecx, dword [esp + 0x24c]
push ecx
call fcn.00417568
add esp, 4
mov dword [esp + 0x260], ebx
mov dword [esp + 0x25c], ebp
mov byte [esp + 0x24c], 0
cmp dword [esp + 0x298], esi
jb 0x4100da
mov edx, dword [esp + 0x284]
push edx
call fcn.00417568
add esp, 4
mov dword [esp + 0x298], ebx
mov dword [esp + 0x294], ebp
mov byte [esp + 0x284], 0
cmp dword [esp + 0x27c], esi
jb 0x410109
mov eax, dword [esp + 0x268]
push eax
call fcn.00417568
add esp, 4
mov eax, dword [esp + 0x6b4]
add eax, 0xfffffff0
mov dword [esp + 0x27c], ebx
mov dword [esp + 0x278], ebp
mov byte [esp + 0x268], 0
mov byte [esp + 0x6ac], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41014a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x6b8]
add eax, 0xfffffff0
mov byte [esp + 0x6ac], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x410175
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x6bc]
add eax, 0xfffffff0
mov dword [esp + 0x6ac], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4101a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
mov ecx, dword [esp + 0x6a4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x68c]
xor ecx, esp
call fcn.00425da1
add esp, 0x69c
ret 0xc