Function at 0x559410
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x5c
push ebx
mov ebx, dword [esp + 0x64]
push ebp
push esi
mov esi, dword [esp + 0x70]
mov byte [esi + 0xc], 1
mov eax, dword [ebx]
mov edx, dword [eax + 0x40]
push edi
mov edi, dword [esp + 0x7c]
mov ecx, ebx
call edx
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
mov esi, eax
test esi, esi
je 0x55a85a
mov ebp, dword [esi + 0x4c]
mov dword [esp + 0x30], ebp
test ebp, ebp
jne 0x559e40
mov eax, dword [esi]
mov edx, dword [eax + 0x40]
mov ecx, esi
call edx
mov dword [esp + 0x38], eax
mov eax, dword [ebx]
mov edx, dword [eax + 0x40]
mov ecx, ebx
call edx
mov dword [esp + 0x50], eax
mov eax, esi
call fcn.0045a0e0
fld qword [edi]
sub esp, 8
fstp qword [esp]
mov dword [esp + 0x24], eax
call fcn.0076fcb0
call fcn.0076f850
fld qword [edi + 8]
mov esi, eax
fstp qword [esp]
mov dword [esp + 0x30], esi
call fcn.0076fcb0
call fcn.0076f850
fild dword [esp + 0x30]
mov ebx, eax
mov dword [esp + 0x20], ebx
fsubr qword [edi]
fadd qword [edi + 0x10]
fstp qword [esp]
call fcn.00645c10
call fcn.0076f850
fild dword [esp + 0x20]
mov ebp, eax
mov dword [esp + 0x2c], ebp
fsubr qword [edi + 8]
fadd qword [edi + 0x18]
fstp qword [esp]
call fcn.00645c10
add esp, 8
call fcn.0076f850
mov dword [esp + 0x14], eax
test esi, esi
jge 0x5594e9
xor esi, esi
mov dword [esp + 0x28], esi
test ebx, ebx
jge 0x5594f3
xor ebx, ebx
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx + 0x2c]
lea edx, [esi + ebp]
cmp edx, ecx
jle 0x559509
sub ecx, esi
mov ebp, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx + 0x30]
lea edx, [eax + ebx]
cmp edx, ecx
jle 0x55951f
sub ecx, ebx
mov eax, ecx
mov dword [esp + 0x14], ecx
test ebp, ebp
jle 0x55a85a
test eax, eax
jle 0x55a85a
mov ebx, dword [esp + 0x78]
mov ebp, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
add ebp, 4
mov esi, ebp
imul esi, dword [esp + 0x14]
add eax, 4
mov dword [esp + 0x48], eax
xor ecx, ecx
lea eax, [esi*4]
mov edx, 4
mul edx
seto cl
mov dword [esp + 0x34], ebp
neg ecx
or ecx, eax
push ecx
call fcn.0063265d
shl esi, 4
push esi
push 0
push eax
mov dword [esp + 0x84], eax
call fcn.0064edd0
mov ecx, dword [ebx + 8]
mov dword [esp + 0x3c], ecx
fild dword [esp + 0x3c]
add esp, 0x10
fcom qword [edi + 0x10]
fnstsw ax
test ah, 0x41
jp 0x5597a9
cmp dword [esp + 0x24], 0
fdiv qword [edi + 0x10]
mov dword [esp + 0x2c], 0
fild dword [esp + 0x28]
fsub qword [edi]
fmul st(1)
fadd qword [0x7a8008]
jle 0x559927
mov eax, dword [esp + 0x18]
fld qword [0x82de20]
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
lea edx, [ecx + eax*4]
mov dword [esp + 0x28], edx
fild dword [esp + 0x2c]
fmul st(3)
fadd st(2)
fld st(0)
fadd st(4)
fld st(1)
call fcn.0076f850
fld st(0)
mov ebx, eax
call fcn.0076f850
mov edi, dword [esp + 0x28]
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], edi
cmp ebx, eax
jne 0x55969c
fstp st(1)
shl ebx, 4
add ebx, dword [esp + 0x74]
fstp st(0)
fld st(2)
fmul st(1)
mov esi, ebx
call fcn.0076f850
cmp dword [esp + 0x14], 0
jle 0x559780
mov edx, dword [esp + 0x1c]
mov ecx, ebp
shl ecx, 4
add ecx, 0xfffffff4
mov dword [esp + 0x30], ecx
lea ecx, [edx*4]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x38], ecx
mov ecx, dword [edi]
movzx ebx, cl
imul ebx, eax
add dword [esi], ebx
mov ebx, ecx
shr ebx, 8
and ebx, 0xff
imul ebx, eax
add dword [esi + 4], ebx
add edi, dword [esp + 0x38]
add esi, 4
mov ebx, ecx
shr ebx, 0x10
and ebx, 0xff
imul ebx, eax
add dword [esi + 4], ebx
shr ecx, 0x18
imul ecx, eax
add esi, 4
add dword [esi + 4], ecx
add esi, 4
add esi, dword [esp + 0x30]
sub edx, 1
jne 0x55964c
jmp 0x559780
fild dword [esp + 0x38]
fld st(0)
fsubrp st(3)
fxch st(2)
fmul st(3)
call fcn.0076f850
fsubrp st(1)
mov esi, eax
mov dword [esp + 0x30], esi
fmul st(1)
call fcn.0076f850
shl ebx, 4
add ebx, dword [esp + 0x74]
cmp dword [esp + 0x14], 0
mov ecx, ebx
jle 0x559780
mov edx, dword [esp + 0x14]
shl ebp, 4
add ebp, 0xffffffe4
mov dword [esp + 0x40], ebp
mov dword [esp + 0x38], edx
jmp 0x5596e8
mov esi, dword [esp + 0x30]
mov ebx, dword [edi]
mov edi, ebx
and edi, 0xff
mov edx, edi
imul edi, eax
imul edx, esi
add dword [ecx], edx
mov edx, ebx
shr edx, 8
and edx, 0xff
mov ebp, edx
imul edx, eax
imul ebp, esi
add dword [ecx + 4], ebp
add ecx, 4
mov esi, ebx
shr esi, 0x10
and esi, 0xff
mov ebp, esi
imul esi, eax
imul ebp, dword [esp + 0x30]
add dword [ecx + 4], ebp
add ecx, 4
shr ebx, 0x18
mov ebp, ebx
imul ebx, eax
imul ebp, dword [esp + 0x30]
add dword [ecx + 4], ebp
add ecx, 4
add dword [ecx + 4], edi
mov edi, dword [esp + 0x20]
add ecx, 4
add dword [ecx + 4], edx
mov edx, dword [esp + 0x1c]
add ecx, 4
add dword [ecx + 4], esi
add ecx, 4
add dword [ecx + 4], ebx
add ecx, 4
add ecx, dword [esp + 0x40]
add edx, edx
add edx, edx
add edi, edx
sub dword [esp + 0x38], 1
mov dword [esp + 0x20], edi
jne 0x5596e4
mov ebp, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
add dword [esp + 0x28], 4
inc eax
cmp eax, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
jl 0x5595dc
mov edi, dword [esp + 0x7c]
fstp st(2)
mov ebx, dword [esp + 0x78]
fstp st(1)
jmp 0x55992d
fld qword [0x7a8008]
cmp ecx, 1
je 0x5597c8
fstp st(1)
dec ecx
fld qword [edi + 0x10]
mov dword [esp + 0x40], ecx
fsub st(1)
fild dword [esp + 0x40]
fdivp st(1)
jmp 0x5597cf
fld qword [edi + 0x10]
fdivrp st(2)
fxch st(1)
lea eax, [ebp - 1]
cmp eax, 1
mov dword [esp + 0x2c], 1
jle 0x55992b
mov eax, dword [esp + 0x18]
fld qword [0x82de20]
imul eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x74]
add esi, 0x10
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x7c]
dec eax
mov dword [esp + 0x40], eax
fild dword [esp + 0x40]
fmul st(2)
fadd qword [ecx]
fld st(0)
call fcn.0076f850
mov ebx, eax
mov dword [esp + 0x40], ebx
fisub dword [esp + 0x40]
fsubr st(3)
fmul st(1)
call fcn.0076f850
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
mov edi, 0x101
add edx, ebx
sub edi, eax
cmp dword [esp + 0x14], 0
lea ecx, [ecx + edx*4]
jle 0x5598fa
mov edx, dword [esp + 0x14]
shl ebp, 4
add ebp, 0xfffffff4
mov dword [esp + 0x30], ebp
mov dword [esp + 0x28], edx
mov edx, dword [ecx]
add ecx, 4
mov dword [esp + 0x40], ecx
mov ecx, dword [ecx]
movzx ebx, cl
imul ebx, edi
movzx ebp, dl
imul ebp, eax
add ebx, ebp
mov dword [esi], ebx
mov ebx, ecx
shr ebx, 8
mov ebp, edx
shr ebp, 8
and ebx, 0xff
and ebp, 0xff
imul ebx, edi
imul ebp, eax
add ebx, ebp
mov dword [esi + 4], ebx
add esi, 4
mov ebx, ecx
mov ebp, edx
shr ebx, 0x10
shr ebp, 0x10
and ebx, 0xff
and ebp, 0xff
imul ebx, edi
shr ecx, 0x18
imul ebp, eax
shr edx, 0x18
imul ecx, edi
imul edx, eax
add esi, 4
add ecx, edx
mov edx, dword [esp + 0x1c]
add ebx, ebp
mov dword [esi], ebx
add esi, 4
mov dword [esi], ecx
mov ecx, dword [esp + 0x40]
add esi, dword [esp + 0x30]
lea edx, [edx*4 - 4]
add ecx, edx
sub dword [esp + 0x28], 1
jne 0x559861
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
inc ecx
add esi, 0x10
lea eax, [ebp - 1]
cmp ecx, eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x24], esi
jl 0x559801
mov ebx, dword [esp + 0x78]
fstp st(1)
mov edi, dword [esp + 0x7c]
fstp st(1)
jmp 0x55992d
fstp st(1)
jmp 0x55992d
fstp st(0)
mov esi, dword [esp + 0x48]
fstp st(0)
imul esi, ebp
xor ecx, ecx
lea eax, [esi*4]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0063265d
shl esi, 4
push esi
push 0
push eax
mov dword [esp + 0x30], eax
call fcn.0064edd0
mov ebx, dword [ebx + 0xc]
mov dword [esp + 0x3c], ebx
fild dword [esp + 0x3c]
add esp, 0x10
fcom qword [edi + 0x18]
fnstsw ax
test ah, 0x41
jp 0x559b53
cmp dword [esp + 0x14], 0
fdiv qword [edi + 0x18]
mov dword [esp + 0x7c], 0
fst qword [esp + 0x60]
fild dword [esp + 0x18]
fsub qword [edi + 8]
fmul st(1)
fadd qword [0x7a8008]
fstp qword [esp + 0x48]
jle 0x559cc9
mov eax, ebp
shl eax, 4
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x30], eax
fild dword [esp + 0x7c]
sub esp, 8
fmul st(1)
fadd qword [esp + 0x50]
fst qword [esp + 0x48]
fld st(0)
faddp st(2)
fxch st(1)
fstp qword [esp + 0x60]
fstp qword [esp]
call fcn.0076fcb0
call fcn.0076f850
fld qword [esp + 0x60]
fstp qword [esp]
mov edi, eax
call fcn.0076fcb0
add esp, 8
call fcn.0076f850
mov esi, dword [esp + 0x30]
mov dword [esp + 0x38], eax
cmp edi, eax
jne 0x559a70
fld qword [esp + 0x60]
imul edi, ebp
fld qword [0x82dd40]
fmul st(1)
shl edi, 4
add edi, dword [esp + 0x20]
call fcn.0076f850
test ebp, ebp
jle 0x559b33
mov ecx, ebp
mov edx, dword [esi]
imul edx, eax
add dword [edi], edx
mov edx, dword [esi + 4]
add esi, 4
imul edx, eax
add dword [edi + 4], edx
mov edx, dword [esi + 4]
add edi, 4
imul edx, eax
add dword [edi + 4], edx
add esi, 4
mov edx, dword [esi + 4]
add edi, 4
imul edx, eax
add dword [edi + 4], edx
add esi, 4
add edi, 4
add esi, 4
add edi, 4
sub ecx, 1
jne 0x559a2c
jmp 0x559b33
fild dword [esp + 0x38]
fld qword [esp + 0x40]
fsubr st(1)
fld qword [0x82dd40]
fmul st(1), st(0)
fxch st(1)
call fcn.0076f850
fld qword [esp + 0x58]
fsubrp st(2)
mov ebx, eax
fmulp st(1)
call fcn.0076f850
imul edi, ebp
mov edx, dword [esp + 0x20]
shl edi, 4
add edi, edx
mov ecx, edi
mov edi, dword [esp + 0x38]
imul edi, ebp
shl edi, 4
add edi, edx
mov edx, edi
test ebp, ebp
jle 0x559b2f
mov dword [esp + 0x38], ebp
lea esp, [esp]
mov edi, dword [esi]
imul edi, ebx
add dword [ecx], edi
mov edi, dword [esi]
imul edi, eax
add dword [edx], edi
mov edi, dword [esi + 4]
imul edi, ebx
add dword [ecx + 4], edi
mov edi, dword [esi + 4]
add esi, 4
imul edi, eax
add dword [edx + 4], edi
mov edi, dword [esi + 4]
add ecx, 4
imul edi, ebx
add dword [ecx + 4], edi
mov edi, dword [esi + 4]
add edx, 4
imul edi, eax
add dword [edx + 4], edi
add esi, 4
mov edi, dword [esi + 4]
add ecx, 4
imul edi, ebx
add dword [ecx + 4], edi
mov edi, dword [esi + 4]
add edx, 4
imul edi, eax
add dword [edx + 4], edi
add esi, 4
add ecx, 4
add edx, 4
add ecx, 4
add esi, 4
add edx, 4
sub dword [esp + 0x38], 1
jne 0x559ac0
fld qword [esp + 0x60]
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x30], ecx
inc eax
cmp eax, dword [esp + 0x14]
mov dword [esp + 0x7c], eax
jl 0x5599bd
jmp 0x559cc9
cmp ebx, 1
je 0x559b74
fstp st(0)
lea edx, [ebx - 1]
fld qword [edi + 0x18]
mov dword [esp + 0x48], edx
fld qword [0x7a8008]
fsub st(1), st(0)
fild dword [esp + 0x48]
fdivp st(2)
jmp 0x559b7d
fdivr qword [edi + 0x18]
fld qword [0x7a8008]
inc ebx
cmp ebx, 1
mov dword [esp + 0x30], 1
jle 0x559e39
mov eax, dword [esp + 0x14]
fld qword [0x82dd40]
mov ecx, dword [esp + 0x20]
dec eax
mov dword [esp + 0x40], eax
mov eax, ebp
shl eax, 4
lea esi, [eax + ecx + 0x10]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], esi
jmp 0x559bb9
mov edi, dword [esp + 0x7c]
fld qword [edi + 8]
fld st(0)
call fcn.0076f850
mov edx, dword [esp + 0x30]
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
dec edx
mov dword [esp + 0x48], edx
fsubp st(1)
fild dword [esp + 0x48]
fmul st(4)
faddp st(1)
fld st(0)
call fcn.0076f850
mov ebx, eax
mov dword [esp + 0x48], ebx
fisub dword [esp + 0x48]
fsubr st(2)
fmul st(1)
call fcn.0076f850
mov ecx, ebx
imul ecx, ebp
inc ecx
shl ecx, 4
add ecx, dword [esp + 0x74]
mov edi, 0x100
sub edi, eax
cmp ebx, dword [esp + 0x40]
jne 0x559c16
mov edx, ecx
jmp 0x559c24
lea edx, [ebx + 1]
imul edx, ebp
inc edx
shl edx, 4
add edx, dword [esp + 0x74]
lea ebx, [ebp - 1]
cmp ebx, 1
jle 0x559ca0
dec ebx
mov dword [esp + 0x38], ebx
mov ebx, dword [edx]
mov ebp, dword [ecx]
imul ebx, edi
imul ebp, eax
add ebx, ebp
mov dword [esi], ebx
mov ebx, dword [edx + 4]
mov ebp, dword [ecx + 4]
imul ebx, edi
add edx, 4
imul ebp, eax
add ecx, 4
add ebx, ebp
mov dword [esi + 4], ebx
mov ebx, dword [edx + 4]
mov ebp, dword [ecx + 4]
imul ebx, edi
add esi, 4
imul ebp, eax
add edx, 4
add ecx, 4
add ebx, ebp
mov dword [esi + 4], ebx
mov ebx, dword [edx + 4]
mov ebp, dword [ecx + 4]
imul ebx, edi
add esi, 4
imul ebp, eax
add edx, 4
add ecx, 4
add esi, 4
add ebx, ebp
mov dword [esi], ebx
add esi, 4
add edx, 4
add ecx, 4
sub dword [esp + 0x38], 1
jne 0x559c31
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
mov edx, dword [ecx + 0xc]
add esi, dword [esp + 0x1c]
inc eax
inc edx
cmp eax, edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], esi
jl 0x559bb5
fstp st(2)
fstp st(0)
mov ecx, dword [esp + 0x78]
fstp st(0)
xor edx, edx
cmp dword [ecx + 0xc], edx
mov dword [esp + 0x30], edx
jle 0x559e25
mov eax, dword [esp + 0x20]
shl ebp, 4
lea ebx, [eax + ebp + 0x18]
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x2c], ebx
mov eax, dword [ecx + 4]
mov esi, dword [esp + 0x70]
add eax, edx
imul eax, dword [esi + 0x2c]
add eax, dword [ecx]
cmp dword [ecx + 8], 0
mov esi, dword [esp + 0x50]
lea eax, [esi + eax*4]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x38], 0
jle 0x559e0d
mov dword [esp + 0x34], ebx
movzx ebp, word [ebx + 6]
movzx edx, word [ebx - 6]
mov dword [esp + 0x48], edx
test ebp, ebp
je 0x559de5
mov ecx, dword [eax]
mov edi, ecx
shr edi, 0x18
mov esi, 0xff
sub esi, edi
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
imul eax, eax, 0xff
sar edx, 7
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, edi
cdq
idiv esi
movzx edi, word [ebx + 2]
mov ebx, ecx
and ebx, 0xff0000
mov edx, 0x100
shl esi, 0x18
sub edx, eax
imul edi, eax
imul ebx, edx
shr ebx, 8
and ebx, 0xff0000
and edi, 0xffffff00
shl edi, 8
add edi, ebx
movzx ebx, cl
imul ebx, edx
mov ebp, eax
imul ebp, dword [esp + 0x48]
shr ebx, 8
and ebx, 0xff
sar ebp, 8
and ecx, 0xff00
add ebx, ebp
imul ecx, edx
or edi, ebx
mov ebx, dword [esp + 0x34]
movzx edx, word [ebx - 2]
imul eax, edx
shr ecx, 8
and ecx, 0xff00
and eax, 0xffffff00
add ecx, eax
mov eax, dword [esp + 0x7c]
or edi, ecx
mov ecx, dword [esp + 0x78]
or edi, esi
mov dword [eax], edi
mov edx, dword [esp + 0x38]
inc edx
add eax, 4
add ebx, 0x10
cmp edx, dword [ecx + 8]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], ebx
jl 0x559d21
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x2c]
inc edx
add ebx, ebp
cmp edx, dword [ecx + 0xc]
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ebx
jl 0x559cf1
mov eax, dword [esp + 0x20]
push eax
call fcn.00644b73
mov ecx, dword [esp + 0x78]
push ecx
jmp 0x55a847
fstp st(1)
jmp 0x559cc9
mov edx, dword [esi + 0x50]
mov eax, dword [ebx]
mov dword [esp + 0x38], edx
mov edx, dword [eax + 0x40]
mov ecx, ebx
call edx
mov dword [esp + 0x60], eax
mov eax, esi
call fcn.0045a0e0
fld qword [edi]
sub esp, 8
fstp qword [esp]
mov dword [esp + 0x30], eax
call fcn.0076fcb0
call fcn.0076f850
fld qword [edi + 8]
mov esi, eax
fstp qword [esp]
mov dword [esp + 0x28], esi
call fcn.0076fcb0
call fcn.0076f850
fild dword [esp + 0x28]
mov dword [esp + 0x24], eax
fsubr qword [edi]
fadd qword [edi + 0x10]
fstp qword [esp]
call fcn.00645c10
call fcn.0076f850
fild dword [esp + 0x24]
mov dword [esp + 0x2c], eax
fsubr qword [edi + 8]
fadd qword [edi + 0x18]
fstp qword [esp]
call fcn.00645c10
add esp, 8
call fcn.0076f850
mov dword [esp + 0x14], eax
test esi, esi
jge 0x559ecf
mov dword [esp + 0x20], 0
mov edx, dword [esp + 0x1c]
test edx, edx
jge 0x559edd
xor edx, edx
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
mov eax, dword [esi + 0x2c]
add ebx, ecx
cmp ebx, eax
jle 0x559ef8
sub eax, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x30]
mov ecx, dword [esp + 0x14]
lea esi, [ecx + edx]
cmp esi, eax
jle 0x559f0e
sub eax, edx
mov ecx, eax
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x24], 0
jle 0x55a85a
test ecx, ecx
jle 0x55a85a
mov ebx, dword [esp + 0x78]
mov esi, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
add esi, 4
mov dword [esp + 0x74], esi
imul esi, ecx
add eax, 4
mov dword [esp + 0x58], eax
xor ecx, ecx
lea eax, [esi*4]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0063265d
shl esi, 4
push esi
push 0
push eax
mov dword [esp + 0x28], eax
call fcn.0064edd0
mov ebx, dword [ebx + 8]
mov dword [esp + 0x3c], ebx
fild dword [esp + 0x3c]
add esp, 0x10
fcom qword [edi + 0x10]
fnstsw ax
test ah, 0x41
jp 0x55a190
cmp dword [esp + 0x24], 0
fdiv qword [edi + 0x10]
mov dword [esp + 0x2c], 0
fild dword [esp + 0x20]
fsub qword [edi]
fmul st(1)
fadd qword [0x7a8008]
jle 0x55a313
mov eax, dword [esp + 0x1c]
fld qword [0x82de20]
imul eax, dword [esp + 0x28]
add eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
add eax, ecx
mov dword [esp + 0x50], eax
fild dword [esp + 0x2c]
fmul st(3)
fadd st(2)
fld st(0)
fadd st(4)
fld st(1)
call fcn.0076f850
fld st(0)
mov esi, eax
call fcn.0076f850
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
lea edi, [edx + ecx]
mov dword [esp + 0x48], eax
mov dword [esp + 0x38], edi
cmp esi, eax
jne 0x55a083
fstp st(1)
shl esi, 4
add esi, dword [esp + 0x18]
fstp st(0)
fld st(2)
fmul st(1)
call fcn.0076f850
cmp dword [esp + 0x14], 0
jle 0x55a170
mov edx, dword [esp + 0x74]
shl edx, 4
add edx, 0xfffffff4
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x14]
movzx ecx, byte [edi]
mov ecx, dword [ebp + ecx*4]
movzx ebx, cl
imul ebx, eax
add dword [esi], ebx
mov ebx, ecx
shr ebx, 8
and ebx, 0xff
imul ebx, eax
add dword [esi + 4], ebx
add edi, dword [esp + 0x28]
add esi, 4
mov ebx, ecx
shr ebx, 0x10
and ebx, 0xff
imul ebx, eax
add dword [esi + 4], ebx
shr ecx, 0x18
imul ecx, eax
add esi, 4
add dword [esi + 4], ecx
add esi, 4
add esi, dword [esp + 0x34]
sub edx, 1
jne 0x55a02e
jmp 0x55a170
fild dword [esp + 0x48]
fld st(0)
fsubrp st(3)
fxch st(2)
fmul st(3)
call fcn.0076f850
fsubrp st(1)
mov ebx, eax
fmul st(1)
call fcn.0076f850
shl esi, 4
add esi, dword [esp + 0x18]
cmp dword [esp + 0x14], 0
mov ecx, esi
jle 0x55a170
mov edx, dword [esp + 0x74]
shl edx, 4
add edx, 0xffffffe4
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x34], edx
movzx edx, byte [edi]
mov edi, dword [ebp + edx*4]
mov edx, edi
and edx, 0xff
mov esi, ebx
imul esi, edx
add dword [ecx], esi
mov dword [esp + 0x48], edx
mov edx, edi
shr edx, 8
and edx, 0xff
mov esi, ebx
imul esi, edx
add dword [ecx + 4], esi
add ecx, 4
mov esi, edi
shr esi, 0x10
and esi, 0xff
mov ebp, ebx
imul ebp, esi
add dword [ecx + 4], ebp
add ecx, 4
shr edi, 0x18
mov dword [esp + 0x40], edi
mov ebp, ebx
imul ebp, edi
add dword [ecx + 4], ebp
mov edi, eax
imul edi, dword [esp + 0x48]
add ecx, 4
add dword [ecx + 4], edi
add ecx, 4
mov edi, eax
imul edi, edx
add dword [ecx + 4], edi
mov edi, dword [esp + 0x38]
add edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
mov edx, eax
imul edx, esi
add ecx, 4
add dword [ecx + 4], edx
add ecx, 4
mov edx, eax
imul edx, dword [esp + 0x40]
add dword [ecx + 4], edx
add ecx, 4
add ecx, dword [esp + 0x20]
sub dword [esp + 0x34], 1
mov dword [esp + 0x38], edi
jne 0x55a0c9
mov eax, dword [esp + 0x2c]
inc eax
cmp eax, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
jl 0x559fc6
mov edi, dword [esp + 0x7c]
fstp st(2)
fstp st(1)
jmp 0x55a319
fld qword [0x7a8008]
cmp ebx, 1
je 0x55a1af
fstp st(1)
dec ebx
fld qword [edi + 0x10]
mov dword [esp + 0x50], ebx
fsub st(1)
fild dword [esp + 0x50]
fdivp st(1)
jmp 0x55a1b6
fld qword [edi + 0x10]
fdivrp st(2)
fxch st(1)
mov eax, dword [esp + 0x74]
mov ebx, 1
dec eax
cmp eax, ebx
mov dword [esp + 0x2c], ebx
jle 0x55a317
mov eax, dword [esp + 0x1c]
fld qword [0x82de20]
imul eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x18]
add eax, ecx
add esi, 0x10
mov dword [esp + 0x48], eax
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x7c]
lea edx, [ebx - 1]
mov dword [esp + 0x50], edx
fild dword [esp + 0x50]
fmul st(2)
fadd qword [eax]
fld st(0)
call fcn.0076f850
mov dword [esp + 0x38], eax
fisub dword [esp + 0x38]
fsubr st(3)
fmul st(1)
call fcn.0076f850
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x48]
mov edi, 0x101
sub edi, eax
add ecx, edx
cmp dword [esp + 0x14], 0
jle 0x55a2ec
mov edx, dword [esp + 0x74]
shl edx, 4
add edx, 0xfffffff4
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x38], edx
movzx edx, byte [ecx]
mov edx, dword [ebp + edx*4]
inc ecx
mov dword [esp + 0x50], ecx
movzx ecx, byte [ecx]
mov ecx, dword [ebp + ecx*4]
movzx ebx, cl
imul ebx, edi
movzx ebp, dl
imul ebp, eax
add ebx, ebp
mov dword [esi], ebx
mov ebx, ecx
shr ebx, 8
mov ebp, edx
shr ebp, 8
and ebx, 0xff
and ebp, 0xff
imul ebx, edi
imul ebp, eax
add ebx, ebp
mov dword [esi + 4], ebx
add esi, 4
mov ebx, ecx
mov ebp, edx
shr ebx, 0x10
shr ebp, 0x10
and ebx, 0xff
and ebp, 0xff
imul ebx, edi
shr ecx, 0x18
imul ebp, eax
shr edx, 0x18
imul ecx, edi
imul edx, eax
add esi, 4
add ebx, ebp
mov ebp, dword [esp + 0x30]
add ecx, edx
mov edx, dword [esp + 0x28]
mov dword [esi], ebx
add esi, 4
mov dword [esi], ecx
mov ecx, dword [esp + 0x50]
add esi, dword [esp + 0x34]
dec edx
add ecx, edx
sub dword [esp + 0x38], 1
jne 0x55a24d
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x74]
inc ebx
add esi, 0x10
dec eax
cmp ebx, eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x24], esi
jl 0x55a1f0
mov edi, dword [esp + 0x7c]
fstp st(1)
fstp st(1)
jmp 0x55a319
fstp st(1)
jmp 0x55a319
fstp st(0)
mov esi, dword [esp + 0x58]
fstp st(0)
imul esi, dword [esp + 0x74]
xor ecx, ecx
lea eax, [esi*4]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0063265d
shl esi, 4
push esi
mov ebx, eax
push 0
push ebx
mov dword [esp + 0x40], ebx
call fcn.0064edd0
mov eax, dword [esp + 0x88]
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x3c], ecx
fild dword [esp + 0x3c]
add esp, 0x10
fcom qword [edi + 0x18]
fnstsw ax
test ah, 0x41
jp 0x55a551
cmp dword [esp + 0x14], 0
fdiv qword [edi + 0x18]
mov dword [esp + 0x7c], 0
fst qword [esp + 0x50]
fild dword [esp + 0x1c]
fsub qword [edi + 8]
fmul st(1)
fadd qword [0x7a8008]
fstp qword [esp + 0x40]
jle 0x55a6c3
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x18]
shl eax, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], ecx
fild dword [esp + 0x7c]
sub esp, 8
fmul st(1)
fadd qword [esp + 0x48]
fst qword [esp + 0x40]
fld st(0)
faddp st(2)
fxch st(1)
fstp qword [esp + 0x50]
fstp qword [esp]
call fcn.0076fcb0
call fcn.0076f850
fld qword [esp + 0x50]
fstp qword [esp]
mov edi, eax
call fcn.0076fcb0
add esp, 8
call fcn.0076f850
mov esi, dword [esp + 0x34]
mov ebp, eax
mov dword [esp + 0x58], ebp
cmp edi, ebp
jne 0x55a46f
mov ebx, dword [esp + 0x74]
fld qword [esp + 0x50]
fld qword [0x82dd40]
imul edi, ebx
fmul st(1)
shl edi, 4
add edi, dword [esp + 0x30]
call fcn.0076f850
test ebx, ebx
jle 0x55a531
mov ecx, ebx
mov edx, dword [esi]
imul edx, eax
add dword [edi], edx
mov edx, dword [esi + 4]
add esi, 4
imul edx, eax
add dword [edi + 4], edx
mov edx, dword [esi + 4]
add edi, 4
imul edx, eax
add dword [edi + 4], edx
add esi, 4
mov edx, dword [esi + 4]
add edi, 4
imul edx, eax
add dword [edi + 4], edx
add esi, 4
add edi, 4
add esi, 4
add edi, 4
sub ecx, 1
jne 0x55a42b
jmp 0x55a531
fild dword [esp + 0x58]
fld qword [esp + 0x38]
fsubr st(1)
fld qword [0x82dd40]
fmul st(1), st(0)
fxch st(1)
call fcn.0076f850
fld qword [esp + 0x48]
fsubrp st(2)
mov ebx, eax
fmulp st(1)
call fcn.0076f850
imul edi, dword [esp + 0x74]
imul ebp, dword [esp + 0x74]
mov edx, dword [esp + 0x30]
shl edi, 4
shl ebp, 4
add edi, edx
add ebp, edx
cmp dword [esp + 0x74], 0
mov ecx, edi
mov edx, ebp
jle 0x55a52d
mov edi, dword [esp + 0x74]
mov edi, edi
mov ebp, dword [esi]
imul ebp, ebx
add dword [ecx], ebp
mov ebp, dword [esi]
imul ebp, eax
add dword [edx], ebp
mov ebp, dword [esi + 4]
imul ebp, ebx
add dword [ecx + 4], ebp
mov ebp, dword [esi + 4]
add esi, 4
imul ebp, eax
add dword [edx + 4], ebp
mov ebp, dword [esi + 4]
add ecx, 4
imul ebp, ebx
add dword [ecx + 4], ebp
mov ebp, dword [esi + 4]
add edx, 4
imul ebp, eax
add dword [edx + 4], ebp
add esi, 4
mov ebp, dword [esi + 4]
add ecx, 4
imul ebp, ebx
add dword [ecx + 4], ebp
mov ebp, dword [esi + 4]
add edx, 4
imul ebp, eax
add dword [edx + 4], ebp
add esi, 4
add ecx, 4
add edx, 4
add ecx, 4
add esi, 4
add edx, 4
sub edi, 1
jne 0x55a4c0
fld qword [esp + 0x50]
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x28]
add dword [esp + 0x34], ecx
inc eax
cmp eax, dword [esp + 0x14]
mov dword [esp + 0x7c], eax
jl 0x55a3b6
jmp 0x55a6c3
cmp ecx, 1
je 0x55a572
fstp st(0)
lea edx, [ecx - 1]
fld qword [edi + 0x18]
mov dword [esp + 0x58], edx
fld qword [0x7a8008]
fsub st(1), st(0)
fild dword [esp + 0x58]
fdivp st(2)
jmp 0x55a57b
fdivr qword [edi + 0x18]
fld qword [0x7a8008]
inc ecx
cmp ecx, 1
mov dword [esp + 0x34], 1
jle 0x55a864
mov eax, dword [esp + 0x14]
fld qword [0x82dd40]
dec eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x74]
shl eax, 4
lea esi, [ebx + eax + 0x10]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], esi
jmp 0x55a5b5
mov edi, dword [esp + 0x7c]
fld qword [edi + 8]
fld st(0)
call fcn.0076f850
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x58], eax
fild dword [esp + 0x58]
dec ecx
mov dword [esp + 0x58], ecx
fsubp st(1)
fild dword [esp + 0x58]
fmul st(4)
faddp st(1)
fld st(0)
call fcn.0076f850
mov ebp, eax
mov dword [esp + 0x58], ebp
fisub dword [esp + 0x58]
fsubr st(2)
fmul st(1)
call fcn.0076f850
mov ebx, dword [esp + 0x74]
mov ecx, ebp
imul ecx, ebx
inc ecx
shl ecx, 4
add ecx, dword [esp + 0x18]
mov edi, 0x100
sub edi, eax
cmp ebp, dword [esp + 0x50]
jne 0x55a616
mov edx, ecx
jmp 0x55a624
lea edx, [ebp + 1]
imul edx, ebx
inc edx
shl edx, 4
add edx, dword [esp + 0x18]
dec ebx
cmp ebx, 1
jle 0x55a69a
dec ebx
mov dword [esp + 0x38], ebx
mov ebx, dword [ecx]
mov ebp, dword [edx]
imul ebx, eax
imul ebp, edi
add ebx, ebp
mov dword [esi], ebx
mov ebx, dword [ecx + 4]
mov ebp, dword [edx + 4]
imul ebx, eax
add edx, 4
imul ebp, edi
add ecx, 4
add ebx, ebp
mov dword [esi + 4], ebx
mov ebx, dword [ecx + 4]
mov ebp, dword [edx + 4]
imul ebx, eax
add esi, 4
imul ebp, edi
add edx, 4
add ecx, 4
add ebx, ebp
mov dword [esi + 4], ebx
mov ebx, dword [ecx + 4]
mov ebp, dword [edx + 4]
imul ebx, eax
add esi, 4
imul ebp, edi
add edx, 4
add ecx, 4
add esi, 4
add ebx, ebp
mov dword [esi], ebx
add esi, 4
add edx, 4
add ecx, 4
sub dword [esp + 0x38], 1
jne 0x55a62f
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x2c]
mov ecx, dword [edx + 0xc]
add esi, dword [esp + 0x28]
inc eax
inc ecx
cmp eax, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], esi
jl 0x55a5b1
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x78]
fstp st(0)
xor edx, edx
cmp dword [eax + 0xc], edx
mov dword [esp + 0x34], edx
jle 0x55a838
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x30]
shl eax, 4
mov esi, eax
lea ebx, [ecx + esi + 0x18]
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ebx
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 4]
mov edi, dword [esp + 0x70]
add eax, edx
imul eax, dword [edi + 0x2c]
add eax, dword [ecx]
cmp dword [ecx + 8], 0
mov edi, dword [esp + 0x60]
lea eax, [edi + eax*4]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x74], 0
jle 0x55a81c
mov dword [esp + 0x38], ebx
jmp 0x55a730
movzx ebp, word [ebx + 6]
movzx ecx, word [ebx - 6]
mov dword [esp + 0x58], ecx
test ebp, ebp
je 0x55a7f0
mov ecx, dword [eax]
mov edi, ecx
shr edi, 0x18
mov esi, 0xff
sub esi, edi
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
imul eax, eax, 0xff
sar edx, 7
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, edi
cdq
idiv esi
movzx edi, word [ebx + 2]
mov ebx, ecx
and ebx, 0xff0000
mov edx, 0x100
shl esi, 0x18
sub edx, eax
imul edi, eax
imul ebx, edx
shr ebx, 8
and ebx, 0xff0000
and edi, 0xffffff00
shl edi, 8
add edi, ebx
movzx ebx, cl
imul ebx, edx
mov ebp, eax
imul ebp, dword [esp + 0x58]
shr ebx, 8
and ebx, 0xff
sar ebp, 8
add ebx, ebp
and ecx, 0xff00
or edi, ebx
imul ecx, edx
mov ebx, dword [esp + 0x38]
movzx edx, word [ebx - 2]
imul eax, edx
shr ecx, 8
and eax, 0xffffff00
and ecx, 0xff00
add ecx, eax
mov eax, dword [esp + 0x7c]
or edi, ecx
or edi, esi
mov dword [eax], edi
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
inc ecx
add eax, 4
add ebx, 0x10
cmp ecx, dword [edx + 8]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x74], ecx
mov dword [esp + 0x38], ebx
jl 0x55a730
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x78]
inc edx
add ebx, esi
cmp edx, dword [eax + 0xc]
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], ebx
jl 0x55a6f1
mov ecx, dword [esp + 0x30]
push ecx
call fcn.00644b73
mov edx, dword [esp + 0x1c]
push edx
call fcn.00644b73
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
add esp, 8
call edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0x10
fstp st(1)
jmp 0x55a6c3