Function at 0x407870
Capabilities:
Access peb ldr_data
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x463b25
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x114
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
test edi, edi
mov esi, ecx
jge 0x4078c4
push 0
push 0
push 0x47fad0
call fcn.00442aa3
xor eax, eax
mov ecx, dword [esp + 0x120]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
lea ecx, [esp + 0xd0]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
call fcn.0040a580
mov eax, dword [esi + 0xec]
mov ecx, dword [esi + 0xe8]
mov edx, dword [esi + 0xfc]
push eax
mov eax, dword [esi + 0xf8]
push ecx
mov ecx, dword [esi + 0xf4]
push edx
mov edx, dword [esi + 0xf0]
push eax
push ecx
push edx
push edi
lea ecx, [esp + 0xec]
mov dword [esp + 0x144], 0
call fcn.0040a5b0
test eax, eax
jne 0x407956
lea ecx, [esp + 0xd0]
mov dword [esp + 0x128], 0xffffffff
call fcn.0040a510
xor eax, eax
mov ecx, dword [esp + 0x120]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esp + 0x118]
mov edi, dword [esi + 0xdc]
mov ecx, dword [esi + 0x140]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
lea eax, [edi + edi*8]
shl eax, 3
mov dword [esp + 0x78], eax
mov dword [eax + ecx + 0x10], edx
mov eax, dword [0x481088]
mov dword [esp + 0x10], eax
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x10]
push ecx
push 0x47facc
push edx
mov byte [esp + 0x134], 1
call fcn.00433596
add esp, 0xc
lea ecx, [esp + 0x10]
call fcn.004335a9
mov eax, dword [0x481088]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0xc]
mov bl, 3
dec eax
mov byte [esp + 0x128], bl
cmp eax, 6
mov dword [esp + 0x28], eax
ja case.default.0x407a01
mov ecx, eax
jmp dword [ecx*4 + 0x40845c]
lea eax, [esi + 0xa0]
push 0x47fac8
lea edx, [esp + 0xbc]
push eax
push edx
call fcn.0043696b
lea ecx, [esp + 0x10]
lea edx, [esp + 0xcc]
push ecx
push eax
push edx
mov byte [esp + 0x134], 4
call fcn.00436905
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x12c], 5
call fcn.0043680f
lea ecx, [esp + 0xcc]
mov byte [esp + 0x128], 4
call fcn.00436722
lea ecx, [esp + 0xb8]
mov byte [esp + 0x128], bl
call fcn.00436722
lea eax, [esi + 0xa0]
push 0x47fab4
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.0043696b
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x12c], 6
call fcn.0043680f
mov byte [esp + 0x128], bl
lea ecx, [esp + 0xc0]
jmp 0x407ead
lea eax, [esi + 0xa0]
push 0x47fab0
lea ecx, [esp + 0x88]
push eax
push ecx
call fcn.0043696b
lea edx, [esp + 0x10]
mov byte [esp + 0x128], 7
push edx
push eax
lea eax, [esp + 0xd0]
push eax
call fcn.00436905
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x12c], 8
call fcn.0043680f
lea ecx, [esp + 0xc8]
mov byte [esp + 0x128], 7
call fcn.00436722
lea ecx, [esp + 0x84]
mov byte [esp + 0x128], bl
call fcn.00436722
lea eax, [esi + 0xa0]
push 0x47fa9c
lea ecx, [esp + 0xb0]
push eax
push ecx
call fcn.0043696b
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x12c], 9
call fcn.0043680f
mov byte [esp + 0x128], bl
lea ecx, [esp + 0xac]
jmp 0x407ead
lea eax, [esi + 0xa0]
push 0x47fa98
lea edx, [esp + 0x80]
push eax
push edx
call fcn.0043696b
lea ecx, [esp + 0x10]
lea edx, [esp + 0x8c]
push ecx
push eax
push edx
mov byte [esp + 0x134], 0xa
call fcn.00436905
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x12c], 0xb
call fcn.0043680f
lea ecx, [esp + 0x8c]
mov byte [esp + 0x128], 0xa
call fcn.00436722
lea ecx, [esp + 0x7c]
mov byte [esp + 0x128], bl
call fcn.00436722
lea eax, [esi + 0xa0]
push 0x47fa84
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.0043696b
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x12c], 0xc
call fcn.0043680f
mov byte [esp + 0x128], bl
lea ecx, [esp + 0x94]
jmp 0x407ead
lea eax, [esi + 0xa0]
push 0x47fa80
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0043696b
lea edx, [esp + 0x10]
mov byte [esp + 0x128], 0xd
push edx
push eax
lea eax, [esp + 0xbc]
push eax
call fcn.00436905
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x12c], 0xe
call fcn.0043680f
lea ecx, [esp + 0xb4]
mov byte [esp + 0x128], 0xd
call fcn.00436722
lea ecx, [esp + 0x9c]
mov byte [esp + 0x128], bl
call fcn.00436722
lea eax, [esi + 0xa0]
push 0x47fa6c
lea ecx, [esp + 0xc8]
push eax
push ecx
call fcn.0043696b
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x12c], 0xf
call fcn.0043680f
mov byte [esp + 0x128], bl
lea ecx, [esp + 0xc4]
jmp 0x407ead
lea eax, [esi + 0xa0]
push 0x47fa68
lea edx, [esp + 0xc0]
push eax
push edx
call fcn.0043696b
lea ecx, [esp + 0x10]
lea edx, [esp + 0xa4]
push ecx
push eax
push edx
mov byte [esp + 0x134], 0x10
call fcn.00436905
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x12c], 0x11
call fcn.0043680f
lea ecx, [esp + 0xa4]
mov byte [esp + 0x128], 0x10
call fcn.00436722
lea ecx, [esp + 0xbc]
mov byte [esp + 0x128], bl
call fcn.00436722
lea eax, [esi + 0xa0]
push 0x47fa54
push eax
lea eax, [esp + 0x88]
push eax
call fcn.0043696b
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x12c], 0x12
call fcn.0043680f
mov byte [esp + 0x128], bl
lea ecx, [esp + 0x80]
jmp 0x407ead
lea eax, [esi + 0xa0]
push 0x47fa50
lea ecx, [esp + 0x94]
push eax
push ecx
call fcn.0043696b
lea edx, [esp + 0x10]
mov byte [esp + 0x128], 0x13
push edx
push eax
lea eax, [esp + 0x90]
push eax
call fcn.00436905
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x12c], 0x14
call fcn.0043680f
lea ecx, [esp + 0x88]
mov byte [esp + 0x128], 0x13
call fcn.00436722
lea ecx, [esp + 0x90]
mov byte [esp + 0x128], bl
call fcn.00436722
lea eax, [esi + 0xa0]
push 0x47fa3c
lea ecx, [esp + 0x9c]
push eax
push ecx
call fcn.0043696b
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x12c], 0x15
call fcn.0043680f
mov byte [esp + 0x128], bl
lea ecx, [esp + 0x98]
jmp 0x407ead
lea eax, [esi + 0xa0]
push 0x47fa38
lea edx, [esp + 0xac]
push eax
push edx
call fcn.0043696b
lea ecx, [esp + 0x10]
lea edx, [esp + 0xa0]
push ecx
push eax
push edx
mov byte [esp + 0x134], 0x16
call fcn.00436905
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x12c], 0x17
call fcn.0043680f
lea ecx, [esp + 0xa0]
mov byte [esp + 0x128], 0x16
call fcn.00436722
lea ecx, [esp + 0xa8]
mov byte [esp + 0x128], bl
call fcn.00436722
lea eax, [esi + 0xa0]
push 0x47fa20
push eax
lea eax, [esp + 0xb8]
push eax
call fcn.0043696b
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x12c], 0x18
call fcn.0043680f
mov byte [esp + 0x128], bl
lea ecx, [esp + 0xb0]
call fcn.00436722
mov eax, dword [ebp + 8]
cmp eax, 0xa
ja case.default.0x407ebc
mov ecx, eax
jmp dword [ecx*4 + 0x408478]
push 0x47fa14
jmp 0x407f0e
push 0x47fa08
jmp 0x407f0e
push 0x47f9fc
jmp 0x407f0e
push 0x47f9f0
jmp 0x407f0e
push 0x47f9e4
jmp 0x407f0e
push 0x47f9dc
jmp 0x407f0e
push 0x47f9d4
jmp 0x407f0e
push 0x47f9cc
jmp 0x407f0e
push 0x47f9c4
jmp 0x407f0e
push 0x47f9b8
jmp 0x407f0e
push 0x47f9ac
lea ecx, [esp + 0x10]
call fcn.00436ab2
push 0x47f0f4
lea ecx, [esp + 0x10]
call fcn.00436ab2
mov edx, dword [esp + 0x14]
push 0x47f9a8
push edx
call fcn.0042061f
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
push 0x47f0f0
push eax
call fcn.0042061f
mov ebx, eax
mov eax, dword [esp + 0x38]
add esp, 0x10
cmp eax, 6
mov dword [esp + 0x40], ebx
ja case.default.0x407f59
jmp dword [eax*4 + 0x4084a4]
push 0x47f994
jmp 0x407f8f
push 0x47f980
jmp 0x407f8f
push 0x47f96c
jmp 0x407f8f
push 0x47f958
jmp 0x407f8f
push 0x47f944
jmp 0x407f8f
push 0x47f930
jmp 0x407f8f
push 0x47f918
push ebx
call fcn.00420ad3
add esp, 8
mov eax, dword [ebp + 8]
cmp eax, 0xa
ja case.default.0x407fa0
jmp dword [eax*4 + 0x4084c0]
push 0x47f908
jmp 0x407ff2
push 0x47f8fc
jmp 0x407ff2
push 0x47f8f0
jmp 0x407ff2
push 0x47f8e4
jmp 0x407ff2
push 0x47f8d4
jmp 0x407ff2
push 0x47f8c8
jmp 0x407ff2
push 0x47f8bc
jmp 0x407ff2
push 0x47f8b0
jmp 0x407ff2
push 0x47f8a4
jmp 0x407ff2
push 0x47f9b8
jmp 0x407ff2
push 0x47f9ac
push ebx
call fcn.00420ad3
add esp, 8
push 0x47f864
push ebx
call fcn.00420ad3
mov eax, dword [esi + 0xd4]
add esp, 8
test eax, eax
mov dword [esp + 0x2c], 0
jle 0x40839e
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + 1]
push eax
push str._n_n_5d
push ebx
call fcn.00420ad3
mov edx, dword [esi + 0x140]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov dword [eax + edx], ecx
mov edx, dword [esi + 0x140]
xor ecx, ecx
mov dword [eax + edx + 8], ecx
mov dword [esp + 0x28], ecx
mov dword [eax + edx + 0xc], ecx
mov eax, dword [esi + 0xdc]
mov ecx, esi
push eax
call fcn.00406880
mov ecx, esi
call fcn.00409660
mov eax, dword [esp + 0xdc]
test eax, eax
jle 0x408091
push edi
push 1
lea ecx, [esp + 0xd8]
push 1
push ecx
mov ecx, esi
call fcn.004050e0
mov eax, dword [esp + 0xd0]
test eax, eax
jle 0x4080f4
lea edx, [esp + 0xd0]
push edi
push edx
push 1
push 1
push 0
mov ecx, esi
call fcn.004084f0
mov eax, dword [esp + 0x18]
mov ebx, 1
fstp qword [esp + 0x1c]
cmp eax, ebx
jl 0x4080f4
lea eax, [esp + 0xd0]
push edi
push eax
push 1
push 1
push ebx
mov ecx, esi
call fcn.004084f0
fcom qword [esp + 0x1c]
fnstsw ax
test ah, 0x41
jne 0x4080e9
fstp qword [esp + 0x1c]
jmp 0x4080eb
fstp st(0)
mov eax, dword [esp + 0x18]
inc ebx
cmp ebx, eax
jle 0x4080c3
mov eax, dword [esp + 0xdc]
test eax, eax
jle 0x408113
push edi
push 0
lea ecx, [esp + 0xd8]
push 1
push ecx
mov ecx, esi
call fcn.004050e0
mov eax, dword [esp + 0xd0]
test eax, eax
jle 0x408159
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
jl 0x408159
lea edx, [esp + 0xd0]
push edi
push edx
push 0
push 1
push ebx
mov ecx, esi
call fcn.004084f0
fcom qword [esp + 0x1c]
fnstsw ax
test ah, 0x41
jne 0x40814e
fstp qword [esp + 0x1c]
jmp 0x408150
fstp st(0)
mov eax, dword [esp + 0x18]
inc ebx
cmp ebx, eax
jle 0x408128
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xdc]
test eax, eax
mov dword [esp + 0x34], ecx
jle 0x408188
push edi
push 1
lea edx, [esp + 0xd8]
push 0
push edx
mov ecx, esi
call fcn.004050e0
mov eax, dword [esp + 0xd0]
test eax, eax
jle 0x4081eb
lea eax, [esp + 0xd0]
push edi
push eax
push 1
push 0
push 0
mov ecx, esi
call fcn.004084f0
mov eax, dword [esp + 0x18]
mov ebx, 1
fstp qword [esp + 0x1c]
cmp eax, ebx
jl 0x4081eb
lea ecx, [esp + 0xd0]
push edi
push ecx
push 1
push 0
push ebx
mov ecx, esi
call fcn.004084f0
fcom qword [esp + 0x1c]
fnstsw ax
test ah, 0x41
jne 0x4081e0
fstp qword [esp + 0x1c]
jmp 0x4081e2
fstp st(0)
mov eax, dword [esp + 0x18]
inc ebx
cmp ebx, eax
jle 0x4081ba
mov eax, dword [esp + 0xdc]
test eax, eax
jle 0x40820a
push edi
push 0
lea edx, [esp + 0xd8]
push 0
push edx
mov ecx, esi
call fcn.004050e0
mov eax, dword [esp + 0xd0]
test eax, eax
jle 0x408250
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
jl 0x408250
lea eax, [esp + 0xd0]
push edi
push eax
push 0
push 0
push ebx
mov ecx, esi
call fcn.004084f0
fcom qword [esp + 0x1c]
fnstsw ax
test ah, 0x41
jne 0x408245
fstp qword [esp + 0x1c]
jmp 0x408247
fstp st(0)
mov eax, dword [esp + 0x18]
inc ebx
cmp ebx, eax
jle 0x40821f
mov ecx, dword [esp + 0x44]
lea edx, [esp + 0x30]
fld qword [esp + 0x1c]
push ecx
push 1
fchs
fstp qword [esp + 0x40]
push 0x10
push edx
call fcn.00420ce3
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x88]
add esp, 0x10
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esi + 0x140]
push edx
push eax
mov edx, dword [ebx + ecx + 0xc]
push edx
mov eax, dword [ebx + ecx + 8]
mov ecx, dword [esp + 0x54]
push eax
push str._n_19.6lf__21.6e__21.6e
push ecx
call fcn.00420ad3
mov ecx, dword [esp + 0x4c]
xor eax, eax
add esp, 0x20
cmp ecx, eax
jne 0x4082f7
cmp dword [esp + 0x28], eax
jne 0x4082f7
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x48], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], eax
jmp 0x408359
fld qword [esp + 0x30]
fcomp qword [esp + 0x58]
fnstsw ax
test ah, 0x41
jne 0x408328
mov edx, dword [esi + 0x140]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x48], ecx
fld qword [ebx + edx + 8]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x58], eax
fstp qword [esp + 0x50]
mov dword [esp + 0x5c], edx
fld qword [esp + 0x38]
fcomp qword [esp + 0x70]
fnstsw ax
test ah, 1
je 0x408359
mov eax, dword [esi + 0x140]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x38]
fld qword [ebx + eax + 8]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], edx
fstp qword [esp + 0x68]
mov eax, dword [esi + 0x140]
fld qword [ebx + eax + 8]
fadd qword [0x4689d0]
lea eax, [ebx + eax + 8]
fstp qword [eax]
mov eax, dword [esp + 0x28]
inc eax
cmp eax, 0xa
mov dword [esp + 0x28], eax
jle 0x40805d
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x40]
lea eax, [ecx + 1]
mov ecx, dword [esi + 0xd4]
cmp eax, ecx
mov dword [esp + 0x2c], eax
jl 0x40801f
mov eax, dword [esp + 0x48]
mov dword [esi + 0x6c], 0
lea ecx, [esp + 0x48]
lea edx, [eax*8]
sub edx, eax
mov eax, dword [esi + 0x13c]
mov esi, dword [esp + 0x44]
fld qword [eax + edx*8 + 0x30]
fmul qword [esp + 0x50]
lea eax, [eax + edx*8 + 0x30]
push esi
push 1
push 0x30
push ecx
fstp qword [esp + 0x60]
fld qword [eax]
fmul qword [esp + 0x78]
fstp qword [esp + 0x78]
call fcn.00420ce3
push esi
call fcn.00420a56
push ebx
call fcn.00420a56
add esp, 0x18
lea ecx, [esp + 0xc]
mov byte [esp + 0x128], 2
call fcn.00436722
lea ecx, [esp + 0x14]
mov byte [esp + 0x128], 1
call fcn.00436722
lea ecx, [esp + 0x10]
mov byte [esp + 0x128], 0
call fcn.00436722
lea ecx, [esp + 0xd0]
mov dword [esp + 0x128], 0xffffffff
call fcn.0040a510
mov ecx, dword [esp + 0x120]
pop edi
pop esi
mov eax, 1
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8