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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xb4
mov eax, dword [0x6f1550]
xor eax, esp
mov dword [esp + 0xb0], eax
push ebx
mov ebx, dword [ebp + 8]
movzx eax, byte [ebx + 2]
push esi
push edi
movzx edi, byte [eax + 0x631118]
xor esi, esi
test edi, edi
mov dword [esp + 0x20], edi
jle 0x4ff206
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff1ed
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff1f8
push 1
push ebx
call fcn.00530870
add esp, 8
mov byte [esp + esi + 0xa4], al
add esi, 1
cmp esi, edi
jl 0x4ff1c5
xor esi, esi
test edi, edi
jle 0x4ff251
lea esp, [esp]
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff238
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff243
push 1
push ebx
call fcn.00530870
add esp, 8
mov byte [esp + esi + 0xb4], al
add esi, 1
cmp esi, edi
jl 0x4ff210
xor ecx, ecx
cmp byte [ebx + 2], cl
sete cl
mov esi, ecx
jmp 0x4ff260
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff288
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff293
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ff31b
mov edx, dword [ebx + 0x334]
cmp edx, 8
jbe 0x4ff2c3
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
sar eax, 0x18
add edx, 0xfffffff8
mov dword [ebx + 0x334], edx
jmp 0x4ff2ce
push 8
push ebx
call fcn.005308f0
add esp, 8
cmp dword [ebx + 0x30], 0
je 0x4ff31b
mov edx, eax
and eax, 0x1f
sar edx, 5
or eax, 0x20
add edx, edx
shl eax, 0xd
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
mov eax, dword [ebx + 0x44]
add edx, edx
add edx, edx
mov ecx, 0x630e68
sub ecx, edx
test eax, eax
fmul qword [ecx]
mov dword [esp + 0x24], eax
je 0x4ff315
mov edx, dword [ebx + 0x40]
push edx
sub esp, 8
fstp qword [esp]
call dword [esp + 0x30]
add esp, 0xc
fmul qword [ebx + 0x20]
fstp qword [ebx + 0x38]
mov eax, esi
sub esi, 1
test eax, eax
jne 0x4ff260
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff350
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff35b
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ff551
mov edx, dword [ebx + 0x334]
cmp edx, 1
mov byte [ebx + 0x48], 0
jbe 0x4ff38f
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff39a
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ff551
xor esi, esi
test edi, edi
jle 0x4ff3f1
jmp 0x4ff3b0
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff3d8
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff3e3
push 1
push ebx
call fcn.00530870
add esp, 8
mov ecx, esi
shl al, cl
add esi, 1
or byte [ebx + 0x48], al
cmp esi, edi
jl 0x4ff3b0
mov al, byte [ebx + 2]
cmp al, 1
jbe 0x4ff45e
cmp al, 2
jne 0x4ff432
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff424
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff42f
push 1
push ebx
call fcn.00530870
add esp, 8
mov byte [ebx + 0x49], al
mov edx, dword [ebx + 0x334]
cmp edx, 4
jbe 0x4ff478
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
mov dword [esp + 0x18], eax
jmp 0x4ff487
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.005bf6a4
mov esp, ebp
pop ebp
ret
push 4
push ebx
call fcn.00530870
add esp, 8
mov dword [esp + 0x18], eax
mov esi, dword [ebx + 0x334]
cmp esi, 4
jbe 0x4ff4af
mov edx, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, esi
shl edx, cl
shr edx, 0x1c
add esi, 0xfffffffc
mov dword [ebx + 0x334], esi
jmp 0x4ff4c0
push 4
push ebx
call fcn.00530870
mov edx, eax
mov eax, dword [esp + 0x20]
add esp, 8
mov dword [esp + 0x24], edx
sub edx, eax
lea ecx, [edx + 3]
test ecx, ecx
jl 0x4ff45e
mov byte [ebx + 0x321], cl
mov dl, byte [eax + 0x6e6cc0]
mov byte [ebx + 0x320], dl
mov dl, 0xc
imul dl
add al, 0x25
mov byte [ebx + 0x4a], al
mov al, byte [esp + 0x24]
imul dl
add al, 0x49
xor esi, esi
lea edi, [ecx - 1]
test edi, edi
mov byte [ebx + 0x4b], al
mov dword [ebx + 0x4c], esi
jle 0x4ff551
nop
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff528
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff533
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ff54a
mov eax, 1
mov ecx, esi
shl eax, cl
or dword [ebx + 0x4c], eax
add byte [ebx + 0x321], 0xff
add esi, 1
cmp esi, edi
jl 0x4ff500
cmp byte [ebx + 0x48], 0
je 0x4ff760
xor ecx, ecx
cmp dword [esp + 0x20], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], ecx
jle 0x4ff6ea
lea edx, [ebx + 0x50]
mov dword [esp + 0x18], edx
mov al, byte [ebx + 0x48]
shr al, cl
test al, 1
je 0x4ff6cd
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff5ab
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff5b6
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ff6cd
mov edx, dword [ebx + 0x334]
cmp edx, 2
mov dword [esp + 0x34], 1
jbe 0x4ff5ee
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4ff5f9
push 2
push ebx
call fcn.00530870
add esp, 8
lea ecx, [eax + eax*2]
xor edi, edi
cmp byte [ebx + 0x321], 0
mov dword [esp + 0x2c], ecx
jbe 0x4ff6cd
mov edx, dword [esp + 0x18]
mov dword [esp + 0x38], edx
jmp 0x4ff620
mov edx, dword [ebx + 0x334]
cmp edx, 4
jbe 0x4ff648
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
jmp 0x4ff653
push 4
push ebx
call fcn.00530870
add esp, 8
mov edx, dword [ebx + 0x334]
cmp edx, 4
mov esi, eax
jbe 0x4ff67d
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
jmp 0x4ff688
push 4
push ebx
call fcn.00530870
add esp, 8
cmp esi, 0xf
jne 0x4ff692
shl eax, 0xe
jmp 0x4ff698
or eax, 0x10
shl eax, 0xd
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
fild dword [esp + 0x24]
add esi, eax
mov eax, dword [esp + 0x38]
fmul qword [esi*8 + 0x630e50]
add edi, 1
add eax, 8
mov dword [esp + 0x38], eax
fstp qword [eax - 8]
movzx ecx, byte [ebx + 0x321]
cmp edi, ecx
jl 0x4ff620
mov ecx, dword [esp + 0x28]
add dword [esp + 0x18], 0x90
add ecx, 1
cmp ecx, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
jl 0x4ff576
cmp byte [ebx + 2], 2
jne 0x4ff80b
cmp byte [ebx + 0x49], 0
je 0x4ff760
cmp dword [esp + 0x34], 0
je 0x4ff760
xor esi, esi
cmp byte [ebx + 0x321], 0
jbe 0x4ff760
lea edi, [ebx + 0xe0]
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff73a
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff745
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ff74f
fld qword [edi]
fchs
fstp qword [edi]
movzx edx, byte [ebx + 0x321]
add esi, 1
add edi, 8
cmp esi, edx
jl 0x4ff712
cmp byte [ebx + 2], 2
jne 0x4ff80b
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff792
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff79d
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ff80b
cmp byte [ebx + 0x48], 0
mov byte [ebx + 0x322], 0
je 0x4ff7b4
movzx edi, byte [ebx + 0x4a]
jmp 0x4ff7b9
mov edi, 0xfd
xor esi, esi
jmp 0x4ff7c0
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff7e8
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff7f3
push 1
push ebx
call fcn.00530870
add esp, 8
mov ecx, esi
shl al, cl
add esi, 1
or byte [ebx + 0x322], al
mov eax, dword [esi*4 + 0x6e6cac]
cmp eax, edi
jl 0x4ff7c0
cmp byte [ebx + 0x48], 0
mov byte [esp + 0x33], 0
mov byte [esp + 0x1f], 0
je 0x4ff852
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4ff843
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4ff84e
push 2
push ebx
call fcn.00530870
add esp, 8
mov byte [esp + 0x33], al
mov edi, dword [esp + 0x20]
xor esi, esi
test edi, edi
jle 0x4ff89d
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4ff884
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4ff88f
push 2
push ebx
call fcn.00530870
add esp, 8
mov byte [esp + esi + 0xac], al
add esi, 1
cmp esi, edi
jl 0x4ff85c
cmp byte [ebx + 3], 0
je 0x4ff8da
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ff8cb
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ff8d6
push 1
push ebx
call fcn.00530870
add esp, 8
mov byte [esp + 0x1f], al
xor edx, edx
test edi, edi
mov dword [esp + 0x28], edx
jle 0x4ff95d
cmp byte [esp + edx + 0xac], 0
je 0x4ff952
mov al, byte [ebx + 0x48]
mov cl, dl
shr al, cl
test al, 1
je 0x4ff905
mov cl, byte [ebx + 0x4a]
mov byte [ebx + edx + 0x323], cl
jmp 0x4ff952
mov esi, dword [ebx + 0x334]
cmp esi, 6
jbe 0x4ff92d
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, esi
shl eax, cl
shr eax, 0x1a
add esi, 0xfffffffa
mov dword [ebx + 0x334], esi
jmp 0x4ff93c
push 6
push ebx
call fcn.00530870
mov edx, dword [esp + 0x30]
add esp, 8
cmp eax, 0x3c
jg 0x4ff45e
mov cl, 3
imul cl
add al, 0x49
mov byte [ebx + edx + 0x323], al
add edx, 1
cmp edx, edi
mov dword [esp + 0x28], edx
jl 0x4ff8e4
cmp byte [esp + 0x33], 0
mov byte [esp + 0x17], 0
je 0x4ff9e4
movzx esi, byte [esp + 0x33]
movzx edx, byte [ebx + 0x4a]
movzx eax, byte [ebx + 0x4b]
sub eax, edx
lea ecx, [esi - 1]
mov edi, 3
shl edi, cl
cdq
mov byte [esp + 0x17], 0x40
idiv edi
mov edi, eax
mov eax, dword [ebx + 0x334]
cmp eax, 4
jbe 0x4ff9b6
mov edx, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, eax
shl edx, cl
shr edx, 0x1c
add eax, 0xfffffffc
mov dword [ebx + 0x334], eax
mov ecx, edx
jmp 0x4ff9c3
push 4
push ebx
call fcn.00530870
add esp, 8
mov ecx, eax
movzx eax, byte [ebx + 0x4a]
push edi
lea eax, [eax + ebx + 0x4ab]
add cl, cl
push esi
mov edi, ebx
call fcn.004fe750
add esp, 8
test eax, eax
jne 0x4ff45e
xor esi, esi
cmp dword [esp + 0x20], esi
jle 0x4ffac7
lea ecx, [ebx + 0x6ac]
mov dword [esp + 0x18], ecx
lea ebx, [ebx]
mov al, byte [esp + esi + 0xac]
test al, al
je 0x4ffab2
movzx eax, al
mov dl, 1
mov ecx, esi
shl dl, cl
lea ecx, [eax - 1]
mov dword [esp + 0x24], eax
movzx eax, byte [ebx + esi + 0x323]
or byte [esp + 0x17], dl
mov edi, 3
shl edi, cl
lea eax, [eax + edi - 4]
cdq
idiv edi
mov edi, eax
mov eax, dword [ebx + 0x334]
cmp eax, 4
jbe 0x4ffa65
mov edx, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, eax
shl edx, cl
shr edx, 0x1c
add eax, 0xfffffffc
mov dword [ebx + 0x334], eax
mov ecx, edx
jmp 0x4ffa72
push 4
push ebx
call fcn.00530870
add esp, 8
mov ecx, eax
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
push edi
push edx
mov edi, ebx
mov byte [eax - 1], cl
call fcn.004fe750
add esp, 8
test eax, eax
jne 0x4ff45e
mov eax, dword [ebx + 0x334]
cmp eax, 2
jbe 0x4ffaa7
add eax, 0xfffffffe
mov dword [ebx + 0x334], eax
jmp 0x4ffab2
push 2
push ebx
call fcn.00530870
add esp, 8
add dword [esp + 0x18], 0x200
add esi, 1
cmp esi, dword [esp + 0x20]
jl 0x4ffa00
cmp byte [esp + 0x1f], 0
je 0x4ffb2e
mov edx, dword [ebx + 0x334]
or byte [esp + 0x17], 0x20
cmp edx, 4
jbe 0x4ffafb
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
jmp 0x4ffb06
push 4
push ebx
call fcn.00530870
add esp, 8
movzx edx, byte [esp + 0x1f]
mov ecx, eax
push 2
lea eax, [ebx + 0x10ac]
push edx
mov edi, ebx
mov byte [ebx + 0x10ab], cl
call fcn.004fe750
add esp, 8
test eax, eax
jne 0x4ff45e
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ffb56
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ffb61
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ffba4
mov edx, dword [ebx + 0x334]
cmp edx, 0xb
mov byte [esp + 0x17], 0xff
jbe 0x4ffb92
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x15
add edx, 0xfffffff5
mov dword [ebx + 0x334], edx
jmp 0x4ffb9d
push 0xb
push ebx
call fcn.00530870
add esp, 8
mov word [ebx + 0x328], ax
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ffbcc
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ffbd7
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ffcec
mov edx, dword [ebx + 0x334]
cmp edx, 6
mov byte [esp + 0x17], 0xff
jbe 0x4ffc0c
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1a
add edx, 0xfffffffa
mov dword [ebx + 0x334], edx
jmp 0x4ffc17
push 6
push ebx
call fcn.00530870
add esp, 8
cmp byte [ebx + 0x48], 0
mov byte [ebx + 0x33c], al
je 0x4ffc5c
mov edx, dword [ebx + 0x334]
cmp edx, 7
jbe 0x4ffc4b
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x19
add edx, 0xfffffff9
mov dword [ebx + 0x334], edx
jmp 0x4ffc56
push 7
push ebx
call fcn.00530870
add esp, 8
mov byte [ebx + 0x33d], al
cmp dword [esp + 0x20], 0
jle 0x4ffcad
mov edi, dword [esp + 0x20]
lea esi, [ebx + 0x371]
lea ecx, [ecx]
mov edx, dword [ebx + 0x334]
cmp edx, 7
jbe 0x4ffc98
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x19
add edx, 0xfffffff9
mov dword [ebx + 0x334], edx
jmp 0x4ffca3
push 7
push ebx
call fcn.00530870
add esp, 8
mov byte [esi], al
add esi, 0x34
sub edi, 1
jne 0x4ffc70
cmp byte [ebx + 3], 0
je 0x4ffcec
mov edx, dword [ebx + 0x334]
cmp edx, 7
jbe 0x4ffcdb
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x19
add edx, 0xfffffff9
mov dword [ebx + 0x334], edx
jmp 0x4ffce6
push 7
push ebx
call fcn.00530870
add esp, 8
mov byte [ebx + 0x475], al
cmp byte [ebx + 0x48], 0
je 0x4ffdb0
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ffd1e
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ffd29
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ffdb0
mov edx, dword [ebx + 0x334]
or byte [esp + 0x17], 0x40
cmp edx, 3
jbe 0x4ffd5e
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1d
add edx, 0xfffffffd
mov dword [ebx + 0x334], edx
jmp 0x4ffd69
push 3
push ebx
call fcn.00530870
add esp, 8
mov edx, dword [ebx + 0x334]
mov cl, 9
sub cl, al
cmp edx, 3
mov byte [ebx + 0x4a9], cl
jbe 0x4ffd9b
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1d
add edx, 0xfffffffd
mov dword [ebx + 0x334], edx
jmp 0x4ffda6
push 3
push ebx
call fcn.00530870
add esp, 8
mov dl, 9
sub dl, al
mov byte [ebx + 0x4aa], dl
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4ffdd8
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4ffde3
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x4ffeef
cmp byte [ebx + 0x48], 0
mov byte [esp + 0x17], 0xff
je 0x4ffe2f
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4ffe1e
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4ffe29
push 2
push ebx
call fcn.00530870
add esp, 8
mov byte [ebx + 0x33e], al
cmp dword [esp + 0x20], 0
jle 0x4ffe7d
mov edi, dword [esp + 0x20]
lea esi, [ebx + 0x372]
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4ffe68
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4ffe73
push 2
push ebx
call fcn.00530870
add esp, 8
mov byte [esi], al
add esi, 0x34
sub edi, 1
jne 0x4ffe40
cmp byte [ebx + 0x48], 0
je 0x4ffea5
cmp byte [ebx + 0x33e], 1
jne 0x4ffea5
lea eax, [ebx + 0x33f]
push eax
mov esi, ebx
call fcn.004fe850
add esp, 4
test eax, eax
jne 0x4ff45e
mov edi, dword [esp + 0x20]
test edi, edi
mov dword [esp + 0x28], 0
jle 0x4ffefe
lea edi, [ebx + 0x373]
jmp 0x4ffec0
cmp byte [edi - 1], 1
jne 0x4ffed9
push edi
mov esi, ebx
call fcn.004fe850
add esp, 4
test eax, eax
jne 0x4ff45e
mov eax, dword [esp + 0x28]
add eax, 1
add edi, 0x34
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
jl 0x4ffec0
jmp 0x4ffefa
cmp byte [esp + 0x17], 0
je 0x500087
mov edi, dword [esp + 0x20]
cmp byte [ebx + 0x33c], 0
jne 0x4fffa6
cmp byte [ebx + 0x48], 0
mov dl, 0xf8
je 0x4fff1f
test byte [ebx + 0x33d], dl
jne 0x4fffa6
cmp byte [ebx + 3], 0
je 0x4fff2d
test byte [ebx + 0x475], dl
jne 0x4fffa6
xor eax, eax
test edi, edi
jle 0x4fff4e
lea ecx, [ebx + 0x371]
lea esp, [esp]
test byte [ecx], dl
jne 0x4fffa6
add eax, 1
add ecx, 0x34
cmp eax, edi
jl 0x4fff40
push 0x100
lea ecx, [ebx + 0x5ab]
push 0
push ecx
call fcn.005c0060
add esp, 0xc
test edi, edi
jle 0x4fff8b
lea esi, [ebx + 0x7ab]
mov edi, edi
push 0x100
push 0
push esi
call fcn.005c0060
add esp, 0xc
add esi, 0x200
sub edi, 1
jne 0x4fff70
push 0x100
lea edx, [ebx + 0x11ab]
push 0
push edx
call fcn.005c0060
add esp, 0xc
jmp 0x500087
cmp byte [ebx + 0x48], 0
je 0x4fffee
test byte [esp + 0x17], 0x40
je 0x4fffee
xor ecx, ecx
mov ch, byte [ebx + 0x4aa]
xor edx, edx
mov dh, byte [ebx + 0x4a9]
lea eax, [ebx + 0x4ab]
push eax
movzx eax, byte [ebx + 0x4b]
push ecx
movzx ecx, byte [ebx + 0x4a]
push edx
movzx edx, byte [ebx + 0x320]
push eax
push ecx
push edx
lea eax, [ebx + 0x33d]
push eax
push ebx
call fcn.00533d00
add esp, 0x20
xor esi, esi
test edi, edi
jle 0x500052
movzx ecx, byte [esp + 0x17]
lea edx, [ebx + 0x371]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], edx
lea edi, [ebx + 0x6ab]
mov ecx, esi
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
test ecx, eax
je 0x50003e
movzx edx, byte [ebx + esi + 0x323]
mov eax, dword [esp + 0x18]
push edi
push 0
push 0
push edx
push 0
push 0
push eax
push ebx
call fcn.00533d00
add esp, 0x20
add dword [esp + 0x18], 0x34
add esi, 1
add edi, 0x200
cmp esi, dword [esp + 0x20]
jl 0x50000d
cmp byte [ebx + 3], 0
je 0x500087
test byte [esp + 0x17], 0x20
je 0x500087
lea ecx, [ebx + 0x10ab]
push ecx
push 0
push 0
push 7
push 0
push 0
lea edx, [ebx + 0x475]
push edx
push ebx
mov byte [ebx + 0x476], 2
call fcn.00533d00
add esp, 0x20
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x5000af
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x5000ba
push 1
push ebx
call fcn.00530870
add esp, 8
test eax, eax
je 0x500128
mov edx, dword [ebx + 0x334]
cmp edx, 9
jbe 0x5000e6
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x17
add edx, 0xfffffff7
mov dword [ebx + 0x334], edx
jmp 0x5000f1
push 9
push ebx
call fcn.00530870
add esp, 8
test eax, eax
mov esi, eax
je 0x500128
jmp 0x500100
mov eax, dword [ebx + 0x334]
sub esi, 1
cmp eax, 8
jbe 0x500119
add eax, 0xfffffff8
mov dword [ebx + 0x334], eax
jmp 0x500124
push 8
push ebx
call fcn.00530870
add esp, 8
test esi, esi
jne 0x500100
mov eax, dword [ebx + 0x12ac]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x18]
test al, 0x10
je 0x500141
add dword [esp + 0x2c], 0x800
fld qword [ebx + 0x10]
movzx ecx, byte [ebx + 2]
sub esp, 0x18
lea edx, [esp + 0x90]
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fld qword [ebx + 0x38]
fstp qword [esp]
push eax
push ecx
push edx
call fcn.005324f0
mov dword [esp + 0xd0], eax
or eax, 0xffffffff
add esp, 0x24
cmp dword [esp + 0x20], 0
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], eax
mov byte [esp + 0x1f], 0
mov dword [esp + 0x28], 0
jle 0x5002a5
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x38], ecx
lea eax, [ebx + 0x323]
lea ecx, [esp + 0xb4]
lea edx, [ebx + 0x6ab]
sub ecx, eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x3c], ecx
lea ecx, [ecx]
mov eax, dword [esp + 0x18]
movzx ecx, byte [eax]
mov edx, dword [esp + 0x3c]
movzx eax, byte [edx + eax]
mov edx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x2c]
push eax
sub esp, 8
fld qword [esp + ecx*8 + 0x88]
lea edi, [esp + 0x50]
mov esi, ebx
fstp qword [esp]
push edx
mov edx, dword [esp + 0x48]
call fcn.004fe990
mov al, byte [ebx + 0x48]
mov cl, byte [esp + 0x3c]
shr al, cl
add esp, 0x14
test al, 1
je 0x50024d
cmp byte [esp + 0x1f], 0
jne 0x500247
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0xb4]
push ecx
mov edx, edi
push edx
mov edx, dword [esp + 0x28]
push eax
lea ecx, [esp + 0x84]
push ecx
push edx
mov byte [esp + 0x33], 1
call fcn.004fed90
add esp, 0x14
movzx eax, byte [ebx + 0x4b]
jmp 0x500254
mov eax, dword [esp + 0x18]
movzx eax, byte [eax]
mov ecx, dword [esp + 0x24]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx + edx*8]
fldz
add eax, 1
fstp qword [ecx]
add ecx, 8
cmp eax, 0x100
jl 0x500262
mov eax, dword [esp + 0x28]
add dword [esp + 0x34], 0x200
add dword [esp + 0x38], 0x800
add dword [esp + 0x18], 1
add dword [esp + 0x24], 0x100
add eax, 1
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
jl 0x5001d0
cmp byte [ebx + 2], 2
jne 0x50032a
mov al, byte [ebx + 0x323]
mov cl, byte [ebx + 0x324]
cmp al, cl
jae 0x5002c4
movzx edx, al
mov dword [esp + 0x18], edx
jmp 0x5002cb
movzx eax, cl
mov dword [esp + 0x18], eax
movzx edx, byte [ebx + 0x322]
mov esi, dword [esp + 0x2c]
mov eax, 0xd
mov edi, 0x6e6cb0
test dl, 1
jne 0x5002ee
mov eax, dword [edi]
sar edx, 1
add edi, 4
jmp 0x500322
mov ecx, dword [edi]
sar edx, 1
add edi, 4
cmp ecx, dword [esp + 0x18]
jle 0x500300
mov ecx, dword [esp + 0x18]
nop
fld qword [esi + eax*8]
add eax, 1
cmp eax, ecx
fld qword [esi + eax*8 + 0x7f8]
fld st(0)
fadd st(2)
fstp qword [esi + eax*8 - 8]
fsubp st(1)
fstp qword [esi + eax*8 + 0x7f8]
jl 0x500300
cmp eax, dword [esp + 0x18]
jl 0x5002e0
jmp 0x50032e
mov esi, dword [esp + 0x2c]
cmp byte [ebx + 3], 0
je 0x5003ae
mov eax, dword [esp + 0x2c]
push 7
push 0
sub esp, 8
test byte [ebx + 0x18], 0x10
lea edx, [ebx + 0x10ab]
lea edi, [esp + 0x50]
mov esi, ebx
je 0x500397
fld qword [ebx + 0x38]
add eax, 0xfffff800
fstp qword [esp]
push eax
call fcn.004fe990
mov edx, dword [esp + 0x40]
xor eax, eax
lea edi, [edx - 0x7c8]
mov ecx, 0x1f2
rep stosd dword es:[edi], eax
fld qword [ebx + 0x28]
fstp qword [esp + 0xc]
add esp, 0xc
lea ecx, [edx + 0x2800]
push ecx
lea eax, [edx - 0x800]
push eax
call fcn.00530db0
add esp, 0x10
jmp 0x5003aa
fldz
add eax, 0x2800
fstp qword [esp]
push eax
call fcn.004fe990
add esp, 0x14
mov esi, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x18]
mov dl, byte [esp + 0xa4]
and ecx, 0xf
movzx edi, byte [ecx + 0x631118]
mov ecx, dword [esp + 0x20]
xor eax, eax
cmp edi, ecx
jge 0x5004ae
mov eax, 1
cmp ecx, eax
jle 0x5003f4
lea esp, [esp]
cmp byte [esp + eax + 0xa4], dl
jne 0x5004ae
add eax, 1
cmp eax, ecx
jl 0x5003e0
fld qword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
movzx edx, byte [ebx + 2]
sub esp, 0x18
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fldz
fstp qword [esp]
push eax
push edx
push esi
call fcn.005336c0
add esp, 0x24
cmp dword [ebx + 0x12b0], 0
jne 0x50045d
fld qword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
movzx ecx, byte [ebx + 2]
sub esp, 0x18
lea edx, [esi + 0x3000]
mov dword [ebx + 0x12b0], 1
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fldz
fstp qword [esp]
push eax
push ecx
push edx
call fcn.005336c0
add esp, 0x24
cmp byte [esp + 0xa4], 0
je 0x5005c6
test edi, edi
jle 0x5005f4
fld qword [ebx + 0x28]
sub esp, 8
lea eax, [esi + 0x3000]
fstp qword [esp]
push eax
push esi
call fcn.00531930
add esp, 0x10
add esi, 0x800
sub edi, 1
jne 0x500473
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.005bf6a4
mov esp, ebp
pop ebp
ret
cmp eax, ecx
jge 0x5003f4
cmp dword [ebx + 0x12b0], 0
je 0x5004e1
mov eax, dword [ebx + 0x18]
movzx edx, byte [ebx + 2]
push eax
push edx
lea eax, [esi + 0x3000]
push eax
mov dword [ebx + 0x12b0], 0
call fcn.00533b50
add esp, 0xc
xor edi, edi
cmp dword [esp + 0x20], edi
mov dword [esp + 0x28], edi
jle 0x500586
mov dword [esp + 0x18], esi
fldz
mov edx, 1
mov ecx, edi
fld st(0)
shl edx, cl
test dword [esp + 0xac], edx
jne 0x500510
fstp st(0)
fld qword [ebx + 0x28]
fxch st(1)
fcomp qword [esp + edi*8 + 0x78]
fnstsw ax
test ah, 0x44
jnp 0x500555
mov eax, dword [esp + 0x18]
sub esp, 8
cmp byte [esp + edi + 0xac], 0
fstp qword [esp]
je 0x500543
lea ecx, [eax + 0x3000]
push ecx
push eax
call fcn.00531930
add esp, 0x10
jmp 0x50056d
lea edx, [eax + 0x3000]
push edx
push eax
call fcn.00530db0
add esp, 0x10
jmp 0x50056d
mov esi, dword [esp + 0x18]
lea edi, [esi + 8]
fstp qword [esi]
mov ecx, 0x1fe
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
add dword [esp + 0x18], 0x800
add edi, 1
cmp edi, dword [esp + 0x20]
mov dword [esp + 0x28], edi
jl 0x5004f5
fld qword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
movzx ecx, byte [ebx + 2]
sub esp, 0x18
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fld qword [ebx + 0x28]
fstp qword [esp]
push eax
push ecx
push esi
call fcn.005336c0
add esp, 0x24
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.005bf6a4
mov esp, ebp
pop ebp
ret
test edi, edi
jle 0x5005f4
lea ebx, [ebx]
fld qword [ebx + 0x28]
sub esp, 8
lea ecx, [esi + 0x3000]
fstp qword [esp]
push ecx
push esi
call fcn.00530db0
add esp, 0x10
add esi, 0x800
sub edi, 1
jne 0x5005d0
mov ecx, dword [esp + 0xbc]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.005bf6a4
mov esp, ebp
pop ebp
ret