Function at 0x56a3a8
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffd74
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov esi, edx
mov ebx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0xed], 0
je 0x56a46d
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x16c]
test eax, eax
je 0x56a3e6
mov edx, dword [ebp + 0x20]
mov dl, 1
call fcn.006377fc
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
call fcn.00618aa0
mov eax, dword [ebp + 0x20]
push eax
mov eax, dword [ebp + 0x1c]
push eax
push 1
mov al, byte [ebp + 0x14]
push eax
push 1
mov al, byte [ebp + 0xc]
push eax
mov al, byte [ebp + 8]
push eax
mov ecx, dword [ebp - 4]
mov edx, esi
mov eax, ebx
call fcn.0056a3a8
push 0
push 0
mov eax, ebx
call fcn.004211f0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dl, 1
call fcn.00618aa0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edi, dword [eax + 0x16c]
test edi, edi
je 0x56a462
mov eax, dword [ebp + 0x20]
mov eax, edi
call fcn.006378cc
test al, al
jne 0x56a462
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [eax + 0x16c]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x28]
jmp 0x56b065
push 0
push 0
mov eax, ebx
call fcn.004211f0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xdc], edx
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xe0], edx
mov eax, ebx
call fcn.0056b6d0
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
cmp dword [ebp - 0x1c], 0xffffffff
jne 0x56a4ae
cmp dword [ebp - 0x20], 0xffffffff
jne 0x56a4ae
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x56b065
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
mov eax, ebx
call fcn.004211f0
mov eax, dword [0x71552c]
cmp byte [eax], 0
je 0x56a4df
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0x390], 0
jne 0x56a4df
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
mov eax, ebx
call fcn.0056bbc4
mov eax, dword [0x71552c]
cmp byte [eax], 0
je 0x56a4ff
mov eax, dword [ebp + 0x20]
cmp dword [eax], 0
je 0x56a4ff
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x464], 0
jne 0x56a503
xor eax, eax
jmp 0x56a505
mov al, 1
mov byte [ebp - 0x29], al
xor edi, edi
push ebp
push 0x56b05b
push dword fs:[edi]
mov dword fs:[edi], esp
xor eax, eax
mov dword [ebp - 0xc], eax
push esi
mov esi, 0x7073a0
lea edi, [ebp - 0x280]
mov ecx, 0x1e
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x20c], eax
lea eax, [ebp - 0x280]
mov dword [ebp - 0x208], eax
lea eax, [ebp - 0x208]
mov ecx, 0x1d0
mov edx, 0x3e
call fcn.0056be80
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x56a571
call fcn.0040481c
jmp 0x56b065
test esi, esi
je 0x56a599
cmp ebx, esi
je 0x56a599
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x208]
mov edx, esi
call fcn.0056a324
lea eax, [ebp - 0x208]
xor edx, edx
call fcn.0056c148
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x208]
mov edx, ebx
call fcn.0056a324
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x56a5c1
call fcn.0040481c
jmp 0x56b065
xor eax, eax
push ebp
push 0x56a62a
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0x390], 0
jne 0x56a612
lea eax, [ebp - 0x208]
mov ecx, 0xffff
mov edx, 0xfe
call fcn.00577ecc
mov ebx, 0xe0
lea eax, [ebp - 0x208]
mov ecx, 0xffff
mov edx, ebx
call fcn.00577ecc
inc ebx
cmp ebx, 0xf0
jne 0x56a5f7
lea eax, [ebp - 0x208]
or edx, 0xffffffff
call fcn.0056c148
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56a64c
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x56a661
call fcn.0040481c
jmp 0x56b065
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dword [eax + 8], 8
mov eax, dword [ebp - 0x1e0]
mov dword [ebp - 0x1dc], eax
mov eax, dword [ebp - 0x1e0]
cmp eax, 5
ja case.0x56a688.0
jmp dword [eax*4 + 0x56a68f]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov byte [eax + 0xc0], 0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dword [eax + 0x10], 3
jmp case.0x56a688.0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov byte [eax + 0xc0], 1
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dword [eax + 0x10], 1
jmp case.0x56a688.0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov byte [eax + 0xc0], 2
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dword [eax + 0x10], 3
mov dword [ebp - 0x1dc], 2
jmp case.0x56a688.0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov byte [eax + 0xc0], 3
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dword [eax + 0x10], 4
jmp case.0x56a688.0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov byte [eax + 0xc0], 4
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dword [eax + 0x10], 4
mov dword [ebp - 0x1dc], 4
cmp byte [ebp + 0x14], 0
je 0x56a74b
mov dword [ebp - 0x1dc], 3
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov al, byte [eax + 0xc8]
sub al, 1
jb 0x56a762
je 0x56a76c
dec al
je 0x56a778
jmp 0x56a782
xor eax, eax
mov dword [ebp - 0x1c0], eax
jmp 0x56a782
mov dword [ebp - 0x1c0], 1
jmp 0x56a782
mov dword [ebp - 0x1c0], 2
mov al, byte [ebp - 0xea]
sub al, 2
jb 0x56a790
je 0x56a7b4
jmp 0x56a80c
movzx edx, word [ebp - 0xe8]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618a0c
movzx edx, word [ebp - 0xe6]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618a3c
jmp 0x56a80c
movzx eax, word [ebp - 0xe8]
mov dword [ebp - 0x284], eax
fild dword [ebp - 0x284]
fld xword [0x56b070]
fdivp st(1)
call fcn.0040308c
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618a0c
movzx eax, word [ebp - 0xe6]
mov dword [ebp - 0x284], eax
fild dword [ebp - 0x284]
fld xword [0x56b070]
fdivp st(1)
call fcn.0040308c
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618a3c
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x39c]
test eax, eax
je 0x56a83d
mov edx, dword [ebp + 0x20]
call fcn.00402abc
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x39c], edx
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x3a0], edx
cmp dword [ebp - 0x12c], 1
sbb eax, eax
inc eax
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
mov byte [edx + 0xd0], al
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x1ec]
mov dword [eax + 0xe4], edx
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x1e8]
mov dword [eax + 0xe8], edx
mov dword [ebp - 0x1d8], 1
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
movzx eax, byte [eax + 0xd1]
cmp eax, 4
ja case.default.0x56a893
jmp dword [eax*4 + 0x56a89a]
mov dword [ebp - 0x1d4], 1
jmp case.default.0x56a893
mov dword [ebp - 0x1d4], 2
jmp case.default.0x56a893
mov dword [ebp - 0x1d4], 4
jmp case.default.0x56a893
mov dword [ebp - 0x1d4], 8
jmp case.default.0x56a893
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x14], 0
jle 0x56a955
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0
jle 0x56a955
xor eax, eax
mov dword [ebp - 0x14], eax
mov ebx, 3
mov ecx, ebx
mov eax, 1
shl eax, cl
mov ecx, eax
mov eax, dword [ebp - 0x1ec]
cdq
idiv ecx
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
cmp eax, dword [edx + 0x14]
jl 0x56a93d
mov eax, dword [ebp - 0x1e8]
cdq
idiv ecx
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
cmp eax, dword [edx + 0x18]
jl 0x56a93d
mov dword [ebp - 0x14], ebx
jmp 0x56a943
dec ebx
cmp ebx, 0xffffffff
jne 0x56a907
mov ecx, dword [ebp - 0x14]
mov eax, 1
shl eax, cl
mov dword [ebp - 0x1d4], eax
jmp case.default.0x56a893
mov dword [ebp - 0x1d4], 1
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x1d4]
mov dword [eax + 0xd8], edx
xor eax, eax
push ebp
push 0x56a993
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x208]
call fcn.0056d5e4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56a9b5
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x56a9ca
call fcn.0040481c
jmp 0x56b065
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x198]
mov dword [eax + 0x14], edx
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x194]
mov dword [eax + 0x18], edx
cmp byte [ebp + 0x18], 0
je 0x56a9f6
call fcn.0040481c
jmp 0x56b065
mov eax, dword [ebp - 0x198]
shl eax, 2
call fcn.00402a9c
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0x398], 0
je 0x56aabf
mov eax, dword [ebp - 0x1dc]
cmp eax, 5
ja case.0x56aa28.0
jmp dword [eax*4 + 0x56aa2f]
push 3
mov ecx, dword [ebp - 0x194]
mov edx, dword [ebp - 0x198]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x56aa28.0
push 5
mov ecx, dword [ebp - 0x194]
mov edx, dword [ebp - 0x198]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x56aa28.0
push 5
mov ecx, dword [ebp - 0x194]
mov edx, dword [ebp - 0x198]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x56aa28.0
push 7
mov ecx, dword [ebp - 0x194]
mov edx, dword [ebp - 0x198]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x56aa28.0
push 5
mov ecx, dword [ebp - 0x194]
mov edx, dword [ebp - 0x198]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x56aa28.0
push 5
mov ecx, dword [ebp - 0x194]
mov edx, dword [ebp - 0x198]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
mov eax, dword [ebp - 0x194]
mov dword [ebp - 0x28c], eax
xor eax, eax
mov dword [ebp - 0x288], eax
fild qword [ebp - 0x28c]
fdivr dword [0x56b07c]
mov eax, dword [ebp + 0x1c]
fstp qword [eax + 0x18]
wait
mov eax, dword [ebp + 0x1c]
xor edx, edx
mov dword [eax + 0xc], edx
xor ecx, ecx
push ebp
push 0x56ad7e
push dword fs:[ecx]
mov dword fs:[ecx], esp
xor ebx, ebx
mov esi, 1
jmp 0x56ad56
mov edx, ebx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x1dc]
dec eax
je 0x56ab4d
dec eax
je 0x56acaa
dec eax
je 0x56abc4
dec eax
je 0x56ac07
jmp 0x56ad18
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 3
jne 0x56ab73
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0056d780
mov esi, eax
jmp 0x56ad18
lea edx, [ebp - 0xc]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0056d780
mov esi, eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x198]
dec edx
test edx, edx
jl 0x56ad18
inc edx
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x10]
mov cl, byte [eax]
mov byte [edx + 2], cl
mov cl, byte [eax]
mov byte [edx + 1], cl
mov cl, byte [eax]
mov byte [edx], cl
inc eax
add dword [ebp - 0x10], 3
dec dword [ebp - 0x38]
jne 0x56aba4
jmp 0x56ad18
cmp byte [ebp + 0x14], 0
je 0x56ad18
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0056d780
mov esi, eax
cmp dword [ebp - 0x1e0], 2
jne 0x56ad18
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 8]
call fcn.005fd964
jmp 0x56ad18
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 5
jne 0x56ac84
lea edx, [ebp - 0xc]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0056d780
mov esi, eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x56ad74
cmp byte [ebp + 0xc], 0
je 0x56ac5e
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x198]
dec edx
shl edx, 2
test edx, edx
jl 0x56ac5e
inc edx
mov dword [ebp - 0x38], edx
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
inc eax
dec dword [ebp - 0x38]
jne 0x56ac52
push 1
mov eax, dword [ebp - 0x198]
push eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
push eax
mov edi, dword [0x7157b8]
mov edi, dword [edi]
mov ecx, dword [ebp - 8]
mov dl, 2
mov eax, dword [ebp - 0xc]
call edi
jmp 0x56ad18
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0056d780
mov esi, eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x56ad74
jmp 0x56ad18
cmp byte [ebp - 0x29], 0
je 0x56ace8
lea edx, [ebp - 0xc]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0056d780
mov esi, eax
push 1
mov eax, dword [ebp - 0x198]
push eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
push eax
mov edi, dword [0x7157b8]
mov edi, dword [edi]
mov ecx, dword [ebp - 8]
mov dl, 1
mov eax, dword [ebp - 0xc]
call edi
jmp 0x56ad18
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0056d780
mov esi, eax
cmp dword [ebp - 0x1e0], 2
jne 0x56ad18
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 8]
call fcn.005fd964
add ebx, esi
mov eax, dword [ebp + 0x1c]
add dword [eax + 0xc], esi
mov eax, dword [ebp + 0x1c]
cmp word [eax + 2], 0
je 0x56ad4b
mov eax, dword [ebp + 0x1c]
fild dword [eax + 0xc]
mov eax, dword [ebp + 0x1c]
fmul qword [eax + 0x18]
call fcn.0040308c
mov ecx, eax
mov edi, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x1c]
mov edx, dword [edx + 8]
mov eax, dword [edi + 4]
call dword [edi]
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x56ad74
mov eax, dword [ebp - 0x17c]
cmp eax, dword [ebp - 0x194]
jae 0x56ad74
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 8]
cmp ebx, eax
jl 0x56ab1e
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56ada0
cmp ebx, dword [ebp - 0x194]
jge 0x56adbb
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
call fcn.0040481c
jmp 0x56b065
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x56b065
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0xd4]
call fcn.0063128c
mov esi, dword [ebp - 0xd8]
xor ebx, ebx
test esi, esi
je 0x56ae18
mov al, byte [esi + 4]
cmp al, 0xe0
setne dl
or dl, bl
je 0x56ae0a
mov dx, word [esi + 0xc]
push edx
mov ecx, dword [esi + 0x10]
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0xd4]
call fcn.006311dc
cmp byte [esi + 4], 0xe0
jne 0x56ae12
mov bl, 1
mov esi, dword [esi]
test esi, esi
jne 0x56ade4
mov al, byte [ebp + 8]
and al, byte [ebp - 0x29]
je 0x56ae69
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618afc
cmp byte [eax + 0x18], 0
je 0x56ae69
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618afc
call fcn.00644338
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0xd4]
mov dl, 0xe2
call fcn.006311a8
cmp eax, 0xffffffff
je 0x56ae69
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
mov edx, dword [edx + 0xd4]
xchg edx, eax
call fcn.006312c0
jmp 0x56ae3f
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x56aeaf
cmp byte [ebp + 0x18], 0
jne 0x56aeaf
xor eax, eax
mov dword [ebp - 0x20c], eax
xor eax, eax
push ebp
push 0x56aea5
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x208]
call fcn.0056c2c8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x56aeaf
lea eax, [ebp - 0x208]
call fcn.0056bf50
cmp dword [ebp - 0xc], 0
je 0x56aec8
mov eax, dword [ebp - 0xc]
call fcn.00402abc
mov eax, dword [ebp - 0x208]
mov eax, dword [eax + 0x70]
test eax, eax
je 0x56aef4
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
mov dword [edx + 0xdc], eax
mov eax, dword [ebp - 0x208]
mov eax, dword [eax + 0x14]
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
mov dword [edx + 0xe0], eax
lea eax, [ebp - 0x208]
call fcn.0056a38c
cmp byte [ebp + 0x10], 0
je 0x56b05a
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov esi, dword [eax + 0xd4]
mov dl, 0xed
mov eax, esi
call fcn.006311a8
mov ebx, eax
test ebx, ebx
jl 0x56af4c
mov edx, ebx
mov eax, esi
call fcn.00631190
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.00631164
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x15c]
pop ecx
call fcn.006317dc
mov dl, 0xe1
mov eax, esi
call fcn.006311a8
mov ebx, eax
test ebx, ebx
jl 0x56b05a
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x34], eax
mov edx, ebx
mov eax, esi
call fcn.00631190
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.00631164
mov ecx, dword [ebp + 0x20]
mov ecx, dword [ecx]
pop edx
call fcn.00635ed0
test al, al
je 0x56b05a
cmp dword [ebp - 0x30], 1
jne 0x56b014
cmp dword [ebp - 0x34], 1
jne 0x56b014
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x190], 3
jne 0x56afc8
mov dword [ebp - 0x28], 0x851eb852
mov dword [ebp - 0x24], 0x400451eb
jmp 0x56afd4
xor eax, eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], 0x3ff00000
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
fld qword [eax + 0x180]
fmul qword [ebp - 0x28]
call fcn.0040308c
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618a0c
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
fld qword [eax + 0x188]
fmul qword [ebp - 0x28]
call fcn.0040308c
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.00618a3c
jmp 0x56b02e
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x30]
call fcn.00618a0c
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x34]
call fcn.00618a3c
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x56b05a
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0xec], 0
je 0x56b05a
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [eax + 0x17c]
mov eax, dword [ebp - 4]
call fcn.00644cf8
ret
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c