Function at 0x580e5c
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffa4
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov edi, edx
mov ebx, eax
or esi, 0xffffffff
xor eax, eax
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp byte [eax + 0x109], 0
je 0x580f80
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp dword [eax + 0x1ac], 0
je 0x580ea6
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0x1ac]
mov dl, 1
call fcn.0068735c
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
xor edx, edx
call fcn.0063efd8
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp + 0x2c]
push eax
mov eax, dword [ebp + 0x28]
push eax
push 1
mov al, byte [ebp + 0x20]
push eax
push 1
mov al, byte [ebp + 0x18]
push eax
mov al, byte [ebp + 0x14]
push eax
push 0
push 0xffffffffffffffff
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov al, byte [eax + 0x548]
push eax
mov ecx, dword [ebp - 4]
mov edx, edi
mov eax, ebx
call fcn.00580e5c
xor edx, edx
mov eax, ebx
call fcn.004144c4
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dl, 1
call fcn.0063efd8
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp dword [eax + 0x1ac], 0
je 0x580f4b
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0x1ac]
call fcn.0068745c
test al, al
jne 0x580f4b
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [eax + 0x1ac]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
jmp 0x581c92
xor edx, edx
mov eax, ebx
call fcn.004144c4
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp - 0x48]
mov dword [eax + 0x14], edx
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp - 0x4c]
mov dword [eax + 0x18], edx
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp - 0x48]
mov dword [eax + 0x34], edx
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp - 0x4c]
mov dword [eax + 0x38], edx
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x100], edx
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x104], edx
mov dl, 1
mov eax, ebx
call fcn.00582330
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x580fc3
cmp dword [ebp - 0x30], 0xffffffff
jne 0x580fc3
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x581c92
mov edx, dword [ebp - 0x30]
mov eax, ebx
call fcn.004144c4
cmp byte [ebp + 0x10], 0
je 0x580fdf
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov eax, ebx
call fcn.005825a4
mov eax, dword [ebp + 0x2c]
cmp dword [eax], 0
je 0x580fff
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp dword [eax + 0x614], 0
je 0x580fff
mov eax, dword [0x7673f0]
cmp byte [eax], 0
jne 0x581003
xor eax, eax
jmp 0x581005
mov al, 1
mov byte [ebp - 0x39], al
xor eax, eax
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 0x10], eax
xor edx, edx
push ebp
push 0x581c88
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
mov dword [ebp - 0x18], eax
call fcn.00580b64
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
call fcn.00580b80
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
call fcn.00580bb4
mov eax, dword [ebp - 0xc]
call fcn.00580bc8
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x581063
call fcn.004039c8
jmp 0x581c92
test edi, edi
je 0x58108b
cmp ebx, edi
je 0x58108b
cmp byte [ebp + 0x24], 0
jne 0x58108b
mov ecx, dword [ebp + 0x28]
mov ecx, dword [ecx + 0x28]
mov edx, edi
mov eax, dword [ebp - 0xc]
call fcn.00580be0
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.00580c64
mov ecx, dword [ebp + 0x28]
mov ecx, dword [ecx + 0x28]
mov edx, ebx
mov eax, dword [ebp - 0xc]
call fcn.00580be0
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x5810b0
call fcn.004039c8
jmp 0x581c92
xor eax, eax
push ebp
push 0x581101
push dword fs:[eax]
mov dword fs:[eax], esp
mov ecx, 0xffff
mov edx, 0xfe
mov eax, dword [ebp - 0xc]
call fcn.00580c70
mov ebx, 0xe0
mov ecx, 0xffff
mov edx, ebx
mov eax, dword [ebp - 0xc]
call fcn.00580c70
inc ebx
cmp ebx, 0xf0
jne 0x5810d5
mov dl, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c64
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x581123
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x581138
call fcn.004039c8
jmp 0x581c92
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, 1
call fcn.0063efbc
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dword [eax + 8], 8
mov eax, dword [ebp - 0xc]
call fcn.00580ca8
mov edx, eax
mov eax, dword [ebp - 0xc]
call fcn.00580ca0
mov eax, dword [ebp - 0xc]
call fcn.00580ca8
cmp eax, 5
ja case.0x581176.0
jmp dword [eax*4 + 0x58117d]
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov byte [eax + 0xe4], 0
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], 3
jmp case.0x581176.0
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov byte [eax + 0xe4], 1
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], 1
jmp case.0x581176.0
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov byte [eax + 0xe4], 2
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], 3
mov edx, 2
mov eax, dword [ebp - 0xc]
call fcn.00580ca0
jmp case.0x581176.0
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov byte [eax + 0xe4], 3
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], 4
jmp case.0x581176.0
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov byte [eax + 0xe4], 4
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], 4
mov edx, 4
mov eax, dword [ebp - 0xc]
call fcn.00580ca0
cmp byte [ebp + 0x20], 0
je 0x581245
mov edx, 3
mov eax, dword [ebp - 0xc]
call fcn.00580ca0
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov al, byte [eax + 0xec]
sub al, 1
jb 0x58125c
je 0x581268
dec al
je 0x581277
jmp 0x581284
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.00580cac
jmp 0x581284
mov edx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580cac
jmp 0x581284
mov edx, 2
mov eax, dword [ebp - 0xc]
call fcn.00580cac
mov eax, dword [ebp - 0xc]
call fcn.00580cb0
sub al, 2
jb 0x581297
je 0x5812c3
jmp 0x581317
mov eax, dword [ebp - 0xc]
call fcn.00580cb8
movzx edx, ax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063ee9c
mov eax, dword [ebp - 0xc]
call fcn.00580cc0
movzx edx, ax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063ef14
jmp 0x581317
mov eax, dword [ebp - 0xc]
call fcn.00580cb8
movzx eax, ax
mov dword [ebp - 0x5c], eax
fild dword [ebp - 0x5c]
fld xword [0x581ca0]
fdivp st(1)
call fcn.00402c40
mov edx, eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063ee9c
mov eax, dword [ebp - 0xc]
call fcn.00580cc0
movzx eax, ax
mov dword [ebp - 0x5c], eax
fild dword [ebp - 0x5c]
fld xword [0x581ca0]
fdivp st(1)
call fcn.00402c40
mov edx, eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063ef14
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063d56c
mov eax, dword [ebp - 0xc]
call fcn.00580cc8
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov byte [edx + 0xf4], al
mov eax, dword [ebp - 0xc]
call fcn.00580cd8
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x34], eax
mov eax, dword [ebp - 0xc]
call fcn.00580cdc
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x38], eax
mov ebx, 1
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
movzx eax, byte [eax + 0xf5]
cmp eax, 4
ja case.default.0x58136e
jmp dword [eax*4 + 0x581375]
mov ebx, 1
jmp case.default.0x58136e
mov ebx, 2
jmp case.default.0x58136e
mov ebx, 4
jmp case.default.0x58136e
mov ebx, 8
jmp case.default.0x58136e
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp dword [eax + 0x14], 0
jle 0x58141a
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0
jle 0x58141a
xor eax, eax
mov dword [ebp - 0x20], eax
mov ebx, 3
mov ecx, ebx
mov eax, 1
shl eax, cl
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0xc]
call fcn.00580cd8
cdq
idiv dword [ebp - 0x24]
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
cmp eax, dword [edx + 0x14]
jl 0x581408
mov eax, dword [ebp - 0xc]
call fcn.00580cdc
cdq
idiv dword [ebp - 0x24]
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
cmp eax, dword [edx + 0x18]
jl 0x581408
mov dword [ebp - 0x20], ebx
jmp 0x58140e
dec ebx
cmp ebx, 0xffffffff
jne 0x5813cb
mov ecx, dword [ebp - 0x20]
mov ebx, 1
shl ebx, cl
jmp case.default.0x58136e
mov ebx, 1
mov ecx, ebx
mov edx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580ce0
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov dword [eax + 0xfc], ebx
cmp byte [ebp + 0x24], 0
je 0x581469
mov eax, dword [ebp - 0xc]
call fcn.00580cd8
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x14], eax
mov eax, dword [ebp - 0xc]
call fcn.00580cdc
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x18], eax
call fcn.004039c8
jmp 0x581c92
xor eax, eax
push ebp
push 0x581489
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0xc]
call fcn.00580c78
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5814ab
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x5814c0
call fcn.004039c8
jmp 0x581c92
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x14], eax
mov eax, dword [ebp - 0xc]
call fcn.00580c84
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
shl eax, 2
call fcn.0040279c
mov dword [ebp - 0x18], eax
cmp byte [ebp + 8], 0
je 0x5815d0
mov eax, dword [ebp - 0xc]
call fcn.00580ca4
cmp eax, 5
ja case.0x58150e.0
jmp dword [eax*4 + 0x581515]
push 3
mov eax, dword [ebp - 0xc]
call fcn.00580c84
push eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x28]
jmp case.0x58150e.0
push 5
mov eax, dword [ebp - 0xc]
call fcn.00580c84
push eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x28]
jmp case.0x58150e.0
push 5
mov eax, dword [ebp - 0xc]
call fcn.00580c84
push eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x28]
jmp case.0x58150e.0
push 7
mov eax, dword [ebp - 0xc]
call fcn.00580c84
push eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x28]
jmp case.0x58150e.0
push 5
mov eax, dword [ebp - 0xc]
call fcn.00580c84
push eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x28]
jmp case.0x58150e.0
push 5
mov eax, dword [ebp - 0xc]
call fcn.00580c84
push eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x28]
cmp dword [ebp + 0xc], 0
jge 0x5815ff
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 8]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0xc]
call fcn.00580c80
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0xc]
call fcn.00580c84
mov dword [ebp - 0x54], eax
fild dword [ebp - 0x54]
fdivr dword [0x581cac]
mov eax, dword [ebp + 0x28]
fstp qword [eax + 0x18]
wait
mov eax, dword [ebp + 0x28]
xor edx, edx
mov dword [eax + 0xc], edx
xor edx, edx
push ebp
push 0x5818e9
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
mov dword [ebp - 8], eax
mov ebx, 1
jmp 0x5818c6
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0xc]
call fcn.00580ca4
dec eax
je 0x58167c
dec eax
je 0x5817cc
dec eax
je 0x5816f1
dec eax
je 0x581735
jmp 0x581862
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 3
jne 0x58169f
lea edx, [ebp - 0x14]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c90
mov ebx, eax
jmp 0x581862
lea edx, [ebp - 0x18]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c90
mov ebx, eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x50]
dec edi
test edi, edi
jl 0x581862
inc edi
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x58], edx
mov dl, byte [eax]
mov ecx, dword [ebp - 0x58]
mov byte [ecx + 2], dl
mov dl, byte [eax]
mov ecx, dword [ebp - 0x58]
mov byte [ecx + 1], dl
mov dl, byte [eax]
mov ecx, dword [ebp - 0x58]
mov byte [ecx], dl
inc eax
add dword [ebp - 0x1c], 3
dec edi
jne 0x5816c7
jmp 0x581862
cmp byte [ebp + 0x20], 0
je 0x581862
lea edx, [ebp - 0x14]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c90
mov ebx, eax
mov eax, dword [ebp - 0xc]
call fcn.00580ca8
cmp eax, 2
jne 0x581862
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 0x14]
call fcn.006a94bc
jmp 0x581862
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 5
jne 0x5817a6
lea edx, [ebp - 0x18]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c90
mov ebx, eax
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x5818df
cmp byte [ebp + 0x18], 0
je 0x581783
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x50]
dec edx
mov edi, edx
shl edi, 2
test edi, edi
jl 0x581783
inc edi
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
inc eax
dec edi
jne 0x581779
push 1
mov eax, dword [ebp - 0x50]
push eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
push eax
mov edi, dword [0x7677a0]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
mov dl, 2
mov eax, dword [ebp - 0x18]
call edi
jmp 0x581862
lea edx, [ebp - 0x14]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c90
mov ebx, eax
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x5818df
jmp 0x581862
cmp byte [ebp - 0x39], 0
je 0x581831
lea edx, [ebp - 0x18]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c90
mov ebx, eax
mov eax, dword [ebp - 0xc]
call fcn.00580ca8
cmp eax, 2
jne 0x581811
push 1
mov eax, dword [ebp - 0x50]
push eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
push eax
mov edi, dword [0x7677a0]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp - 0x18]
call edi
jmp 0x581862
push 1
mov eax, dword [ebp - 0x50]
push eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
push eax
mov edi, dword [0x7677a0]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
mov dl, 1
mov eax, dword [ebp - 0x18]
call edi
jmp 0x581862
lea edx, [ebp - 0x14]
mov ecx, 1
mov eax, dword [ebp - 0xc]
call fcn.00580c90
mov ebx, eax
mov eax, dword [ebp - 0xc]
call fcn.00580ca8
cmp eax, 2
jne 0x581862
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 0x14]
call fcn.006a94bc
add dword [ebp - 8], ebx
mov eax, dword [ebp + 0x28]
add dword [eax + 0xc], ebx
mov eax, dword [ebp + 0x28]
cmp word [eax + 2], 0
je 0x5818bb
mov eax, dword [ebp + 0x28]
fild dword [eax + 0xc]
mov eax, dword [ebp + 0x28]
fmul qword [eax + 0x18]
call fcn.00402c40
push edx
push eax
mov eax, esi
cdq
cmp edx, dword [esp + 4]
jne 0x581894
cmp eax, dword [esp]
pop edx
pop eax
je 0x5818bb
mov eax, dword [ebp + 0x28]
fild dword [eax + 0xc]
mov eax, dword [ebp + 0x28]
fmul qword [eax + 0x18]
call fcn.00402c40
mov esi, eax
mov edi, dword [ebp + 0x28]
mov edx, dword [ebp + 0x28]
mov edx, dword [edx + 8]
mov ecx, esi
mov eax, dword [edi + 4]
call dword [edi]
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x5818df
mov eax, dword [ebp - 0xc]
call fcn.00580c88
cmp eax, dword [ebp - 0x54]
jge 0x5818df
mov eax, dword [ebp - 8]
cmp eax, dword [ebp + 0xc]
jl 0x58164a
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58190b
mov eax, dword [ebp - 8]
cmp eax, dword [ebp + 0xc]
jge 0x581926
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
call fcn.004039c8
jmp 0x581c92
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x581c92
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0xf8]
call fcn.0067ef94
mov eax, dword [ebp - 0xc]
call fcn.00580ce8
mov esi, eax
xor ebx, ebx
test esi, esi
je 0x5819a7
mov eax, esi
call fcn.00580cf0
cmp al, 0xe0
setne al
or al, bl
je 0x58198d
mov eax, esi
call fcn.00580cf8
push eax
mov eax, esi
call fcn.00580cf4
push eax
mov eax, esi
call fcn.00580cf0
mov edx, eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0xf8]
pop ecx
call fcn.0067eed8
mov eax, esi
call fcn.00580cf0
cmp al, 0xe0
jne 0x58199a
mov bl, 1
mov eax, esi
call fcn.00580cfc
mov esi, eax
test esi, esi
jne 0x581953
mov al, byte [ebp + 0x14]
and al, byte [ebp - 0x39]
je 0x5819e3
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063f064
call fcn.00699a14
test al, al
je 0x5819e3
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063f064
call fcn.00699a2c
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0xf8]
mov dl, 0xe2
call fcn.0067effc
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x581a2f
cmp byte [ebp + 0x24], 0
jne 0x581a2f
mov eax, dword [ebp - 0x10]
call fcn.00580bb8
xor eax, eax
push ebp
push 0x581a1c
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0xc]
call fcn.00580c98
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x581a2f
mov eax, dword [ebp - 0xc]
call fcn.00580bd8
cmp dword [ebp - 0x18], 0
je 0x581a45
mov eax, dword [ebp - 0x18]
call fcn.004027b4
mov eax, dword [ebp - 0x10]
call fcn.00580bc0
test eax, eax
je 0x581a77
mov eax, dword [ebp - 0x10]
call fcn.00580bc0
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x100], eax
mov eax, dword [ebp - 0x10]
call fcn.00580bc4
mov edx, dword [ebp + 0x2c]
mov edx, dword [edx]
mov dword [edx + 0x104], eax
mov eax, dword [ebp - 0xc]
call fcn.00580c48
cmp byte [ebp + 0x1c], 0
je 0x581c77
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov ebx, dword [eax + 0xf8]
mov eax, ebx
call fcn.0067ee58
mov edi, eax
dec edi
test edi, edi
jl 0x581ae3
inc edi
xor esi, esi
mov edx, esi
mov eax, ebx
call fcn.0067ee78
cmp al, 0xed
jne 0x581adf
mov edx, esi
mov eax, ebx
call fcn.0067ee8c
movzx eax, ax
push eax
mov edx, esi
mov eax, ebx
call fcn.0067ee60
mov edx, eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0x194]
pop ecx
call fcn.0067f748
test al, al
jne 0x581ae3
inc esi
dec edi
jne 0x581aa5
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x44], eax
mov eax, ebx
call fcn.0067ee58
mov edi, eax
dec edi
test edi, edi
jl 0x581c12
inc edi
xor esi, esi
mov edx, esi
mov eax, ebx
call fcn.0067ee78
cmp al, 0xe1
jne 0x581c0a
mov edx, esi
mov eax, ebx
call fcn.0067ee8c
movzx eax, ax
push eax
mov edx, esi
mov eax, ebx
call fcn.0067ee60
mov ecx, dword [ebp + 0x2c]
mov ecx, dword [ecx]
pop edx
call fcn.00684fcc
test al, al
je 0x581c0a
cmp dword [ebp - 0x40], 1
jne 0x581bbe
cmp dword [ebp - 0x44], 1
jne 0x581bbe
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp dword [eax + 0x1d0], 3
jne 0x581b72
mov dword [ebp - 0x38], 0x851eb852
mov dword [ebp - 0x34], 0x400451eb
jmp 0x581b7e
xor eax, eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], 0x3ff00000
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
fld qword [eax + 0x1c0]
fmul qword [ebp - 0x38]
call fcn.00402c40
mov edx, eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063ee9c
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
fld qword [eax + 0x1c8]
fmul qword [ebp - 0x38]
call fcn.00402c40
mov edx, eax
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
call fcn.0063ef14
jmp 0x581bd8
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp - 0x40]
call fcn.0063ee9c
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp - 0x44]
call fcn.0063ef14
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
cmp byte [eax + 0x108], 0
je 0x581c12
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, dword [eax + 0x1a8]
mov eax, dword [ebp - 4]
call fcn.0069a7f4
mov eax, dword [ebp + 0x2c]
mov eax, dword [eax]
mov edx, 1
call fcn.0063eff8
jmp 0x581c12
inc esi
dec edi
jne 0x581b0e
mov eax, ebx
call fcn.0067ee58
mov edi, eax
dec edi
test edi, edi
jl 0x581c77
inc edi
xor esi, esi
mov edx, esi
mov eax, ebx
call fcn.0067ee78
cmp al, 0xe1
jne 0x581c73
mov edx, esi
mov eax, ebx
call fcn.0067ee8c
movzx eax, ax
push eax
mov edx, esi
mov eax, ebx
call fcn.0067ee60
pop edx
call fcn.0069b958
test eax, eax
je 0x581c73
mov edx, esi
mov eax, ebx
call fcn.0067ee8c
movzx eax, ax
push eax
mov edx, esi
mov eax, ebx
call fcn.0067ee60
mov ecx, dword [ebp + 0x2c]
mov ecx, dword [ecx]
pop edx
call fcn.0069b994
jmp 0x581c77
inc esi
dec edi
jne 0x581c23
lea eax, [ebp - 0x10]
call fcn.00580ba4
lea eax, [ebp - 0xc]
call fcn.00580b70
ret
mov eax, dword [ebp - 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x28