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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x2270
call fcn.004574d0
fldz
push ebx
fstp dword [esp + 0x1174]
push edi
push 0x84
lea eax, [esp + 0x1180]
push 0
push eax
call fcn.004550c0
push 0x1078
lea ecx, [esp + 0x1210]
push 0
push ecx
call fcn.004550c0
add esp, 0x18
cmp byte [esi + 0x2d4], 0
mov dword [esp + 0x68], 0x59c310
jne 0x54e52f
mov dword [esp + 0x68], 0x59c2b0
xor eax, eax
mov ecx, 0x440
lea edi, [esp + 0x78]
rep stosd dword es:[edi], eax
xor al, al
mov byte [esp + 0xf], al
cmp byte [esi + 0x2d6], al
jbe 0x54e67f
mov edi, dword [esi + 0x2dc]
mov edx, dword [esi + 0x2e0]
mov dword [esp + 0x34], edi
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x14]
mov dl, byte [ecx]
mov byte [esp + 0x10], dl
cmp al, byte [esi + 0x2d7]
jae 0x54e57a
mov cl, byte [edi]
inc cl
jmp 0x54e57d
mov cl, byte [edi + 1]
mov dl, byte [edi]
cmp dl, cl
jae 0x54e663
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
mov bl, byte [esi + 0xa]
cmp bl, byte [esp + 0x12]
jae 0x54e650
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 + 0x2d7]
jae 0x54e60a
fld dword [edi]
fstp dword [esp + 0x28]
fld dword [edi + 4]
jmp 0x54e613
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 0x54e5f7
mov edi, dword [esp + 0x34]
mov ecx, 1
add dword [esp + 0x18], ecx
sub dword [esp + 0x40], ecx
jne 0x54e5a3
add dword [esp + 0x14], 2
inc al
inc edi
mov byte [esp + 0xf], al
mov dword [esp + 0x34], edi
cmp al, byte [esi + 0x2d6]
jb 0x54e562
fld1
xor al, al
mov byte [esp + 0x10], al
cmp byte [esi + 0x2d8], al
jbe 0x54e798
fld qword [0x56efd0]
movzx ecx, byte [esi + 9]
mov bl, byte [esi + 0xa]
cmp bl, byte [ecx + esi + 0xa]
jae 0x54e784
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 0x54e6f2
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 0x54e763
fstp st(1)
fstp st(0)
fxch st(1)
fst dword [esp + edx + 0x1178]
jmp 0x54e76e
fdivp st(1)
fstp dword [esp + edx + 0x1178]
fxch st(1)
movzx eax, byte [esi + 9]
fxch st(1)
inc bl
cmp bl, byte [eax + esi + 0xa]
jb 0x54e6ad
mov al, byte [esp + 0x10]
inc al
mov byte [esp + 0x10], al
cmp al, byte [esi + 0x2d8]
jb 0x54e699
fstp st(0)
cmp byte [esi + 0x2d6], 0
mov byte [esp + 0xf], 0
jbe 0x54eccc
fld qword [0x59e2e8]
mov al, byte [esp + 0xf]
cmp al, byte [esi + 0x2d7]
movzx eax, al
mov dword [esp + 0x1c], eax
jae 0x54e7d1
mov ecx, dword [esi + 0x2dc]
add eax, ecx
mov cl, byte [eax]
inc cl
jmp 0x54e7dd
mov edx, dword [esi + 0x2dc]
mov cl, byte [eax + edx + 1]
add eax, edx
mov al, byte [eax]
mov byte [esp + 0x12], cl
mov byte [esp + 0x11], al
cmp al, cl
jae 0x54ecb4
mov al, byte [esp + 0xf]
cmp al, byte [esi + 0x2d7]
jb 0x54e830
mov al, byte [esi + 0x2da]
mov cl, byte [esp + 0x11]
cmp cl, al
jbe 0x54e830
sub al, cl
cmp al, 0xec
jg 0x54e817
fldz
fstp dword [esp + 0x14]
jmp 0x54e838
movsx ecx, al
mov dword [esp + 0x4c], ecx
fild dword [esp + 0x4c]
fmul st(1)
fadd qword [0x5bbef0]
fstp dword [esp + 0x14]
jmp 0x54e838
fxch st(1)
fst dword [esp + 0x14]
fxch st(1)
fld dword [esp + 0x14]
xor eax, eax
lea ecx, [eax + 3]
fld dword [eax + 0x59e178]
add eax, 4
sub ecx, 1
fmul st(1)
fstp dword [esp + eax + 0x68]
jne 0x54e841
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]
mov byte [esp + 0x1a], cl
mov byte [esp + 0x13], al
cmp al, byte [edx + esi + 0xa]
jae 0x54eca0
movzx edi, byte [esp + 0x11]
fstp st(1)
movzx eax, byte [esp + 0x13]
mov dl, byte [esi + 0x2d7]
mov dword [esp + 0x4c], eax
mov ecx, eax
cmp byte [esp + 0xf], dl
jae 0x54e8b2
mov ebx, dword [ebp + 0x10]
shl ecx, 5
jmp 0x54e8b8
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]
fstp dword [esp + 0x2c]
cmp cl, byte [esi + 0x2d9]
jbe 0x54e931
cmp byte [esp + 0xf], dl
jb 0x54e937
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 0x54ebc4
cmp byte [esp + 0xf], dl
jae 0x54e97f
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 0x54e9c7
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 + 0x59c0b0]
fstp dword [esp + 0x60]
fld dword [edi*8 + 0x59c0b4]
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 0x54ea3a
fstp st(0)
fstp st(0)
mov bl, byte [esi + 0x2d7]
cmp byte [esp + 0xf], bl
jae 0x54ea99
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 0x54ea87
fld dword [ecx + 0x59cb30]
fstp dword [esp + 0x50]
fld dword [ecx + 0x59cb34]
jmp 0x54eacf
fld dword [ecx + 0x59ca10]
fstp dword [esp + 0x50]
fld dword [ecx + 0x59ca14]
jmp 0x54eacf
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 + 0x59c410]
fstp dword [esp + 0x50]
fld dword [ecx + 0x59c414]
fstp dword [esp + 0x54]
mov edx, dword [esp + 0x30]
fld dword [esp + 0x54]
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]
cmp byte [esp + 0xf], bl
jae 0x54eb7a
shl eax, 5
add eax, edi
fstp dword [esi + eax*8 + 0x3f6c]
fld dword [esp + 0x5c]
fstp dword [esi + eax*8 + 0x3f70]
jmp 0x54eb91
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)
inc eax
fst dword [esp + 0x3c]
add ecx, 8
sub dword [esp + 0x40], 1
mov dword [esp + 0x34], eax
jne 0x54ea36
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]
fstp dword [esp + 0x3c]
fld dword [esp + 0x38]
cmp cl, byte [esi + 0x2d7]
jae 0x54ec09
mov edx, dword [ebp + 0x14]
shl eax, 5
jmp 0x54ec0f
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]
inc al
mov byte [esp + 0x10], al
cmp al, 2
jb 0x54ec30
mov byte [esp + 0x10], 0
mov al, byte [esp + 0x11]
cmp al, byte [esi + 0x2d9]
jbe 0x54ec63
cmp cl, byte [esi + 0x2d7]
jb 0x54ec63
inc byte [edi + esi + 0x32b]
mov al, byte [edi + esi + 0x32b]
cmp al, byte [edi + esi + 0x2eb]
jb 0x54ec63
mov byte [edi + esi + 0x32b], 0
lea eax, [esp + 0x18]
lea ecx, [esi + 0x2e8]
mov ebx, 3
inc byte [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jb 0x54ec7d
mov byte [eax], 0
inc ecx
inc eax
sub ebx, 1
jne 0x54ec72
mov al, byte [esp + 0x13]
movzx ecx, byte [esi + 9]
inc al
mov byte [esp + 0x13], al
cmp al, byte [ecx + esi + 0xa]
jb 0x54e893
fld1
fxch st(1)
mov al, byte [esp + 0x11]
inc al
mov byte [esp + 0x11], al
cmp al, byte [esp + 0x12]
jb 0x54e7ef
mov al, byte [esp + 0xf]
inc al
mov byte [esp + 0xf], al
cmp al, byte [esi + 0x2d6]
jb 0x54e7b0
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