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

Disassembly:
sub esp, 0x250
push esi
mov esi, ecx
mov dword [esp + 0x20], esi
call fcn.00595380
test al, al
je 0x5965d0
movsx eax, byte [esi + 0xc]
push ebx
push ebp
push edi
xor ebp, ebp
push eax
mov ecx, 0x96f050
mov dword [esp + 0x1c], ebp
xor edi, edi
call fcn.0044de80
xor eax, eax
lea ecx, [esi + 0x10]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], ecx
mov esi, dword [ecx]
test esi, esi
je 0x595704
mov dword [esp + eax*4 + 0xc0], ebp
cmp byte [esi + 0x40c], 2
jle 0x5956f1
mov ecx, dword [esi + 0x41c]
mov edx, dword [esi + 0x418]
mov eax, dword [esi + 0x414]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push ecx
push edx
push eax
lea ecx, [esp + 0x38]
push ecx
mov ecx, 0x96f050
call fcn.00450e90
mov edx, dword [esi + 0x42c]
mov eax, dword [esi + 0x428]
mov ecx, dword [esi + 0x424]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push edx
push eax
push ecx
lea edx, [esp + 0x6c]
push edx
mov ecx, 0x96f050
inc edi
call fcn.00450e90
mov eax, dword [esp + 0x18]
push eax
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esi + 0x40c]
inc edi
cmp al, 2
mov ebp, 2
jle 0x5956f1
lea ebx, [esi + 0x438]
lea ebx, [ebx]
mov ecx, dword [ebx + 4]
mov edx, dword [ebx]
mov eax, dword [ebx - 4]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push ecx
push edx
push eax
lea ecx, [esp + 0x70]
push ecx
mov ecx, 0x96f050
call fcn.00450e90
mov edx, dword [esp + 0x18]
lea eax, [edx + ebp - 2]
push eax
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov ecx, ebp
and ecx, 0x80000001
jns 0x5956cb
dec ecx
or ecx, 0xfffffffe
inc ecx
je 0x5956e1
mov edx, dword [esp + 0x18]
lea eax, [edx + ebp - 1]
push eax
push edi
mov ecx, 0x96f050
call fcn.0044ded0
movsx ecx, byte [esi + 0x40c]
inc edi
inc ebp
add ebx, 0x10
cmp ebp, ecx
jl 0x595680
movsx edx, byte [esi + 0x40c]
add dword [esp + 0x18], edx
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
inc eax
add ecx, 4
cmp eax, 8
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], ecx
jl 0x5955d1
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1a0]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
add eax, 0x10
mov edi, ebp
lea ebx, [ebp - 1]
mov dword [esp + 0x44], eax
mov esi, dword [eax]
test esi, esi
je 0x59620c
mov ecx, dword [esi + 0x14]
cmp byte [ecx + 5], 0xff
mov byte [esp + 0x17], 0
jle 0x5959e6
mov edx, dword [esi + 0x51c]
mov eax, dword [esi + 0x518]
mov ecx, dword [esi + 0x514]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push edx
push eax
push ecx
lea edx, [esp + 0x13c]
push edx
mov ecx, 0x96f050
call fcn.00450e90
mov ebp, dword [eax]
mov al, byte [esi + 0x512]
cmp al, 0xff
jle 0x5957bb
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + ecx*4 + 0xc0]
movsx eax, al
add eax, edx
push eax
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esi + 0x513]
cmp al, 0xff
jle 0x5957df
movsx edx, al
mov eax, dword [esp + 0x1c]
add edx, dword [esp + eax*4 + 0xc0]
push edx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov edx, dword [esi + 0x514]
mov eax, dword [esi + 0x518]
push 0xffffffffffffffff
lea ecx, [esi + 0x400]
mov dword [ecx], edx
mov edx, dword [esi + 0x51c]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x30]
mov dword [ecx + 8], edx
mov edx, dword [esi + 0x52c]
push 0xffffffffffffffff
push 0xffffffffffffffff
mov dword [esi + 0x3f0], ebp
mov cl, byte [eax + 0xe]
mov eax, dword [esi + 0x528]
mov dword [esp + 0x3c], edi
inc edi
push 0xffffffffffffffff
inc ebx
test cl, cl
push 0xffffffffffffffff
setne cl
push 0xffffffffffffffff
mov byte [esp + 0x2f], 1
mov dword [esp + 0x3c], ebx
push ecx
mov ecx, dword [esi + 0x524]
push edx
push eax
push ecx
lea edx, [esp + 0x138]
push edx
mov ecx, 0x96f050
call fcn.00450e90
push ebx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
push edi
lea eax, [esp + 0x5c]
push eax
mov ecx, 0x96f050
call fcn.00450f30
mov edx, dword [esp + 0x58]
cmp dx, 0xffff
je 0x59647f
movzx ecx, word [esp + 0x5a]
imul ecx, ecx, 0x1c
mov dword [esi + 0x3ec], edx
movzx ebp, dx
mov eax, dword [ebp*4 + 0x96f854]
movsx ebx, word [eax + ecx + 8]
add eax, ecx
mov dword [esp + 0x10], ebx
movsx ebx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ebx
fstp dword [esp + 0x84]
mov ebx, dword [esp + 0x84]
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
lea eax, [esi + 0x3f4]
mov dword [eax], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x88]
fild dword [esp + 0x10]
mov ebx, dword [esp + 0x88]
mov dword [eax + 4], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x8c]
mov ebx, dword [esp + 0x8c]
mov dword [eax + 8], ebx
mov eax, dword [esp + 0x2c]
mov bl, byte [eax + 0xe]
test bl, bl
jne 0x5959e0
mov eax, dword [esi + 0x524]
mov dword [esp + 0x9c], eax
mov eax, dword [esi + 0x528]
mov dword [esp + 0xa0], eax
mov eax, dword [esi + 0x52c]
mov dword [esp + 0xa4], eax
mov eax, dword [ebp*4 + 0x96f854]
add eax, ecx
movsx ecx, word [eax + 8]
mov dword [esp + 0x10], ecx
movsx ecx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
fmul dword [0x858c48]
fild dword [esp + 0x10]
fmul dword [0x858c48]
fstp dword [esp + 0x138]
fxch st(1)
fsub dword [esp + 0x9c]
fstp dword [esp + 0x120]
fsub dword [esp + 0xa0]
fld dword [esp + 0x138]
fsub dword [esp + 0xa4]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld dword [esp + 0x120]
fmul dword [esp + 0x120]
faddp st(1)
fcomp dword [0x85eed4]
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jp 0x5959e0
push edx
push edi
mov ecx, 0x96f050
call fcn.0044df30
mov ebx, dword [esp + 0x24]
inc edi
inc ebx
mov eax, dword [esi + 0x14]
cmp byte [eax + 6], 0xff
jle 0x595c64
mov ecx, dword [esi + 0x53c]
mov edx, dword [esi + 0x538]
mov eax, dword [esi + 0x534]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push ecx
push edx
push eax
lea ecx, [esp + 0x154]
push ecx
mov ecx, 0x96f050
call fcn.00450e90
mov ebp, dword [eax]
mov al, byte [esi + 0x532]
cmp al, 0xff
je 0x595a4e
movsx edx, al
mov eax, dword [esp + 0x1c]
add edx, dword [esp + eax*4 + 0xc0]
push edx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esi + 0x533]
cmp al, 0xff
je 0x595a72
mov edx, dword [esp + 0x1c]
movsx ecx, al
add ecx, dword [esp + edx*4 + 0xc0]
push ecx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esp + 0x17]
test al, al
mov dword [esp + 0x4c], edi
jne 0x595aa9
mov ecx, dword [esi + 0x534]
mov edx, dword [esi + 0x538]
lea eax, [esi + 0x400]
mov dword [eax], ecx
mov ecx, dword [esi + 0x53c]
mov dword [eax + 4], edx
mov dword [esi + 0x3f0], ebp
mov dword [eax + 8], ecx
mov byte [esp + 0x17], 1
mov edx, dword [esi + 0x54c]
mov eax, dword [esi + 0x548]
mov ecx, dword [esi + 0x544]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push edx
push eax
push ecx
lea edx, [esp + 0x128]
inc edi
inc ebx
push edx
mov ecx, 0x96f050
mov dword [esp + 0x50], ebx
call fcn.00450e90
push ebx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
push edi
lea eax, [esp + 0x54]
push eax
mov ecx, 0x96f050
call fcn.00450f30
mov edx, dword [esp + 0x50]
cmp dx, 0xffff
je 0x5964c0
movzx ecx, word [esp + 0x52]
imul ecx, ecx, 0x1c
mov dword [esi + 0x3ec], edx
movzx ebp, dx
mov eax, dword [ebp*4 + 0x96f854]
movsx ebx, word [eax + ecx + 8]
add eax, ecx
mov dword [esp + 0x10], ebx
movsx ebx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ebx
fstp dword [esp + 0x60]
mov ebx, dword [esp + 0x60]
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
lea eax, [esi + 0x3f4]
mov dword [eax], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x64]
fild dword [esp + 0x10]
mov ebx, dword [esp + 0x64]
mov dword [eax + 4], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x68]
mov ebx, dword [esp + 0x68]
mov dword [eax + 8], ebx
mov eax, dword [esp + 0x2c]
mov bl, byte [eax + 0xe]
test bl, bl
jne 0x595c5e
mov eax, dword [esi + 0x544]
mov dword [esp + 0xb4], eax
mov eax, dword [esi + 0x548]
mov dword [esp + 0xb8], eax
mov eax, dword [esi + 0x54c]
mov dword [esp + 0xbc], eax
mov eax, dword [ebp*4 + 0x96f854]
add eax, ecx
movsx ecx, word [eax + 8]
mov dword [esp + 0x10], ecx
movsx ecx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
fmul dword [0x858c48]
fild dword [esp + 0x10]
fmul dword [0x858c48]
fstp dword [esp + 0x15c]
fxch st(1)
fsub dword [esp + 0xb4]
fstp dword [esp + 0xf4]
fsub dword [esp + 0xb8]
fld dword [esp + 0x15c]
fsub dword [esp + 0xbc]
fld dword [esp + 0xf4]
fmul dword [esp + 0xf4]
fld st(1)
fmul st(2)
faddp st(1)
fld st(2)
fmul st(3)
faddp st(1)
fcomp dword [0x85eed4]
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jp 0x595c5e
push edx
push edi
mov ecx, 0x96f050
call fcn.0044df30
mov ebx, dword [esp + 0x24]
inc edi
inc ebx
mov eax, dword [esi + 0x14]
cmp byte [eax + 0xa], 0xff
jle 0x595ed6
mov ecx, dword [esi + 0x55c]
mov edx, dword [esi + 0x558]
mov eax, dword [esi + 0x554]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push ecx
push edx
push eax
lea ecx, [esp + 0x118]
push ecx
mov ecx, 0x96f050
call fcn.00450e90
mov ebp, dword [eax]
mov al, byte [esi + 0x552]
cmp al, 0xff
je 0x595ccc
movsx edx, al
mov eax, dword [esp + 0x1c]
add edx, dword [esp + eax*4 + 0xc0]
push edx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esi + 0x553]
cmp al, 0xff
je 0x595cf0
mov edx, dword [esp + 0x1c]
movsx ecx, al
add ecx, dword [esp + edx*4 + 0xc0]
push ecx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esp + 0x17]
test al, al
mov dword [esp + 0x28], edi
jne 0x595d27
mov ecx, dword [esi + 0x554]
mov edx, dword [esi + 0x558]
lea eax, [esi + 0x400]
mov dword [eax], ecx
mov ecx, dword [esi + 0x55c]
mov dword [eax + 4], edx
mov dword [esi + 0x3f0], ebp
mov dword [eax + 8], ecx
mov byte [esp + 0x17], 1
mov edx, dword [esi + 0x56c]
mov eax, dword [esi + 0x568]
mov ecx, dword [esi + 0x564]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push edx
push eax
push ecx
lea edx, [esp + 0x108]
inc edi
inc ebx
push edx
mov ecx, 0x96f050
mov dword [esp + 0x50], ebx
call fcn.00450e90
push ebx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
push edi
lea eax, [esp + 0x58]
push eax
mov ecx, 0x96f050
call fcn.00450f30
mov edx, dword [esp + 0x54]
cmp dx, 0xffff
je 0x596501
movzx ecx, word [esp + 0x56]
imul ecx, ecx, 0x1c
mov dword [esi + 0x3ec], edx
movzx ebp, dx
mov eax, dword [ebp*4 + 0x96f854]
movsx ebx, word [eax + ecx + 8]
add eax, ecx
mov dword [esp + 0x10], ebx
movsx ebx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ebx
fstp dword [esp + 0x6c]
mov ebx, dword [esp + 0x6c]
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
lea eax, [esi + 0x3f4]
mov dword [eax], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x70]
fild dword [esp + 0x10]
mov ebx, dword [esp + 0x70]
mov dword [eax + 4], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x74]
mov ebx, dword [esp + 0x74]
mov dword [eax + 8], ebx
mov eax, dword [esp + 0x2c]
mov bl, byte [eax + 0xe]
test bl, bl
jne 0x595ed0
mov eax, dword [esi + 0x564]
mov dword [esp + 0x78], eax
mov eax, dword [esi + 0x568]
mov dword [esp + 0x7c], eax
mov eax, dword [esi + 0x56c]
mov dword [esp + 0x80], eax
mov eax, dword [ebp*4 + 0x96f854]
add eax, ecx
movsx ecx, word [eax + 8]
mov dword [esp + 0x10], ecx
movsx ecx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
fmul dword [0x858c48]
fild dword [esp + 0x10]
fmul dword [0x858c48]
fstp dword [esp + 0x144]
fxch st(1)
fsub dword [esp + 0x78]
fstp dword [esp + 0x104]
fsub dword [esp + 0x7c]
fld dword [esp + 0x144]
fsub dword [esp + 0x80]
fld dword [esp + 0x104]
fmul dword [esp + 0x104]
fld st(1)
fmul st(2)
faddp st(1)
fld st(2)
fmul st(3)
faddp st(1)
fcomp dword [0x85eed4]
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jp 0x595ed0
push edx
push edi
mov ecx, 0x96f050
call fcn.0044df30
mov ebx, dword [esp + 0x24]
inc edi
inc ebx
mov eax, dword [esi + 0x14]
cmp byte [eax + 8], 0xff
jle 0x596161
mov ecx, dword [esi + 0x57c]
mov edx, dword [esi + 0x578]
mov eax, dword [esi + 0x574]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push ecx
push edx
push eax
lea ecx, [esp + 0x144]
push ecx
mov ecx, 0x96f050
call fcn.00450e90
mov ebp, dword [eax]
mov al, byte [esi + 0x572]
cmp al, 0xff
je 0x595f3e
movsx edx, al
mov eax, dword [esp + 0x1c]
add edx, dword [esp + eax*4 + 0xc0]
push edx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esi + 0x573]
cmp al, 0xff
je 0x595f62
mov edx, dword [esp + 0x1c]
movsx ecx, al
add ecx, dword [esp + edx*4 + 0xc0]
push ecx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
mov al, byte [esp + 0x17]
test al, al
mov dword [esp + 0x48], edi
jne 0x595f94
mov ecx, dword [esi + 0x574]
mov edx, dword [esi + 0x578]
lea eax, [esi + 0x400]
mov dword [eax], ecx
mov ecx, dword [esi + 0x57c]
mov dword [eax + 4], edx
mov dword [esi + 0x3f0], ebp
mov dword [eax + 8], ecx
mov edx, dword [esi + 0x58c]
mov eax, dword [esi + 0x588]
mov ecx, dword [esi + 0x584]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push edx
push eax
push ecx
lea edx, [esp + 0x140]
inc edi
inc ebx
push edx
mov ecx, 0x96f050
mov dword [esp + 0x50], ebx
call fcn.00450e90
push ebx
push edi
mov ecx, 0x96f050
call fcn.0044ded0
push edi
lea eax, [esp + 0x60]
push eax
mov ecx, 0x96f050
call fcn.00450f30
mov edx, dword [esp + 0x5c]
cmp dx, 0xffff
je 0x596542
movzx ecx, word [esp + 0x5e]
imul ecx, ecx, 0x1c
mov dword [esi + 0x3ec], edx
movzx ebp, dx
mov eax, dword [ebp*4 + 0x96f854]
movsx ebx, word [eax + ecx + 8]
add eax, ecx
mov dword [esp + 0x10], ebx
movsx ebx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ebx
fstp dword [esp + 0x90]
mov ebx, dword [esp + 0x90]
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
lea eax, [esi + 0x3f4]
mov dword [eax], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x94]
fild dword [esp + 0x10]
mov ebx, dword [esp + 0x94]
mov dword [eax + 4], ebx
fmul dword [0x858c48]
fstp dword [esp + 0x98]
mov ebx, dword [esp + 0x98]
mov dword [eax + 8], ebx
mov eax, dword [esp + 0x2c]
mov bl, byte [eax + 0xe]
test bl, bl
jne 0x59615b
mov eax, dword [esi + 0x584]
mov dword [esp + 0xa8], eax
mov eax, dword [esi + 0x588]
mov dword [esp + 0xac], eax
mov eax, dword [esi + 0x58c]
mov dword [esp + 0xb0], eax
mov eax, dword [ebp*4 + 0x96f854]
add eax, ecx
movsx ecx, word [eax + 8]
mov dword [esp + 0x10], ecx
movsx ecx, word [eax + 0xa]
fild dword [esp + 0x10]
movsx eax, word [eax + 0xc]
fmul dword [0x858c48]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
fmul dword [0x858c48]
fild dword [esp + 0x10]
fmul dword [0x858c48]
fstp dword [esp + 0x150]
fxch st(1)
fsub dword [esp + 0xa8]
fstp dword [esp + 0xe4]
fsub dword [esp + 0xac]
fld dword [esp + 0x150]
fsub dword [esp + 0xb0]
fld dword [esp + 0xe4]
fmul dword [esp + 0xe4]
fld st(1)
fmul st(2)
faddp st(1)
fld st(2)
fmul st(3)
faddp st(1)
fcomp dword [0x85eed4]
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jp 0x59615b
push edx
push edi
mov ecx, 0x96f050
call fcn.0044df30
mov ebx, dword [esp + 0x24]
inc edi
inc ebx
mov al, byte [esi + 0x40c]
test al, al
jne 0x59620c
mov eax, dword [esi + 0x14]
cmp byte [eax + 5], 0xff
jle 0x5961cc
cmp byte [eax + 6], 0xff
jle 0x596192
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x30]
push eax
push ecx
mov ecx, 0x96f050
call fcn.0044ded0
mov edx, dword [esi + 0x14]
cmp byte [edx + 0xa], 0xff
jle 0x5961af
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
push eax
push ecx
mov ecx, 0x96f050
call fcn.0044ded0
mov edx, dword [esi + 0x14]
cmp byte [edx + 8], 0xff
jle 0x5961cc
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
push eax
push ecx
mov ecx, 0x96f050
call fcn.0044ded0
mov eax, dword [esi + 0x14]
cmp byte [eax + 0xa], 0xff
jle 0x59620c
cmp byte [eax + 6], 0xff
jle 0x5961ef
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x28]
push edx
push eax
mov ecx, 0x96f050
call fcn.0044ded0
mov ecx, dword [esi + 0x14]
cmp byte [ecx + 8], 0xff
jle 0x59620c
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x28]
push edx
push eax
mov ecx, 0x96f050
call fcn.0044ded0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x44]
inc ecx
add eax, 4
cmp ecx, 8
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x44], eax
jl 0x595742
mov eax, dword [esp + 0x20]
test eax, eax
mov dword [esp + 0x18], 0
jle 0x5965b6
mov ecx, eax
dec ecx
mov eax, 1
lea edx, [esp + 0x34]
sub eax, edx
lea esi, [esp + 0x1a0]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x10], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x18]
mov cl, byte [esp + eax + 0x34]
test cl, cl
lea eax, [esp + eax + 0x34]
jne 0x596595
mov eax, dword [esp + 0x18]
fld dword [0x858fec]
mov ecx, dword [esp + 0x10]
lea eax, [esp + eax + 0x34]
add ecx, eax
mov eax, dword [esp + 0x28]
or ebx, 0xffffffff
cmp eax, 4
jl 0x5963e2
lea eax, [esp + 0x35]
mov ebp, 2
sub ebp, eax
mov edi, 3
lea eax, [esp + 0x35]
lea edx, [esi + 0x10]
sub edi, eax
mov al, byte [esp + ecx + 0x34]
test al, al
jne 0x5962f4
fld dword [edx - 4]
fsubr dword [esi]
fld dword [esi + 4]
fsub dword [edx]
fld dword [esi + 8]
fsub dword [edx + 4]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fst dword [esp + 0x1c]
fstp st(3)
fstp st(0)
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x5962f4
fstp st(0)
mov ebx, ecx
fld dword [esp + 0x1c]
mov al, byte [esp + ecx + 0x35]
test al, al
jne 0x596339
fld dword [edx + 8]
fsubr dword [esi]
fld dword [esi + 4]
fsub dword [edx + 0xc]
fld dword [esi + 8]
fsub dword [edx + 0x10]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fst dword [esp + 0x1c]
fstp st(3)
fstp st(0)
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x596339
fstp st(0)
lea ebx, [ecx + 1]
fld dword [esp + 0x1c]
mov al, byte [esp + ecx + 0x36]
test al, al
jne 0x596382
fld dword [edx + 0x14]
fsubr dword [esi]
fld dword [esi + 4]
fsub dword [edx + 0x18]
fld dword [esi + 8]
fsub dword [edx + 0x1c]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fst dword [esp + 0x1c]
fstp st(3)
fstp st(0)
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x596382
lea ebx, [ecx + ebp]
fstp st(0)
fld dword [esp + 0x1c]
lea ebx, [esp + ebx + 0x35]
mov al, byte [esp + ecx + 0x37]
test al, al
jne 0x5963cb
fld dword [edx + 0x20]
fsubr dword [esi]
fld dword [esi + 4]
fsub dword [edx + 0x24]
fld dword [esi + 8]
fsub dword [edx + 0x28]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fst dword [esp + 0x1c]
fstp st(3)
fstp st(0)
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x5963cb
lea ebx, [ecx + edi]
fstp st(0)
fld dword [esp + 0x1c]
lea ebx, [esp + ebx + 0x35]
add ecx, 4
lea eax, [ecx + edi]
lea eax, [esp + eax + 0x35]
add edx, 0x30
cmp eax, dword [esp + 0x20]
jl 0x5962b1
cmp ecx, dword [esp + 0x20]
jge 0x596441
lea edx, [ecx + ecx*2]
lea edx, [esp + edx*4 + 0x1a4]
mov al, byte [esp + ecx + 0x34]
test al, al
jne 0x596435
fld dword [edx - 4]
fsubr dword [esi]
fld dword [esi + 4]
fsub dword [edx]
fld dword [esi + 8]
fsub dword [edx + 4]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fst dword [esp + 0x1c]
fstp st(3)
fstp st(0)
fstp st(0)
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x596435
fstp st(0)
mov ebx, ecx
fld dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
inc ecx
add edx, 0xc
cmp ecx, eax
jl 0x5963f2
fcomp dword [0x858b3c]
fnstsw ax
test ah, 5
mov eax, dword [esp + 0x18]
jp 0x596583
mov ecx, dword [esp + ebx*4 + 0x160]
mov edx, dword [esp + eax*4 + 0x160]
push ecx
mov byte [esp + eax + 0x38], 1
push edx
mov ecx, 0x96f050
mov byte [esp + ebx + 0x3c], 1
call fcn.0044ded0
jmp 0x596595
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov ebp, dword [esi + 0x524]
mov edx, ecx
mov dword [edx], ebp
mov ebp, dword [esi + 0x528]
mov dword [esp + eax*4 + 0x160], edi
mov dword [edx + 4], ebp
mov ebp, dword [esi + 0x52c]
mov byte [esp + eax + 0x34], 0
inc eax
add ecx, 0xc
mov dword [edx + 8], ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], ecx
jmp 0x5959e4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov ebp, dword [esi + 0x544]
mov edx, ecx
mov dword [edx], ebp
mov ebp, dword [esi + 0x548]
mov dword [esp + eax*4 + 0x160], edi
mov dword [edx + 4], ebp
mov ebp, dword [esi + 0x54c]
mov byte [esp + eax + 0x34], 0
inc eax
add ecx, 0xc
mov dword [edx + 8], ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], ecx
jmp 0x595c62
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov ebp, dword [esi + 0x564]
mov edx, ecx
mov dword [edx], ebp
mov ebp, dword [esi + 0x568]
mov dword [esp + eax*4 + 0x160], edi
mov dword [edx + 4], ebp
mov ebp, dword [esi + 0x56c]
mov byte [esp + eax + 0x34], 0
inc eax
add ecx, 0xc
mov dword [edx + 8], ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], ecx
jmp 0x595ed4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov ebp, dword [esi + 0x584]
mov edx, ecx
mov dword [edx], ebp
mov ebp, dword [esi + 0x588]
mov dword [esp + eax*4 + 0x160], edi
mov dword [edx + 4], ebp
mov ebp, dword [esi + 0x58c]
mov byte [esp + eax + 0x34], 0
inc eax
add ecx, 0xc
mov dword [edx + 8], ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], ecx
jmp 0x59615f
mov ecx, dword [esp + eax*4 + 0x160]
push ecx
mov ecx, 0x96f050
call fcn.0044df60
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
inc eax
dec edi
add esi, 0xc
cmp eax, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edi
jl 0x596260
push 0
mov ecx, 0x96f050
call fcn.00452270
mov edx, dword [esp + 0x2c]
pop edi
pop ebp
mov byte [edx + 0xb8], 1
pop ebx
pop esi
add esp, 0x250
ret