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

Disassembly:
sub esp, 0x9c
push ebp
push esi
push edi
fldz
xor eax, eax
mov word [esp + 0x5c], ax
fst dword [esp + 0x80]
fst dword [esp + 0xc]
xor ecx, ecx
mov word [esp + 0x14], cx
xor ebp, ebp
mov dword [esp + 0x38], ebp
fst dword [esp + 0x2c]
xor edx, edx
mov word [esp + 0x24], dx
mov word [esp + 0x18], ax
fstp dword [esp + 0x20]
mov dword [esp + 0x60], ebp
mov dword [esp + 0x3c], ebp
mov cx, word [0x425cec]
mov edx, dword [esp + 0x38]
movsx eax, cx
sub eax, edx
sub eax, 0x2408db3a
mov word [0x425cec], ax
mov eax, dword [esp + 0x3c]
mov esi, 1
add dword [esp + 0x3c], esi
add eax, 0x61952460
cmp eax, 0xd7573695
jne 0x404d5e
movzx ecx, word [0x425d14]
add ecx, 0x7daa59f0
mov word [0x425d14], cx
xor edx, edx
mov word [esp + 0x40], dx
mov dword [esp + 0x30], ebp
mov ax, word [0x4230f8]
movzx ecx, word [0x424b5c]
cwde
lea edx, [ecx + eax + 0x76ad826f]
mov word [0x424b5c], dx
fld dword [0x425af0]
mov eax, dword [esp + 0x30]
fsubr qword [0x41f570]
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fmulp st(1)
call fcn.0040b1f0
mov edi, dword [esp + 0xb8]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x30]
lea eax, [esp + 0x9c]
push eax
sub ecx, 0x5db1ce3f
lea edx, [esp + 0x9c]
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], esi
push edi
mov word [esp + 0x48], cx
mov dword [esp + 0xa8], esi
mov dword [esp + 0xac], edx
call fcn.00402e20
add esp, 8
test eax, eax
jne 0x404e05
pop edi
pop esi
mov eax, 0xfffffff4
pop ebp
add esp, 0x9c
ret
push ebx
push ebp
lea ecx, [esp + 0x90]
push ecx
lea edx, [esp + 0x5c]
push edx
lea eax, [esp + 0x80]
push eax
lea ecx, [esp + 0x78]
push ecx
lea edx, [esp + 0x5c]
push edx
call fcn.004010c0
mov ebx, dword [esp + 0xd0]
push edi
push ebx
call fcn.00402600
add esp, 0x20
test eax, eax
jge 0x404efe
dec word [0x423060]
mov ax, word [0x423060]
movsx ecx, ax
cmp ecx, 0x241b78bb
je 0x404e70
movzx edx, word [0x424f24]
sub edx, 0x44195170
mov word [0x424f24], dx
mov edi, dword [esp + 0xb0]
cmp edi, ebp
je 0x404ec3
fldz
push esi
fstp dword [esp + 0x14]
push edi
fldz
fstp qword [esp + 0x18]
call fcn.00401a40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
add eax, eax
add eax, eax
push eax
push ebp
push ecx
call fcn.0040b330
mov edx, dword [edi + 8]
add esp, 0xc
mov dword [edx], ebp
mov dword [edi], 1
cmp esi, ebp
jne 0x405930
movzx eax, word [esp + 0x18]
sub eax, 0x32bbfdbf
mov word [esp + 0x18], ax
mov eax, dword [esp + 0xb4]
cmp eax, ebp
je 0x404ef1
push ebx
push eax
call fcn.00401be0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
pop ebx
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0x9c
ret
lea ecx, [esp + 0x48]
push ebx
push ecx
call fcn.00401be0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
fld dword [0x4236dc]
fsub qword [0x41f340]
fstp dword [0x4236dc]
mov dx, word [0x424008]
movsx eax, dx
mov dword [esp + 0x2c], eax
fild dword [esp + 0x2c]
fstp dword [esp + 0x2c]
fld dword [0x4236dc]
fsubr dword [esp + 0x2c]
call fcn.0040b1f0
lea ecx, [esp + 0x68]
push edi
push ecx
mov word [0x424008], ax
call fcn.00401be0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
mov dx, word [esp + 0x1c]
movsx eax, dx
add eax, dword [0x425bb4]
lea edx, [esp + 0x74]
mov dword [0x425bb4], eax
dec dword [esp + 0x1c]
mov ecx, dword [ebx + 4]
add ecx, 2
push ecx
mov edi, 1
push edx
mov dword [esp + 0x70], edi
mov dword [esp + 0x50], edi
call fcn.00401a40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
fldz
lea eax, [esp + 0x74]
fstp dword [esp + 0x10]
push edi
fldz
push eax
fstp qword [esp + 0x18]
call fcn.00401a40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x7c]
lea edx, [ecx*4]
push edx
push ebp
push eax
call fcn.0040b330
mov ecx, dword [esp + 0x88]
add esp, 0xc
mov dword [ecx], ebp
mov dword [esp + 0x74], edi
cmp esi, ebp
jne 0x405930
lea edx, [esp + 0x54]
push 2
push edx
call fcn.00401a40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
fld dword [esp + 0x24]
fadd qword [0x41f340]
fstp dword [esp + 0x24]
fld dword [esp + 0x30]
fsub qword [0x41f690]
fadd dword [esp + 0x24]
mov eax, dword [0x4236e0]
mov dword [esp + 0x2c], eax
fild dword [esp + 0x2c]
faddp st(1)
call fcn.0040b1f0
lea ecx, [esp + 0x8c]
push 3
push ecx
mov dword [0x4236e0], eax
call fcn.00401a40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
lea edx, [esp + 0x68]
push edx
call fcn.00401f00
add esp, 4
and eax, 0x8000001f
jns 0x405083
dec eax
or eax, 0xffffffe0
inc eax
cmp eax, 0x1f
jge 0x405145
mov edi, 0x1f
sub edi, eax
lea eax, [esp + 0x48]
push edi
push eax
mov dword [esp + 0x34], edi
call fcn.00403b00
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
mov cx, word [esp + 0x1c]
mov ax, word [esp + 0x28]
movsx edx, cx
movsx ecx, ax
mov eax, 1
add dword [esp + 0x1c], eax
add dword [esp + 0x28], eax
sub edx, 0x1abfeea6
add ecx, 0x605d7883
cmp ecx, edx
jg 0x4050ff
fld dword [esp + 0x24]
mov dx, word [0x425d38]
movsx eax, dx
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fsubp st(1)
fstp dword [esp + 0x24]
dec word [0x425d38]
lea ecx, [esp + 0x68]
push edi
push ecx
call fcn.00403b00
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405930
mov edx, dword [0x424044]
mov dword [esp + 0x38], edx
fild dword [esp + 0x38]
fld qword [0x4236b8]
fsub qword [0x41f688]
fsub qword [0x41f680]
fsubp st(1)
call fcn.0040b1f0
mov dword [0x424044], eax
jmp 0x405149
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x6c]
dec eax
dec ebp
mov edi, ebp
sub edi, eax
mov ebx, edi
mov dword [esp + 0x88], eax
shl ebx, 5
lea eax, [esp + 0x68]
push ebx
push eax
call fcn.00403b00
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x54]
push edx
call fcn.00402e20
add esp, 0x10
test eax, eax
jl 0x405249
jmp 0x405190
dec dword [esp + 0x64]
mov eax, dword [esp + 0x64]
mov ecx, 0x17f5140f
sub ecx, eax
mov eax, dword [esp + 0x7c]
inc dword [eax + edi*4]
mov word [esp + 0x1c], cx
inc word [0x4235c0]
mov dx, word [0x4235c0]
mov ecx, dword [0x4236c4]
movsx eax, dx
lea edx, [ecx + eax + 0x473f56f0]
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x4c]
mov dword [0x4236c4], edx
push ecx
mov edx, ecx
push edx
call fcn.00404a70
lea edx, [esp + 0x74]
fld dword [esp + 0x3c]
push edx
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [esp + 0x40]
dec word [0x423628]
fld dword [esp + 0x40]
mov ax, word [0x423628]
movsx ecx, ax
mov dword [esp + 0x48], ecx
lea eax, [esp + 0x58]
push eax
fild dword [esp + 0x4c]
faddp st(1)
fld qword [0x424e70]
fld dword [0x42368c]
faddp st(2)
fsubrp st(1)
fstp qword [0x424e70]
fsubr dword [0x42368c]
fstp dword [0x42368c]
call fcn.00402e20
add esp, 0x14
test eax, eax
jge 0x405190
lea ecx, [esp + 0x68]
push ebx
push ecx
call fcn.00401530
add esp, 8
cmp ebp, dword [esp + 0x88]
mov dword [esp + 0x34], ebp
jle 0x4058b3
lea ebp, [edi*4]
add ebx, 0xffffffe0
mov dword [esp + 0x80], ebp
mov dword [esp + 0x38], ebx
lea ecx, [ecx]
mov dx, word [esp + 0x28]
mov ecx, dword [esp + 0x3c]
movsx eax, dx
sub eax, 0x79c9f7cf
add ecx, 0x116f17a9
cmp ecx, eax
jle 0x4052ad
mov edx, dword [0x4230f0]
imul edx, edx, 0xbe388329
mov dword [0x4230f0], edx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x70]
mov ebx, dword [esp + 0x88]
mov edi, dword [edx + ebx*4]
lea esi, [eax + ecx*4]
mov dword [esp + 0x98], esi
cmp dword [esi], edi
jb 0x4052e2
mov eax, dword [esp + 0x7c]
mov dword [eax + ebp - 4], 0xffffffff
jmp 0x405563
mov ecx, dword [0x423fc0]
mov dx, word [esp + 0x18]
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
movsx eax, dx
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fld qword [0x423050]
fsubp st(2)
fxch st(1)
fadd qword [0x41f678]
fsubp st(1)
call fcn.0040b1f0
mov word [esp + 0x18], ax
fld qword [0x423050]
fld1
mov ebp, edi
fsub st(1), st(0)
shr ebp, 0x10
fxch st(1)
xor edx, edx
fstp qword [0x423050]
mov esi, dword [esi]
mov eax, esi
fld dword [0x425af0]
div ebp
fsub qword [0x41f670]
fcomp qword [0x41f668]
mov edx, dword [esp + 0x98]
mov ebx, eax
movzx eax, word [edx - 2]
mov ecx, ebx
imul ecx, ebp
sub esi, ecx
shl esi, 0x10
or esi, eax
mov dword [esp + 0x44], ebx
fnstsw ax
fld dword [0x425af0]
fadd st(1)
fstp dword [0x425af0]
test ah, 0x44
jnp 0x4053ad
mov ecx, dword [0x423fe4]
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
fstp dword [esp + 0x20]
fld dword [esp + 0x30]
fmul dword [esp + 0x20]
call fcn.0040b1f0
mov dword [0x423fe4], eax
fld dword [esp + 0x30]
fsub st(1)
fstp dword [esp + 0x30]
fld dword [esp + 0x84]
movzx ecx, di
mov eax, ebx
fsub st(1)
imul eax, ecx
fstp dword [esp + 0x84]
dec dword [0x4236e0]
mov dword [esp + 0x20], eax
fld dword [esp + 0x84]
mov edx, dword [0x4236e0]
fsub qword [0x41f660]
mov ax, word [0x424b58]
mov dword [esp + 0x10], edx
movsx ecx, ax
fiadd dword [esp + 0x10]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
faddp st(1)
call fcn.0040b1f0
mov word [0x424b58], ax
cmp esi, dword [esp + 0x20]
jae 0x405462
mov dx, word [esp + 0x60]
movsx eax, dx
mov dword [esp + 0x10], eax
dec ebx
mov dword [esp + 0x44], ebx
fild dword [esp + 0x10]
add esi, edi
fsub dword [esp + 0x24]
mov cx, word [esp + 0x1c]
movsx edx, cx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
faddp st(1)
call fcn.0040b1f0
mov word [esp + 0x1c], ax
cmp esi, edi
jb 0x40545a
cmp esi, dword [esp + 0x20]
jae 0x405456
add esi, edi
dec ebx
cmp esi, edi
jae 0x405449
mov dword [esp + 0x44], ebx
add dword [esp + 0x64], 0x867f9896
mov ax, word [esp + 0x60]
sub esi, dword [esp + 0x20]
movsx ecx, ax
mov eax, esi
xor edx, edx
div ebp
add ecx, 0x5141f4be
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x98]
fild dword [esp + 0x10]
fadd dword [esp + 0x30]
fstp dword [esp + 0x30]
dec dword [esp + 0x40]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fadd qword [0x425b90]
fstp qword [0x423100]
fld qword [0x425b90]
fadd st(1)
fstp qword [0x425b90]
movzx edx, word [ecx - 4]
mov ebx, eax
imul eax, ebp
sub esi, eax
movzx eax, di
mov ebp, ebx
imul ebp, eax
shl esi, 0x10
or esi, edx
cmp esi, ebp
jae 0x405540
mov ax, word [esp + 0x18]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fadd qword [0x4234d8]
mov dx, word [0x42356c]
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmulp st(1)
call fcn.0040b1f0
mov word [0x42356c], ax
fsubr qword [0x4234d8]
add esi, edi
dec ebx
fstp qword [0x4234d8]
dec dword [esp + 0x18]
movzx ecx, word [esp + 0x1c]
add ecx, 0x640822fa
mov word [esp + 0x1c], cx
cmp esi, edi
jb 0x405542
cmp esi, ebp
jae 0x405542
add esi, edi
dec ebx
cmp esi, edi
jae 0x405533
jmp 0x405542
fstp st(0)
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x7c]
shl eax, 0x10
or eax, ebx
mov ebx, dword [esp + 0x88]
mov dword [ecx + edx - 4], eax
mov ebp, ecx
movzx edx, word [esp + 0x18]
mov eax, dword [esp + 0x7c]
mov edi, 1
add dword [eax + ebp - 4], edi
imul edx, edx, 0xe1ca7357
mov word [esp + 0x18], dx
mov eax, dword [esp + 0x7c]
fldz
dec dword [eax + ebp - 4]
fstp dword [esp + 0x10]
fldz
lea eax, [esp + 0x54]
push edi
fstp qword [esp + 0x14]
push eax
call fcn.00401a40
mov esi, eax
add esp, 8
test esi, esi
jne 0x40592e
mov ecx, dword [esp + 0x58]
lea edx, [ecx*4]
push edx
push eax
mov eax, dword [esp + 0x64]
push eax
call fcn.0040b330
mov ecx, dword [esp + 0x68]
add esp, 0xc
mov dword [ecx], esi
mov dword [esp + 0x54], edi
test esi, esi
jne 0x40592e
cmp ebx, edi
jge 0x4055e0
xor eax, eax
jmp 0x4055e8
mov edx, dword [esp + 0x70]
mov eax, dword [edx + ebx*4 - 4]
mov ecx, dword [esp + 0x5c]
mov dword [ecx], eax
mov edx, dword [esp + 0x70]
mov eax, dword [edx + ebx*4]
mov ecx, dword [esp + 0x5c]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x7c]
mov eax, dword [edx + ebp - 4]
push eax
lea ecx, [esp + 0x58]
push ecx
mov edx, ecx
push edx
call fcn.00404970
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40592e
fldz
lea eax, [esp + 0x8c]
fstp dword [esp + 0x10]
push edi
fldz
push eax
fstp qword [esp + 0x18]
call fcn.00401a40
mov esi, eax
add esp, 8
test esi, esi
jne 0x40592e
mov ecx, dword [esp + 0x90]
lea edx, [ecx*4]
push edx
push eax
mov eax, dword [esp + 0x9c]
push eax
call fcn.0040b330
mov ecx, dword [esp + 0xa0]
add esp, 0xc
mov dword [ecx], esi
mov dword [esp + 0x8c], edi
test esi, esi
jne 0x40592e
mov esi, dword [esp + 0x34]
cmp esi, 2
jge 0x40568b
xor eax, eax
jmp 0x405693
mov edx, dword [esp + 0x50]
mov eax, dword [edx + esi*4 - 8]
mov ecx, dword [esp + 0x94]
mov dword [ecx], eax
add dword [0x425b3c], edi
mov dx, word [esp + 0x28]
movsx eax, dx
mov edx, dword [0x425b3c]
add dword [esp + 0x28], edi
mov ecx, 0xa08a6108
sub ecx, eax
cmp ecx, edx
jle 0x405718
mov ax, word [esp + 0x18]
add dword [esp + 0x18], edi
movsx ecx, ax
mov edx, 0xb24cb18d
sub edx, ecx
cmp edx, 0x88f617cb
jge 0x405718
add dword [esp + 0x28], edi
mov ax, word [0x425d20]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fld dword [esp + 0x24]
mov dx, word [esp + 0x28]
fsub qword [0x41f658]
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
faddp st(1)
fsubp st(1)
call fcn.0040b1f0
mov word [0x425d20], ax
cmp esi, edi
jge 0x405720
xor eax, eax
jmp 0x405728
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + esi*4 - 4]
mov edx, dword [esp + 0x94]
mov dword [edx + 4], eax
fld dword [0x4236b4]
fsub qword [0x41f650]
call fcn.0040b1f0
mov edx, dword [esp + 0x94]
mov word [esp + 0x1c], ax
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + esi*4]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
mov dword [edx + 8], ecx
fld dword [esp + 0x24]
fadd qword [0x41f648]
fsubp st(1)
call fcn.0040b1f0
mov dword [esp + 0x3c], eax
fld dword [esp + 0x24]
fsub qword [0x41f340]
lea ecx, [esp + 0x8c]
push ecx
lea edx, [esp + 0x58]
push edx
fstp dword [esp + 0x2c]
call fcn.00402e20
add esp, 8
test eax, eax
jg 0x405580
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + ebp - 4]
push ecx
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00404970
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40592e
mov edi, dword [esp + 0x38]
lea ecx, [esp + 0x54]
push edi
push ecx
call fcn.00403b00
mov esi, eax
add esp, 8
test esi, esi
jne 0x40592e
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x4c]
push eax
mov ecx, eax
push ecx
call fcn.00404a70
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40592e
push eax
lea edx, [esp + 0x4c]
push edx
call fcn.00403530
add esp, 8
test eax, eax
jge 0x405891
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x58]
push ecx
call fcn.00401be0
mov esi, eax
add esp, 8
test esi, esi
jne 0x40592e
lea edx, [esp + 0x54]
push edi
push edx
call fcn.00403b00
mov esi, eax
add esp, 8
test esi, esi
jne 0x40592e
inc word [0x423fac]
mov ax, word [0x423fac]
movzx ecx, word [0x425b48]
cwde
imul ecx, eax
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x4c]
mov word [0x425b48], cx
push eax
mov ecx, eax
push ecx
call fcn.00404770
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40592e
mov eax, dword [esp + 0x7c]
dec dword [eax + ebp - 4]
mov eax, dword [esp + 0x34]
dec eax
sub edi, 0x20
sub ebp, 4
cmp eax, ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x80], ebp
jg 0x405280
mov edi, dword [esp + 0xb0]
add dword [esp + 0x3c], 0x36677c68
test edi, edi
je 0x4058e9
lea edx, [esp + 0x74]
push edx
push edi
call fcn.00401be0
mov eax, dword [esp + 0xc0]
mov ecx, dword [eax]
mov edx, dword [esp + 0xc4]
add esp, 8
imul ecx, dword [edx]
mov dword [edi], ecx
mov edi, dword [esp + 0xb4]
test edi, edi
je 0x40592e
mov eax, dword [esp + 0x2c]
push eax
lea ecx, [esp + 0x4c]
push ecx
call fcn.00401530
lea edx, [esp + 0x50]
push edx
push edi
call fcn.00401be0
mov eax, dword [esp + 0xc8]
mov ecx, dword [eax]
push 0
push edi
mov dword [edi], ecx
call fcn.00403530
add esp, 0x18
test eax, eax
jne 0x40592e
mov dword [edi], 1
xor ebp, ebp
push ebp
lea edx, [esp + 0x90]
push edx
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x80]
push ecx
lea edx, [esp + 0x78]
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00401820
add esp, 0x18
pop ebx
pop edi
mov eax, esi
pop esi
pop ebp
add esp, 0x9c
ret