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

Disassembly:
push 0xffffffffffffffff
push 0x449948
mov eax, dword fs:[0]
push eax
sub esp, 0x50
push ebx
push ebp
push esi
push edi
mov eax, dword [0x464a38]
xor eax, esp
push eax
lea eax, [esp + 0x64]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x18], ebx
mov esi, dword [esp + 0x74]
test esi, esi
je 0x407b08
mov ebp, dword [esp + 0x78]
test ebp, ebp
jbe 0x407b08
mov eax, dword [ebx + 4]
cmp dword [eax - 0xc], 0
lea edi, [ebx + 4]
je 0x407b08
push 0xffffffffffffffff
lea ecx, [ebx + 8]
push 0
mov dword [esp + 0x1c], ecx
call fcn.004072c0
push edi
lea ecx, [esp + 0x60]
push ecx
mov ecx, esi
call fcn.004064b0
mov esi, dword [eax]
cmp esi, ebp
mov edx, dword [eax + 4]
mov dword [esp + 0x3c], edx
jg 0x407ac3
mov eax, dword [edi]
mov ecx, dword [eax - 0xc]
xor esi, esi
cmp dword [eax - 0xc], esi
mov dword [esp + 0x24], ecx
jle 0x407ab7
push 0xa
push eax
call fcn.004362e5
add esp, 8
test eax, eax
je 0x407ab7
sub eax, dword [edi]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x407ab7
push 0x44dd6d
lea ecx, [esp + 0x7c]
call fcn.00401b80
mov dword [esp + 0x6c], esi
mov edx, ebx
sub edx, esi
push edx
push esi
lea eax, [esp + 0x7c]
push eax
mov ecx, edi
call fcn.00407540
push eax
lea ecx, [esp + 0x7c]
mov byte [esp + 0x70], 1
call fcn.004021c0
mov eax, dword [esp + 0x74]
add eax, 0xfffffff0
mov byte [esp + 0x6c], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407a2f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebp, dword [esp + 0x14]
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x78]
push ecx
push eax
mov ecx, ebp
call fcn.004077b0
lea esi, [ebx + 1]
cmp esi, dword [esp + 0x24]
jge 0x407ab1
test esi, esi
mov eax, dword [edi]
mov ecx, dword [eax - 0xc]
jl 0x407a77
cmp esi, ecx
jge 0x407a77
add eax, esi
push 0xa
push eax
call fcn.004362e5
add esp, 8
test eax, eax
je 0x407a77
sub eax, dword [edi]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x4079e9
push esi
lea edx, [esp + 0x78]
push edx
mov ecx, edi
call fcn.00407760
push eax
lea ecx, [esp + 0x7c]
mov byte [esp + 0x70], 2
call fcn.004021c0
lea ecx, [esp + 0x74]
mov byte [esp + 0x6c], 0
call fcn.004018e0
mov ecx, dword [ebp + 8]
lea eax, [esp + 0x78]
push eax
push ecx
mov ecx, ebp
call fcn.004077b0
lea ecx, [esp + 0x78]
jmp 0x407b03
mov ecx, dword [esp + 0x14]
push edi
call fcn.00407890
jmp 0x407b08
mov ecx, ebx
call fcn.00407240
mov edx, dword [edi]
mov edi, dword [edx - 0xc]
mov eax, esi
cdq
idiv edi
xor edx, edx
mov dword [esp + 0x24], edi
mov ecx, eax
mov eax, ebp
div ecx
xor ebp, ebp
lea ecx, [esp + 0x40]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x28], eax
call fcn.00402190
test edi, edi
mov dword [esp + 0x6c], 3
jg 0x407b28
lea ecx, [esp + 0x40]
call fcn.004018e0
mov ecx, dword [esp + 0x64]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 8
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
lea esi, [eax + ebp - 1]
cmp esi, edi
jl 0x407b37
lea esi, [edi - 1]
mov eax, dword [ebx + 0x1c]
cmp byte [eax + esi], 0
jne 0x407b49
sub esi, 1
cmp byte [eax + esi], 0
je 0x407b40
call fcn.0041a00e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x407e6f
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov ecx, esi
sub ecx, ebp
add ecx, 1
push ecx
push ebp
lea edx, [esp + 0x34]
push edx
lea ecx, [ebx + 4]
mov byte [esp + 0x78], 4
call fcn.00407540
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x70], 5
call fcn.004021c0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x6c], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407bbc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x14]
mov eax, dword [edi - 0xc]
mov edx, dword [esp + 0x74]
lea ecx, [esp + 0x44]
push ecx
push eax
mov eax, dword [edx + 4]
push edi
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x3c], ecx
jge 0x407c9d
mov ecx, dword [esp + 0x24]
add ecx, 0xffffffff
cmp esi, ecx
jge 0x407c99
mov eax, dword [ebx + 0x1c]
add esi, 1
cmp byte [eax + esi], 0
jne 0x407c1d
lea esp, [esp]
cmp esi, ecx
jge 0x407c1d
add esi, 1
cmp byte [eax + esi], 0
je 0x407c10
mov edx, esi
sub edx, ebp
add edx, 1
push edx
push ebp
lea eax, [esp + 0x38]
push eax
lea ecx, [ebx + 4]
call fcn.00407540
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x70], 6
call fcn.004021c0
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0x6c], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407c67
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x14]
mov eax, dword [edi - 0xc]
mov edx, dword [esp + 0x74]
lea ecx, [esp + 0x4c]
push ecx
push eax
mov eax, dword [edx + 4]
push edi
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x3c], ecx
jl 0x407bee
cmp eax, dword [esp + 0x78]
jle 0x407d2d
mov eax, dword [ebx + 0x1c]
sub esi, 1
cmp byte [eax + esi], 0
jne 0x407cb9
nop
sub esi, 1
cmp byte [eax + esi], 0
je 0x407cb0
mov edx, esi
sub edx, ebp
add edx, 1
push edx
push ebp
lea eax, [esp + 0x3c]
push eax
lea ecx, [ebx + 4]
call fcn.00407540
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x70], 7
call fcn.004021c0
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov byte [esp + 0x6c], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407d03
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x14]
mov eax, dword [edi - 0xc]
mov edx, dword [esp + 0x74]
lea ecx, [esp + 0x54]
push ecx
push eax
mov eax, dword [edx + 4]
push edi
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov ecx, dword [esp + 0x78]
cmp dword [esp + 0x54], ecx
jg 0x407ca3
mov eax, dword [edi - 0xc]
xor ebp, ebp
test eax, eax
mov dword [esp + 0x38], eax
jle 0x407e5c
push 0xa
push edi
call fcn.004362e5
add esp, 8
test eax, eax
je 0x407e5c
sub eax, edi
mov ebx, eax
cmp ebx, 0xffffffff
je 0x407e58
mov edi, edi
mov edx, ebx
sub edx, ebp
push edx
push ebp
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x20]
call fcn.00407540
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x10]
add ecx, 8
lea edx, [esp + 0x1c]
push edx
push eax
mov byte [esp + 0x74], 8
call fcn.004077b0
mov eax, dword [esp + 0x20]
lea ebp, [ebx + 1]
cmp ebp, dword [esp + 0x38]
lea esi, [ebx + eax]
jge 0x407e31
test ebp, ebp
mov eax, dword [edi - 0xc]
jl 0x407dc5
cmp ebp, eax
jge 0x407dc5
lea ecx, [edi + ebp]
push 0xa
push ecx
call fcn.004362e5
add esp, 8
test eax, eax
je 0x407dc5
sub eax, edi
mov ebx, eax
jmp 0x407dc8
or ebx, 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x6c], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x407ded
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp ebx, 0xffffffff
jne 0x407d60
mov ebx, dword [esp + 0x18]
add esi, 1
add edi, 0xfffffff0
mov dword [esp + 0x20], esi
mov byte [esp + 0x6c], 3
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x407e22
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
cmp esi, dword [esp + 0x24]
jl 0x407b20
jmp 0x407aff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x6c], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407df6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x407df6
mov ebx, dword [esp + 0x18]
mov eax, dword [ebx + 0x10]
lea ecx, [ebx + 8]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.004077b0
jmp 0x407dfa
push 0x80004005
call fcn.00401410
int3