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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
fldz
push ebx
fst qword [esp + 0x50]
xor ebx, ebx
fldz
mov dword [esp + 0x4c], ebx
fst dword [esp + 0x2c]
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x48], ebx
mov word [esp + 0x18], ax
fst dword [esp + 0x20]
mov dword [esp + 0x14], ebx
mov word [esp + 0x70], cx
xor edx, edx
mov word [esp + 0x80], dx
fst dword [esp + 8]
mov dword [esp + 8], ebx
fxch st(1)
mov eax, dword [esp + 0x48]
imul eax, eax, 0x18f5b3f3
push esi
push edi
mov edi, dword [ebp + 0x14]
mov dword [esp + 0x50], eax
lea edx, [esp + 0xa4]
mov eax, 1
fstp qword [esp + 0x10]
push edx
lea ecx, [esp + 0xa4]
fstp dword [esp + 0x14]
push edi
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], ecx
call fcn.004010c0
add esp, 8
test eax, eax
jne 0x4055af
lea eax, [ebx - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x78]
push edx
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x4c]
push ecx
call fcn.00402240
mov esi, dword [ebp + 0x10]
push edi
push esi
call fcn.00402920
add esp, 0x20
test eax, eax
jge 0x40565a
mov edi, dword [ebp + 8]
cmp edi, ebx
je 0x405636
fldz
xor edx, edx
push 1
mov word [esp + 0x30], dx
fstp qword [esp + 0x5c]
push edi
call fcn.004012e0
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
add eax, eax
add eax, eax
push eax
push ebx
push ecx
call fcn.0040b4b0
mov edx, dword [edi + 8]
add esp, 0xc
mov dword [edx], ebx
mov dword [edi], 1
cmp esi, ebx
jne 0x405fca
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
cmp eax, ebx
je 0x405651
push esi
push eax
call fcn.00402050
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x423964]
add eax, 0x3495ff87
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
lea ecx, [esp + 0x38]
push esi
push ecx
fmul dword [0x425b00]
fstp dword [0x425b00]
call fcn.00402050
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
dec word [0x423890]
mov dx, word [0x423890]
movsx eax, dx
sub eax, 0x338da951
mov dword [esp + 0x30], eax
lea ecx, [esp + 0x60]
push edi
fild dword [esp + 0x34]
push ecx
fmul qword [0x423800]
fstp qword [0x423800]
call fcn.00402050
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 4]
add eax, 2
push eax
lea ecx, [esp + 0x70]
mov edi, 1
push ecx
mov dword [esp + 0x68], edi
mov dword [esp + 0x40], edi
call fcn.004012e0
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
fldz
xor edx, edx
lea eax, [esp + 0x6c]
push edi
mov word [esp + 0x30], dx
fstp qword [esp + 0x14]
push eax
call fcn.004012e0
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
lea edx, [ecx*4]
push edx
push ebx
push eax
call fcn.0040b4b0
mov ecx, dword [esp + 0x80]
add esp, 0xc
mov dword [ecx], ebx
mov dword [esp + 0x6c], edi
cmp esi, ebx
jne 0x405fca
fld dword [0x423940]
lea edx, [esp + 0x44]
fadd qword [0x41f6f0]
push 2
push edx
fstp dword [0x423940]
call fcn.004012e0
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
lea eax, [esp + 0x8c]
push 3
push eax
call fcn.004012e0
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
lea ecx, [esp + 0x60]
push ecx
call fcn.00401c40
add esp, 4
and eax, 0x8000001f
jns 0x4057b4
dec eax
or eax, 0xffffffe0
inc eax
add dword [esp + 0x1c], 0x7bca7ef9
cmp eax, 0x1f
jge 0x4057fe
mov edi, 0x1f
sub edi, eax
lea edx, [esp + 0x38]
push edi
push edx
mov dword [esp + 0x38], edi
call fcn.00401d90
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
lea eax, [esp + 0x60]
push edi
push eax
call fcn.00401d90
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405fca
jmp 0x405802
mov dword [esp + 0x30], ebx
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x64]
dec eax
dec edi
mov ebx, edi
sub ebx, eax
mov dword [esp + 0x80], eax
mov eax, ebx
shl eax, 5
push eax
lea ecx, [esp + 0x64]
push ecx
mov dword [esp + 0x24], eax
call fcn.00401d90
fld dword [0x423a44]
fcomp qword [0x41f6e8]
add esp, 8
fnstsw ax
test ah, 1
jne 0x405870
fld qword [esp + 0x58]
fcomp qword [0x41f6e0]
fnstsw ax
fld qword [esp + 0x58]
fadd qword [0x41f360]
fstp qword [esp + 0x58]
test ah, 5
jp 0x405870
fld dword [0x423a1c]
fmul dword [esp + 0x28]
fstp dword [0x423a1c]
lea edx, [esp + 0x60]
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.004010c0
add esp, 8
test eax, eax
jl 0x405901
mov ecx, dword [0x423964]
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fld dword [esp + 0x28]
fadd qword [0x41f6d8]
fsubr qword [0x41f6d0]
fsubp st(1)
call fcn.0040aee0
mov dword [0x423964], eax
mov eax, dword [esp + 0x74]
inc dword [eax + ebx*4]
dec dword [esp + 0x20]
fld dword [str.eeh]
mov dx, word [esp + 0x20]
movsx eax, dx
mov dword [esp + 0x24], eax
lea ecx, [esp + 0x60]
push ecx
fild dword [esp + 0x28]
lea edx, [esp + 0x3c]
push edx
mov eax, edx
fsubp st(1)
push eax
fstp dword [str.eeh]
call fcn.00405010
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x48]
push edx
call fcn.004010c0
add esp, 0x14
test eax, eax
jge 0x405886
fld qword [0x4238e0]
fadd qword [0x41f360]
fstp qword [0x4238e0]
fld qword [0x4238e0]
mov eax, dword [0x424c64]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
faddp st(1)
call fcn.0040aee0
mov ecx, dword [esp + 0x1c]
push ecx
lea edx, [esp + 0x64]
mov dword [esp + 0x58], eax
inc dword [0x424c64]
push edx
call fcn.00401a70
add esp, 8
cmp edi, dword [esp + 0x80]
mov dword [esp + 0x7c], edi
jle 0x405edd
mov eax, dword [esp + 0x1c]
lea edi, [ebx*4]
add eax, 0xffffffe0
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x68]
lea ebx, [ecx + edx*4]
mov ecx, dword [esp + 0x80]
mov edx, dword [ebx]
lea esi, [eax + ecx*4]
mov dword [esp + 0x84], ebx
cmp edx, dword [esi]
jb 0x4059a9
mov eax, dword [esp + 0x74]
fld1
mov dword [edi + eax - 4], 0xffffffff
jmp 0x405b5e
fld qword [0x425880]
fld1
fadd st(1), st(0)
fxch st(1)
fstp qword [0x425880]
dec dword [esp + 0x20]
fld qword [0x425880]
mov cx, word [esp + 0x20]
movsx edx, cx
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fsubp st(1)
fadd qword [0x41f6c8]
fcomp qword [0x424030]
fnstsw ax
test ah, 0x41
jne 0x4059f6
mov eax, 0xffffc023
mov word [esp + 0x20], ax
jmp 0x405a1f
fld qword [0x424018]
mov ecx, dword [esp + 0x54]
fadd qword [0x41f6c0]
mov dword [esp + 0x1c], ecx
fsub qword [0x41f6b8]
fild dword [esp + 0x1c]
fmulp st(1)
call fcn.0040aee0
mov dword [esp + 0x54], eax
mov esi, dword [esi]
mov eax, dword [ebx]
xor edx, edx
mov edi, esi
shr edi, 0x10
div edi
movzx edx, word [0x423f88]
imul edx, edx, 0x8ddd3c4d
mov word [0x423f88], dx
mov ebx, dword [ebx]
mov edx, 0xb870975a
mov dword [esp + 0x10], eax
imul eax, edi
sub ebx, eax
mov ax, word [esp + 0x88]
movsx ecx, ax
sub edx, ecx
mov dword [esp + 0x1c], edx
fld dword [esp + 0x28]
mov eax, dword [0x4237c8]
fsub qword [0x41f6b0]
mov dword [esp + 0x1c], eax
fsub qword [0x41f6a8]
fild dword [esp + 0x1c]
faddp st(1)
call fcn.0040aee0
mov ecx, dword [esp + 0x84]
mov dword [0x4237c8], eax
fld dword [esp + 0x28]
movzx ecx, word [ecx - 2]
fsub st(1)
shl ebx, 0x10
or ecx, ebx
mov ebx, dword [esp + 0x10]
fstp dword [esp + 0x28]
movzx edx, si
mov eax, ebx
imul eax, edx
cmp ecx, eax
jae 0x405ac6
add ecx, esi
dec ebx
cmp ecx, esi
jb 0x405ac6
cmp ecx, eax
jae 0x405ac6
add ecx, esi
dec ebx
cmp ecx, esi
jae 0x405abb
movzx edx, word [esp + 0x78]
sub ecx, eax
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fadd qword [0x423820]
movzx edx, word [esp + 0x88]
movsx eax, dx
xor edx, edx
mov dword [esp + 0x10], eax
mov eax, ecx
div edi
fild dword [esp + 0x10]
fsubp st(1)
fadd dword [esp + 0x34]
fstp dword [esp + 0x34]
inc dword [esp + 0x88]
fld qword [0x423820]
fsub st(1)
fstp qword [0x423820]
mov edx, eax
imul edx, edi
sub ecx, edx
mov edx, dword [esp + 0x84]
movzx edx, word [edx - 4]
shl ecx, 0x10
or ecx, edx
movzx edi, si
mov edx, eax
imul edx, edi
cmp ecx, edx
jae 0x405b4b
add ecx, esi
dec eax
cmp ecx, esi
jb 0x405b4b
cmp ecx, edx
jae 0x405b4b
add ecx, esi
dec eax
cmp ecx, esi
jae 0x405b40
mov ecx, dword [esp + 0x2c]
shl ebx, 0x10
or ebx, eax
mov eax, dword [esp + 0x74]
mov dword [ecx + eax - 4], ebx
mov edi, ecx
mov eax, dword [esp + 0x74]
mov ebx, 1
add dword [edi + eax - 4], ebx
add dword [esp + 0x78], ebx
fld dword [esp + 0x34]
mov dx, word [esp + 0x78]
mov ecx, dword [esp + 0x54]
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
fsubp st(1)
fild dword [esp + 0x10]
fmulp st(1)
call fcn.0040aee0
mov dword [esp + 0x54], eax
jmp 0x405ba2
fld1
fsubr qword [esp + 0x58]
xor ecx, ecx
push ebx
fstp qword [esp + 0x5c]
add word [0x423104], bx
fld qword [0x423820]
fsub qword [esp + 0x5c]
mov dx, word [0x423104]
movsx eax, dx
mov dword [esp + 0x14], eax
lea edx, [esp + 0x48]
push edx
fild dword [esp + 0x18]
faddp st(1)
fmul dword [esp + 0x30]
mov eax, dword [esp + 0x7c]
dec dword [edi + eax - 4]
fstp dword [esp + 0x30]
mov word [esp + 0x34], cx
fldz
fstp qword [esp + 0x18]
call fcn.004012e0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405fc8
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
lea ecx, [eax*4]
push ecx
push esi
push edx
call fcn.0040b4b0
mov eax, dword [esp + 0x58]
add esp, 0xc
mov dword [eax], esi
mov dword [esp + 0x44], ebx
test esi, esi
jne 0x405fc8
fld dword [0x425e64]
mov ecx, dword [esp + 0x80]
cmp ecx, ebx
fld dword [0x424c74]
fsub qword [0x41f6a0]
fsubp st(1)
fstp dword [0x425e64]
jge 0x405c59
xor eax, eax
jmp 0x405c61
mov edx, dword [esp + 0x68]
mov eax, dword [edx + ecx*4 - 4]
mov edx, dword [esp + 0x4c]
mov dword [edx], eax
mov eax, dword [esp + 0x68]
mov ecx, dword [eax + ecx*4]
mov edx, dword [esp + 0x4c]
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x74]
mov ecx, dword [edi + eax - 4]
push ecx
lea edx, [esp + 0x48]
push edx
mov eax, edx
push eax
call fcn.00405270
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405fc8
fldz
xor ecx, ecx
lea edx, [esp + 0x8c]
push ebx
mov word [esp + 0x30], cx
fstp qword [esp + 0x14]
push edx
call fcn.004012e0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405fc8
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
lea ecx, [eax*4]
push ecx
push esi
push edx
call fcn.0040b4b0
mov eax, dword [esp + 0xa0]
add esp, 0xc
mov dword [eax], esi
mov dword [esp + 0x8c], ebx
test esi, esi
jne 0x405fc8
mov esi, dword [esp + 0x7c]
cmp esi, 2
jge 0x405d05
xor eax, eax
jmp 0x405d0d
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx + esi*4 - 8]
cmp esi, ebx
mov edx, dword [esp + 0x94]
mov dword [edx], eax
jge 0x405d1e
xor eax, eax
jmp 0x405d26
mov eax, dword [esp + 0x40]
mov eax, dword [eax + esi*4 - 4]
mov ecx, dword [esp + 0x94]
mov dword [ecx + 4], eax
fld dword [0x4238f4]
fsub qword [0x41f360]
fstp dword [0x4238f4]
fld dword [0x4238f4]
mov edx, dword [0x425f90]
fstp dword [esp + 0x84]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fadd dword [esp + 0x84]
call fcn.0040aee0
mov edx, dword [esp + 0x94]
mov dword [0x425f90], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + esi*4]
lea eax, [esp + 0x8c]
mov dword [edx + 8], ecx
push eax
lea ecx, [esp + 0x48]
push ecx
call fcn.004010c0
add esp, 8
test eax, eax
jg 0x405ba0
mov edx, dword [esp + 0x74]
mov eax, dword [edi + edx - 4]
push eax
lea ecx, [esp + 0x64]
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.00405270
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405fc8
mov ebx, dword [esp + 0x24]
lea eax, [esp + 0x44]
push ebx
push eax
call fcn.00401d90
mov esi, eax
add esp, 8
test esi, esi
jne 0x405fc8
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x3c]
push edx
mov eax, edx
push eax
call fcn.00405010
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405fc8
fldz
lea edx, [esp + 0xb0]
fstp qword [esp + 0x10]
push edx
fldz
lea ecx, [esp + 0x9c]
fstp dword [esp + 0x9c]
mov dword [esp + 0xbc], ecx
mov dword [esp + 0x9c], eax
mov eax, 1
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], eax
lea eax, [esp + 0x3c]
push eax
call fcn.004010c0
add esp, 8
test eax, eax
jge 0x405eb9
lea ecx, [esp + 0x60]
push ecx
lea edx, [esp + 0x48]
push edx
call fcn.00402050
mov esi, eax
add esp, 8
test esi, esi
jne 0x405fc8
movzx eax, word [0x4238d0]
lea ecx, [esp + 0x44]
sub eax, 0x2b34246a
push ebx
push ecx
mov word [0x4238d0], ax
call fcn.00401d90
mov esi, eax
add esp, 8
test esi, esi
jne 0x405fc8
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x3c]
push eax
mov ecx, eax
push ecx
call fcn.00405170
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405fc8
mov eax, dword [esp + 0x74]
dec dword [edi + eax - 4]
mov eax, dword [esp + 0x7c]
dec eax
sub ebx, 0x20
sub edi, 4
cmp eax, dword [esp + 0x80]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], edi
jg 0x405970
mov edi, dword [ebp + 8]
test edi, edi
je 0x405f09
lea edx, [esp + 0x6c]
push edx
push edi
call fcn.00402050
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
mov edx, dword [ebp + 0x14]
add esp, 8
imul ecx, dword [edx]
mov dword [edi], ecx
mov dword [0x423808], 0xe6dafeed
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x405fc8
mov eax, dword [esp + 0x30]
push eax
lea ecx, [esp + 0x3c]
push ecx
call fcn.00401a70
lea edx, [esp + 0x40]
push edx
push ebx
call fcn.00402050
mov edi, 1
add dword [esp + 0x60], edi
fld qword [esp + 0x68]
fsub qword [0x41f360]
fstp qword [esp + 0x68]
mov eax, dword [esp + 0x60]
add eax, 0x1c0d63cb
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fadd qword [esp + 0x68]
mov ecx, dword [0x425fd8]
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
faddp st(1)
call fcn.0040aee0
fldz
mov edx, dword [ebp + 0x10]
mov dword [0x425fd8], eax
mov eax, dword [edx]
mov dword [ebx], eax
fstp qword [esp + 0x68]
fldz
lea edx, [esp + 0xcc]
push edx
fstp dword [esp + 0xb0]
lea ecx, [esp + 0xb0]
push ebx
mov dword [esp + 0xb4], 0
mov dword [esp + 0xd4], edi
mov dword [esp + 0xd8], edi
mov dword [esp + 0xdc], ecx
call fcn.004010c0
add esp, 0x18
test eax, eax
jne 0x405fc8
mov dword [ebx], edi
xor ebx, ebx
push ebx
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x78]
push edx
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x4c]
push ecx
call fcn.004026c0
fld dword [esp + 0x4c]
fsub qword [0x41f360]
add esp, 0x18
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fadd qword [0x41f698]
fadd qword [0x423a48]
mov dx, word [esp + 0x20]
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmulp st(1)
call fcn.0040aee0
pop edi
mov word [esp + 0x1c], ax
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret