Function at 0x50a2d4
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 0x50a399
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x16c]
test eax, eax
je 0x50a312
mov edx, dword [ebp + 0x20]
mov dl, 1
call fcn.005a85b4
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
call fcn.0058cc4c
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.0050a2d4
push 0
push 0
mov eax, ebx
call fcn.0041e620
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dl, 1
call fcn.0058cc4c
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edi, dword [eax + 0x16c]
test edi, edi
je 0x50a38e
mov eax, dword [ebp + 0x20]
mov eax, edi
call fcn.005a8658
test al, al
jne 0x50a38e
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 0x50af86
push 0
push 0
mov eax, ebx
call fcn.0041e620
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.0050b5cc
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
cmp dword [ebp - 0x1c], 0xffffffff
jne 0x50a3da
cmp dword [ebp - 0x20], 0xffffffff
jne 0x50a3da
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x50af86
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
mov eax, ebx
call fcn.0041e620
mov eax, dword [0x65fd5c]
cmp byte [eax], 0
je 0x50a40b
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0x368], 0
jne 0x50a40b
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
mov eax, ebx
call fcn.0050bac0
mov eax, dword [0x65fd5c]
cmp byte [eax], 0
je 0x50a42b
mov eax, dword [ebp + 0x20]
cmp dword [eax], 0
je 0x50a42b
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x434], 0
jne 0x50a42f
xor eax, eax
jmp 0x50a431
mov al, 1
mov byte [ebp - 0x29], al
xor edi, edi
push ebp
push 0x50af7c
push dword fs:[edi]
mov dword fs:[edi], esp
xor eax, eax
mov dword [ebp - 0xc], eax
push esi
mov esi, 0x652cdc
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.0050bd7c
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x50a49d
call fcn.004042e4
jmp 0x50af86
test esi, esi
je 0x50a4c5
cmp ebx, esi
je 0x50a4c5
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x208]
mov edx, esi
call fcn.0050a250
lea eax, [ebp - 0x208]
xor edx, edx
call fcn.0050c044
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x208]
mov edx, ebx
call fcn.0050a250
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x50a4ed
call fcn.004042e4
jmp 0x50af86
xor eax, eax
push ebp
push 0x50a556
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0x368], 0
jne 0x50a53e
lea eax, [ebp - 0x208]
mov ecx, 0xffff
mov edx, 0xfe
call fcn.00517dc8
mov ebx, 0xe0
lea eax, [ebp - 0x208]
mov ecx, 0xffff
mov edx, ebx
call fcn.00517dc8
inc ebx
cmp ebx, 0xf0
jne 0x50a523
lea eax, [ebp - 0x208]
or edx, 0xffffffff
call fcn.0050c044
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x50a578
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x50a58d
call fcn.004042e4
jmp 0x50af86
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.0x50a5b4.0
jmp dword [eax*4 + 0x50a5bb]
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.0x50a5b4.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.0x50a5b4.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.0x50a5b4.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.0x50a5b4.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 0x50a677
mov dword [ebp - 0x1dc], 3
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov al, byte [eax + 0xc8]
sub al, 1
jb 0x50a68e
je 0x50a698
dec al
je 0x50a6a4
jmp 0x50a6ae
xor eax, eax
mov dword [ebp - 0x1c0], eax
jmp 0x50a6ae
mov dword [ebp - 0x1c0], 1
jmp 0x50a6ae
mov dword [ebp - 0x1c0], 2
mov al, byte [ebp - 0xea]
sub al, 2
jb 0x50a6bc
je 0x50a6e0
jmp 0x50a738
movzx edx, word [ebp - 0xe8]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cbb8
movzx edx, word [ebp - 0xe6]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cbe8
jmp 0x50a738
movzx eax, word [ebp - 0xe8]
mov dword [ebp - 0x284], eax
fild dword [ebp - 0x284]
fld xword [0x50af90]
fdivp st(1)
call fcn.00402ccc
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cbb8
movzx eax, word [ebp - 0xe6]
mov dword [ebp - 0x284], eax
fild dword [ebp - 0x284]
fld xword [0x50af90]
fdivp st(1)
call fcn.00402ccc
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cbe8
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x36c]
test eax, eax
je 0x50a769
mov edx, dword [ebp + 0x20]
call fcn.004027cc
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x36c], edx
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x370], 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.0x50a7bf
jmp dword [eax*4 + 0x50a7c6]
mov dword [ebp - 0x1d4], 1
jmp case.default.0x50a7bf
mov dword [ebp - 0x1d4], 2
jmp case.default.0x50a7bf
mov dword [ebp - 0x1d4], 4
jmp case.default.0x50a7bf
mov dword [ebp - 0x1d4], 8
jmp case.default.0x50a7bf
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x14], 0
jle 0x50a881
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0
jle 0x50a881
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 0x50a869
mov eax, dword [ebp - 0x1e8]
cdq
idiv ecx
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
cmp eax, dword [edx + 0x18]
jl 0x50a869
mov dword [ebp - 0x14], ebx
jmp 0x50a86f
dec ebx
cmp ebx, 0xffffffff
jne 0x50a833
mov ecx, dword [ebp - 0x14]
mov eax, 1
shl eax, cl
mov dword [ebp - 0x1d4], eax
jmp case.default.0x50a7bf
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 0x50a8bf
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x208]
call fcn.0050d4e0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x50a8e1
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x50a8f6
call fcn.004042e4
jmp 0x50af86
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 0x50a922
call fcn.004042e4
jmp 0x50af86
mov eax, dword [ebp - 0x198]
shl eax, 2
call fcn.004027ac
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0x369], 0
je 0x50a9eb
mov eax, dword [ebp - 0x1dc]
cmp eax, 5
ja case.0x50a954.0
jmp dword [eax*4 + 0x50a95b]
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.0x50a954.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.0x50a954.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.0x50a954.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.0x50a954.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.0x50a954.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 [0x50af9c]
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 0x50acaa
push dword fs:[ecx]
mov dword fs:[ecx], esp
xor ebx, ebx
mov esi, 1
jmp 0x50ac82
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 0x50aa79
dec eax
je 0x50abd6
dec eax
je 0x50aaf0
dec eax
je 0x50ab33
jmp 0x50ac44
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 3
jne 0x50aa9f
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0050d67c
mov esi, eax
jmp 0x50ac44
lea edx, [ebp - 0xc]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0050d67c
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 0x50ac44
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 0x50aad0
jmp 0x50ac44
cmp byte [ebp + 0x14], 0
je 0x50ac44
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0050d67c
mov esi, eax
cmp dword [ebp - 0x1e0], 2
jne 0x50ac44
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 8]
call fcn.00579890
jmp 0x50ac44
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 5
jne 0x50abb0
lea edx, [ebp - 0xc]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0050d67c
mov esi, eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x50aca0
cmp byte [ebp + 0xc], 0
je 0x50ab8a
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x198]
dec edx
shl edx, 2
test edx, edx
jl 0x50ab8a
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 0x50ab7e
push 1
mov eax, dword [ebp - 0x198]
push eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
push eax
mov edi, dword [0x660034]
mov edi, dword [edi]
mov ecx, dword [ebp - 8]
mov dl, 2
mov eax, dword [ebp - 0xc]
call edi
jmp 0x50ac44
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0050d67c
mov esi, eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x50aca0
jmp 0x50ac44
cmp byte [ebp - 0x29], 0
je 0x50ac14
lea edx, [ebp - 0xc]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0050d67c
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 [0x660034]
mov edi, dword [edi]
mov ecx, dword [ebp - 8]
mov dl, 1
mov eax, dword [ebp - 0xc]
call edi
jmp 0x50ac44
lea edx, [ebp - 8]
lea eax, [ebp - 0x208]
mov ecx, 1
call fcn.0050d67c
mov esi, eax
cmp dword [ebp - 0x1e0], 2
jne 0x50ac44
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 8]
call fcn.00579890
add ebx, esi
mov eax, dword [ebp + 0x1c]
add dword [eax + 0xc], esi
mov eax, dword [ebp + 0x1c]
cmp word [eax + 2], 0
je 0x50ac77
mov eax, dword [ebp + 0x1c]
fild dword [eax + 0xc]
mov eax, dword [ebp + 0x1c]
fmul qword [eax + 0x18]
call fcn.00402ccc
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 0x50aca0
mov eax, dword [ebp - 0x17c]
cmp eax, dword [ebp - 0x194]
jae 0x50aca0
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 8]
cmp ebx, eax
jl 0x50aa4a
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x50accc
cmp ebx, dword [ebp - 0x194]
jge 0x50ace7
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
call fcn.004042e4
jmp 0x50af86
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50af86
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0xd4]
call fcn.005a34f4
mov esi, dword [ebp - 0xd8]
xor ebx, ebx
test esi, esi
je 0x50ad44
mov al, byte [esi + 4]
cmp al, 0xe0
setne dl
or dl, bl
je 0x50ad36
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.005a3444
cmp byte [esi + 4], 0xe0
jne 0x50ad3e
mov bl, 1
mov esi, dword [esi]
test esi, esi
jne 0x50ad10
mov al, byte [ebp + 8]
and al, byte [ebp - 0x29]
je 0x50ad95
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cca8
cmp byte [eax + 0x18], 0
je 0x50ad95
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cca8
call fcn.005b4824
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0xd4]
mov dl, 0xe2
call fcn.005a3410
cmp eax, 0xffffffff
je 0x50ad95
mov edx, dword [ebp + 0x20]
mov edx, dword [edx]
mov edx, dword [edx + 0xd4]
xchg edx, eax
call fcn.005a3528
jmp 0x50ad6b
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x50addb
cmp byte [ebp + 0x18], 0
jne 0x50addb
xor eax, eax
mov dword [ebp - 0x20c], eax
xor eax, eax
push ebp
push 0x50add1
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x208]
call fcn.0050c1c4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x50addb
lea eax, [ebp - 0x208]
call fcn.0050be4c
cmp dword [ebp - 0xc], 0
je 0x50adf4
mov eax, dword [ebp - 0xc]
call fcn.004027cc
mov eax, dword [ebp - 0x208]
mov eax, dword [eax + 0x70]
test eax, eax
je 0x50ae20
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.0050a2b8
cmp byte [ebp + 0x10], 0
je 0x50af7b
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov esi, dword [eax + 0xd4]
mov dl, 0xed
mov eax, esi
call fcn.005a3410
mov ebx, eax
test ebx, ebx
jl 0x50ae78
mov edx, ebx
mov eax, esi
call fcn.005a33f8
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.005a33cc
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x15c]
pop ecx
call fcn.005a3a40
mov dl, 0xe1
mov eax, esi
call fcn.005a3410
mov ebx, eax
test ebx, ebx
jl 0x50af7b
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.005a33f8
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.005a33cc
mov ecx, dword [ebp + 0x20]
mov ecx, dword [ecx]
pop edx
call fcn.005a6e30
test al, al
je 0x50af7b
cmp dword [ebp - 0x30], 1
jne 0x50af40
cmp dword [ebp - 0x34], 1
jne 0x50af40
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp dword [eax + 0x190], 3
jne 0x50aef4
mov dword [ebp - 0x28], 0x851eb852
mov dword [ebp - 0x24], 0x400451eb
jmp 0x50af00
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.00402ccc
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cbb8
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
fld qword [eax + 0x188]
fmul qword [ebp - 0x28]
call fcn.00402ccc
mov edx, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
call fcn.0058cbe8
jmp 0x50af5a
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x30]
call fcn.0058cbb8
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x34]
call fcn.0058cbe8
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
cmp byte [eax + 0xec], 0
je 0x50af7b
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov edx, dword [eax + 0x17c]
mov eax, dword [ebp - 4]
call fcn.005b509c
ret
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c