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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x2270
call fcn.004727c0
fldz
push ebx
fstp dword [esp + 0x1174]
push edi
push 0x84
lea eax, [esp + 0x1180]
push 0
push eax
call fcn.004727f0
push 0x1078
lea ecx, [esp + 0x1210]
push 0
push ecx
call fcn.004727f0
add esp, 0x18
cmp byte [esi + 0x2d4], 0
mov dword [esp + 0x68], 0x5cb640
jne 0x5045ef
mov dword [esp + 0x68], 0x5cb5e0
xor eax, eax
mov ecx, 0x440
lea edi, [esp + 0x78]
rep stosd dword es:[edi], eax
xor al, al
cmp byte [esi + 0x2d5], al
mov byte [esp + 0xf], al
jbe 0x50474e
mov edi, dword [esi + 0x2dc]
mov edx, dword [esi + 0x2e0]
mov dword [esp + 0x34], edi
mov dword [esp + 0x14], edx
cmp al, byte [esi + 0x2d6]
mov ecx, dword [esp + 0x14]
mov dl, byte [ecx]
mov byte [esp + 0x10], dl
jae 0x50463b
mov cl, byte [edi]
add cl, 1
jmp 0x50463e
mov cl, byte [edi + 1]
mov dl, byte [edi]
cmp dl, cl
jae 0x504730
movzx ebx, byte [esi + 9]
mov bl, byte [ebx + esi + 0xa]
sub cl, dl
mov byte [esp + 0x12], bl
movzx ebx, dl
movzx ecx, cl
mov dword [esp + 0x18], ebx
mov dword [esp + 0x40], ecx
jmp 0x504670
mov bl, byte [esi + 0xa]
cmp bl, byte [esp + 0x12]
jae 0x50471d
movzx ecx, byte [esp + 0x10]
mov edi, dword [ebp + 8]
movzx eax, bl
mov edx, eax
shl edx, 4
add edx, eax
lea ecx, [ecx + edx*2]
mov edx, eax
shl edx, 6
add edx, dword [esp + 0x18]
shl eax, 5
add eax, dword [esp + 0x18]
lea edx, [edi + edx*8]
mov edi, dword [ebp + 0x10]
lea edi, [edi + eax*8]
movzx eax, byte [esi + 9]
mov al, byte [eax + esi + 0xa]
sub al, bl
movzx eax, al
mov dword [esp + 0x30], eax
mov al, byte [esp + 0xf]
lea ecx, [esp + ecx*4 + 0x78]
cmp al, byte [esi + 0x2d6]
jae 0x5046d7
fld dword [edi]
fstp dword [esp + 0x28]
fld dword [edi + 4]
jmp 0x5046e0
fld dword [edx]
fstp dword [esp + 0x28]
fld dword [edx + 4]
fstp dword [esp + 0x2c]
add edi, 0x100
fld dword [esp + 0x2c]
add edx, 0x200
fld dword [esp + 0x28]
add ecx, 0x88
sub dword [esp + 0x30], 1
fmul st(0), st(0)
fld st(1)
fmulp st(2)
faddp st(1)
fadd dword [ecx - 0x88]
fstp dword [ecx - 0x88]
jne 0x5046c4
mov edi, dword [esp + 0x34]
mov ecx, 1
add dword [esp + 0x18], ecx
sub dword [esp + 0x40], ecx
jne 0x504670
add dword [esp + 0x14], 2
add al, 1
add edi, 1
cmp al, byte [esi + 0x2d5]
mov byte [esp + 0xf], al
mov dword [esp + 0x34], edi
jb 0x504622
fld1
xor al, al
cmp byte [esi + 0x2d7], al
mov byte [esp + 0x10], al
jbe 0x504868
fld qword [0x5cd620]
movzx ecx, byte [esi + 9]
mov bl, byte [esi + 0xa]
cmp bl, byte [ecx + esi + 0xa]
jae 0x504854
movzx ecx, al
fld dword [esi + ecx*4 + 0x4e74]
movzx eax, bl
fmul dword [esi + 0x4e6c]
mov edx, eax
shl edx, 4
add edx, eax
fstp dword [esp + 0x1c]
lea edx, [ecx + edx*2]
fld dword [esp + 0x1c]
add edx, edx
add edx, edx
fst dword [esi + ecx*4 + 0x4e74]
fld dword [esp + edx + 0x78]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5047c1
fld dword [esp + edx + 0x78]
fstp dword [esi + ecx*4 + 0x4e74]
fld dword [esi + ecx*4 + 0x4e74]
fsub dword [esp + edx + 0x78]
fsub dword [esi + ecx*4 + 0x4f84]
fmul dword [esi + 0x4e70]
fadd dword [esi + ecx*4 + 0x4f84]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fst dword [esi + ecx*4 + 0x4f84]
fld dword [esp + edx + 0x78]
fsub dword [esi + ecx*4 + 0x4efc]
fmul dword [esi + 0x4e70]
fadd dword [esi + ecx*4 + 0x4efc]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fst dword [esi + ecx*4 + 0x4efc]
fxch st(1)
fmul st(2)
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x504832
fstp st(1)
fstp st(0)
fxch st(1)
fst dword [esp + edx + 0x1178]
jmp 0x50483d
fdivp st(1)
fstp dword [esp + edx + 0x1178]
fxch st(1)
movzx eax, byte [esi + 9]
fxch st(1)
add bl, 1
cmp bl, byte [eax + esi + 0xa]
jb 0x50477c
mov al, byte [esp + 0x10]
add al, 1
cmp al, byte [esi + 0x2d7]
mov byte [esp + 0x10], al
jb 0x504768
fstp st(0)
cmp byte [esi + 0x2d5], 0
mov byte [esp + 0xf], 0
jbe 0x504dae
fld qword [0x5cd618]
mov al, byte [esp + 0xf]
cmp al, byte [esi + 0x2d6]
movzx eax, al
mov dword [esp + 0x1c], eax
jae 0x5048a2
mov ecx, dword [esi + 0x2dc]
add eax, ecx
mov cl, byte [eax]
add cl, 1
jmp 0x5048ae
mov edx, dword [esi + 0x2dc]
mov cl, byte [eax + edx + 1]
add eax, edx
mov al, byte [eax]
cmp al, cl
mov byte [esp + 0x12], cl
mov byte [esp + 0x11], al
jae 0x504d96
mov al, byte [esp + 0xf]
cmp al, byte [esi + 0x2d6]
jb 0x504901
mov al, byte [esi + 0x2d9]
mov cl, byte [esp + 0x11]
cmp cl, al
jbe 0x504901
sub al, cl
cmp al, 0xec
jg 0x5048e8
fldz
fstp dword [esp + 0x14]
jmp 0x504909
movsx ecx, al
mov dword [esp + 0x4c], ecx
fild dword [esp + 0x4c]
fmul st(1)
fadd qword [0x5edbb8]
fstp dword [esp + 0x14]
jmp 0x504909
fxch st(1)
fst dword [esp + 0x14]
fxch st(1)
fld dword [esp + 0x14]
xor eax, eax
mov ecx, 3
fld dword [eax + 0x5cd4a8]
add eax, 4
sub ecx, 1
fmul st(1)
fstp dword [esp + eax + 0x68]
jne 0x504914
mov dl, byte [esi + 0x2e4]
fstp st(0)
mov ax, word [esi + 0x2e5]
mov cl, byte [esi + 0x2e7]
mov byte [esp + 0x10], dl
movzx edx, byte [esi + 9]
mov word [esp + 0x18], ax
mov al, byte [esi + 0xa]
cmp al, byte [edx + esi + 0xa]
mov byte [esp + 0x1a], cl
mov byte [esp + 0x13], al
jae 0x504d82
movzx edi, byte [esp + 0x11]
fstp st(1)
movzx eax, byte [esp + 0x13]
mov dl, byte [esi + 0x2d6]
cmp byte [esp + 0xf], dl
mov dword [esp + 0x4c], eax
mov ecx, eax
jae 0x504985
mov ebx, dword [ebp + 0x10]
shl ecx, 5
jmp 0x50498b
mov ebx, dword [ebp + 8]
shl ecx, 6
add ecx, edi
fld dword [ebx + ecx*8]
lea ecx, [ebx + ecx*8]
fstp dword [esp + 0x28]
fld dword [ecx + 4]
mov cl, byte [esp + 0x11]
cmp cl, byte [esi + 0x2d8]
fstp dword [esp + 0x2c]
jbe 0x504a04
cmp byte [esp + 0xf], dl
jb 0x504a0a
movzx edx, byte [edi + esi + 0x32b]
shl edx, 6
lea ecx, [edx + edi]
fld dword [esi + ecx*8 + 0x36c]
fstp dword [esp + 0x20]
fld dword [esi + ecx*8 + 0x370]
fstp dword [esp + 0x24]
fld dword [esp + 0x28]
fstp dword [esi + ecx*8 + 0x36c]
movzx ecx, byte [edi + esi + 0x32b]
fld dword [esp + 0x2c]
shl ecx, 6
add ecx, edi
fstp dword [esi + ecx*8 + 0x370]
fld dword [esp + 0x24]
fld dword [esp + 0x20]
jmp 0x504ca0
cmp byte [esp + 0xf], dl
jae 0x504a52
movzx edx, byte [esp + 0x10]
shl edx, 5
lea eax, [edx + edi]
fld dword [esi + eax*8 + 0x1f6c]
fstp dword [esp + 0x44]
fld dword [esi + eax*8 + 0x1f70]
fstp dword [esp + 0x48]
fld dword [esp + 0x28]
fstp dword [esi + eax*8 + 0x1f6c]
fld dword [esp + 0x2c]
fstp dword [esi + eax*8 + 0x1f70]
mov eax, dword [esp + 0x68]
fld dword [eax + edi*8]
fstp dword [esp + 0x60]
fld dword [eax + edi*8 + 4]
jmp 0x504a9a
movzx eax, byte [esp + 0x10]
shl eax, 6
add eax, edi
fld dword [esi + eax*8 + 0x36c]
fstp dword [esp + 0x44]
fld dword [esi + eax*8 + 0x370]
fstp dword [esp + 0x48]
fld dword [esp + 0x28]
fstp dword [esi + eax*8 + 0x36c]
fld dword [esp + 0x2c]
fstp dword [esi + eax*8 + 0x370]
fld dword [edi*8 + str.CrQ_]
fstp dword [esp + 0x60]
fld dword [edi*8 + 0x5cb3e4]
fstp dword [esp + 0x64]
lea ecx, [esp + 0x6c]
fld dword [esp + 0x64]
mov dword [esp + 0x30], ecx
fld st(0)
lea ecx, [edi + edi*2]
fld dword [esp + 0x48]
add ecx, ecx
fld st(0)
lea eax, [esp + 0x18]
fmulp st(2)
add ecx, ecx
fld dword [esp + 0x60]
mov dword [esp + 0x14], 0
fld st(0)
mov dword [esp + 0x34], eax
fld dword [esp + 0x44]
add ecx, ecx
fld st(0)
mov dword [esp + 0x40], 3
fmulp st(2)
fxch st(4)
faddp st(1)
fstp dword [esp + 0x20]
fmulp st(1)
fxch st(2)
fmulp st(1)
fsubp st(1)
fstp dword [esp + 0x24]
fld dword [esp + 0x20]
fstp dword [esp + 0x38]
fld dword [esp + 0x24]
fstp dword [esp + 0x3c]
jmp 0x504b14
fstp st(0)
fstp st(0)
mov bl, byte [esi + 0x2d6]
cmp byte [esp + 0xf], bl
jae 0x504b73
movzx edx, byte [eax]
mov eax, dword [esp + 0x14]
add eax, edx
mov edx, eax
shl edx, 5
add edx, edi
cmp byte [esi + 0x2d4], 0
fld dword [esi + edx*8 + 0x3f6c]
fstp dword [esp + 0x44]
fld dword [esi + edx*8 + 0x3f70]
fstp dword [esp + 0x48]
je 0x504b61
fld dword [ecx + 0x5cbe60]
fstp dword [esp + 0x50]
fld dword [ecx + 0x5cbe64]
jmp 0x504ba9
fld dword [ecx + 0x5cbd40]
fstp dword [esp + 0x50]
fld dword [ecx + 0x5cbd44]
jmp 0x504ba9
movzx eax, byte [eax]
mov edx, dword [esp + 0x14]
add eax, edx
mov edx, eax
shl edx, 6
add edx, edi
fld dword [esi + edx*8 + 0x216c]
fstp dword [esp + 0x44]
fld dword [esi + edx*8 + 0x2170]
fstp dword [esp + 0x48]
fld dword [ecx + 0x5cb740]
fstp dword [esp + 0x50]
fld dword [ecx + 0x5cb744]
cmp byte [esp + 0xf], bl
fstp dword [esp + 0x54]
fld dword [esp + 0x54]
mov edx, dword [esp + 0x30]
fld st(0)
fld dword [esp + 0x48]
fld st(0)
fmulp st(2)
fld dword [esp + 0x50]
fld st(0)
fld dword [esp + 0x44]
fld st(0)
fmulp st(2)
fxch st(4)
faddp st(1)
fstp dword [esp + 0x20]
fmulp st(1)
fxch st(2)
fmulp st(1)
fsubp st(1)
fstp dword [esp + 0x24]
fld dword [edx]
fld dword [esp + 0x38]
fld st(0)
fmulp st(2)
fxch st(1)
fsubr dword [esp + 0x20]
fstp dword [esp + 0x20]
fld dword [edx]
fld dword [esp + 0x3c]
fld st(0)
fmulp st(2)
fxch st(1)
fsubr dword [esp + 0x24]
fstp dword [esp + 0x24]
fld dword [edx]
fld dword [esp + 0x20]
fld st(0)
fmulp st(2)
fxch st(1)
faddp st(3)
fxch st(2)
fstp dword [esp + 0x58]
fld dword [edx]
fld dword [esp + 0x24]
fld st(0)
fmulp st(2)
fxch st(1)
faddp st(2)
fxch st(1)
fstp dword [esp + 0x5c]
fld dword [esp + 0x58]
jae 0x504c54
shl eax, 5
add eax, edi
fstp dword [esi + eax*8 + 0x3f6c]
fld dword [esp + 0x5c]
fstp dword [esi + eax*8 + 0x3f70]
jmp 0x504c6b
shl eax, 6
add eax, edi
fstp dword [esi + eax*8 + 0x216c]
fld dword [esp + 0x5c]
fstp dword [esi + eax*8 + 0x2170]
mov eax, dword [esp + 0x34]
fxch st(1)
add dword [esp + 0x30], 4
fst dword [esp + 0x38]
add dword [esp + 0x14], 5
fxch st(1)
add eax, 1
fst dword [esp + 0x3c]
add ecx, 8
sub dword [esp + 0x40], 1
mov dword [esp + 0x34], eax
jne 0x504b10
mov eax, dword [esp + 0x4c]
fxch st(1)
mov ecx, dword [esi + 0x2e0]
mov edx, dword [esp + 0x1c]
mov cl, byte [ecx + edx*2]
mov edx, eax
movzx ecx, cl
shl edx, 4
add edx, eax
lea ecx, [ecx + edx*2]
lea ecx, [esp + ecx*4 + 0x1178]
fmul dword [ecx]
fstp dword [esp + 0x38]
fmul dword [ecx]
mov cl, byte [esp + 0xf]
cmp cl, byte [esi + 0x2d6]
fstp dword [esp + 0x3c]
fld dword [esp + 0x38]
jae 0x504ce5
mov edx, dword [ebp + 0x14]
shl eax, 5
jmp 0x504ceb
mov edx, dword [ebp + 0xc]
shl eax, 6
add eax, edi
lea eax, [edx + eax*8]
fstp dword [eax]
fld dword [esp + 0x3c]
fstp dword [eax + 4]
mov al, byte [esp + 0x10]
add al, 1
cmp al, 2
mov byte [esp + 0x10], al
jb 0x504d0c
mov byte [esp + 0x10], 0
mov al, byte [esp + 0x11]
cmp al, byte [esi + 0x2d8]
jbe 0x504d40
cmp cl, byte [esi + 0x2d6]
jb 0x504d40
add byte [edi + esi + 0x32b], 1
mov al, byte [edi + esi + 0x32b]
cmp al, byte [edi + esi + 0x2eb]
jb 0x504d40
mov byte [edi + esi + 0x32b], 0
lea eax, [esp + 0x18]
lea ecx, [esi + 0x2e8]
mov ebx, 3
add byte [eax], 1
mov dl, byte [eax]
cmp dl, byte [ecx]
jb 0x504d5b
mov byte [eax], 0
add ecx, 1
add eax, 1
sub ebx, 1
jne 0x504d4f
mov al, byte [esp + 0x13]
movzx ecx, byte [esi + 9]
add al, 1
cmp al, byte [ecx + esi + 0xa]
mov byte [esp + 0x13], al
jb 0x504966
fld1
fxch st(1)
mov al, byte [esp + 0x11]
add al, 1
cmp al, byte [esp + 0x12]
mov byte [esp + 0x11], al
jb 0x5048c0
mov al, byte [esp + 0xf]
add al, 1
cmp al, byte [esi + 0x2d5]
mov byte [esp + 0xf], al
jb 0x504880
fstp st(1)
mov dl, byte [esp + 0x10]
fstp st(0)
mov ax, word [esp + 0x18]
mov cl, byte [esp + 0x1a]
mov byte [esi + 0x2e4], dl
pop edi
mov word [esi + 0x2e5], ax
mov byte [esi + 0x2e7], cl
pop ebx
mov esp, ebp
pop ebp
ret