Function at 0x5f2de0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
lea esp, [esp - 0xdc]
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x70], ecx
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x64], 0
xor eax, eax
push fcn.005f2da0
push ebp
push 0x414930
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp dword [eax + 4], 0
je 0x5f4992
mov esi, esi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
sub eax, 1
mov ecx, eax
test ecx, ecx
jl 0x5f2e80
mov dword [ebp - 0x6c], 0xffffffff
lea esi, [esi]
add dword [ebp - 0x6c], 1
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
imul eax, dword [ebp - 0x6c], 0x30
cmp byte [edx + eax + 0x2c], 0
jne 0x5f2e78
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
imul ebx, dword [ebp - 0x6c], 0x30
mov eax, dword [eax + 0xc]
mov dword [edx + ebx + 0x28], eax
mov esi, esi
cmp ecx, dword [ebp - 0x6c]
jg 0x5f2e50
lea esi, [esi]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x14], 0
je 0x5f2e9a
mov eax, dword [ebp - 0x70]
sub eax, 2
cmp eax, 2
jae 0x5f2e9a
mov byte [ebp - 0x34], 1
jmp 0x5f2e9e
mov byte [ebp - 0x34], 0
mov eax, dword [ebp - 4]
cmp dword [eax + 4], 1
jne 0x5f3004
cmp byte [ebp - 0x34], 0
je 0x5f2f5b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
add eax, 0x10
mov ecx, eax
movzx eax, word [ecx]
movzx eax, byte [eax + 0x725980]
shl eax, 0x10
and eax, 0xff0000
and edx, 0xff00ffff
or edx, eax
movzx eax, word [ecx + 2]
movzx eax, byte [eax + 0x725980]
shl eax, 8
and eax, 0xff00
and edx, 0xffff00ff
or edx, eax
movzx eax, word [ecx + 4]
movzx eax, byte [eax + 0x725980]
and edx, 0xffffff00
or edx, eax
movzx eax, word [ecx + 6]
shr eax, 8
and eax, 0xff
shl eax, 0x18
and eax, 0xff000000
and edx, 0xffffff
or edx, eax
push edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
push dword [eax + 8]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
cmp dword [eax + 0x28], 1
sete al
push eax
cmp dword [ebp - 0x70], 2
sete al
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov eax, dword [ebp - 0x68]
xor cl, cl
call fcn.005efad0
jmp 0x5f4992
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
add eax, 0x10
mov ecx, eax
movzx eax, word [ecx]
movzx eax, byte [eax + 0x725980]
shl eax, 0x10
and eax, 0xff0000
and edx, 0xff00ffff
or edx, eax
movzx eax, word [ecx + 2]
movzx eax, byte [eax + 0x725980]
shl eax, 8
and eax, 0xff00
and edx, 0xffff00ff
or edx, eax
movzx eax, word [ecx + 4]
movzx eax, byte [eax + 0x725980]
and edx, 0xffffff00
or edx, eax
movzx eax, word [ecx + 6]
shr eax, 8
and eax, 0xff
shl eax, 0x18
and eax, 0xff000000
and edx, 0xffffff
or edx, eax
push edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
push dword [eax + 8]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
cmp dword [eax + 0x28], 1
sete al
push eax
push dword [ebp - 0x70]
mov eax, dword [ebp - 4]
movzx eax, byte [eax + 0x15]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov eax, dword [ebp - 0x68]
xor cl, cl
call fcn.005ef4f0
jmp 0x5f4992
push 0
lea eax, [ebp - 0x44]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.005a4ac0
mov byte [ebp - 0xd4], 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
sub eax, 1
mov ebx, eax
test ebx, ebx
jl 0x5f3148
mov dword [ebp - 0x6c], 0xffffffff
mov esi, esi
add dword [ebp - 0x6c], 1
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x68]
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
imul eax, dword [ebp - 0x6c], 0x30
mov eax, dword [edx + eax]
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x1c]
call fcn.0060b150
test al, al
je 0x5f3116
mov eax, dword [ebp - 0x18]
add eax, 1
push eax
lea eax, [ebp - 0x60]
push eax
mov eax, dword [ebp - 0x20]
add eax, 1
mov ecx, eax
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
call fcn.005a4ac0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
imul edx, dword [ebp - 0x6c], 0x30
lea edi, [eax + edx + 0x18]
lea esi, [ebp - 0x60]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
mov al, byte [ebp - 0xd4]
test al, al
je 0x5f30cb
mov byte [ebp - 0xd4], 0
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
imul eax, dword [ebp - 0x6c], 0x30
lea edi, [ebp - 0x44]
lea esi, [edx + eax + 0x18]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
jmp 0x5f313f
mov eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x1c]
jle 0x5f30dc
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x44], eax
lea esi, [esi]
mov eax, dword [ebp - 0x40]
cmp eax, dword [ebp - 0x14]
jle 0x5f30ec
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x40], eax
mov esi, esi
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x20]
jg 0x5f3100
mov eax, dword [ebp - 0x20]
add eax, 1
mov dword [ebp - 0x3c], eax
lea esi, [esi]
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x18]
jg 0x5f313f
mov eax, dword [ebp - 0x18]
add eax, 1
mov dword [ebp - 0x38], eax
lea esi, [esi]
jmp 0x5f313f
push 0
lea eax, [ebp - 0x60]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.005a4ac0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
imul edx, dword [ebp - 0x6c], 0x30
lea edi, [eax + edx + 0x18]
lea esi, [ebp - 0x60]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
cmp ebx, dword [ebp - 0x6c]
jg 0x5f3038
mov al, byte [ebp - 0xd4]
test al, al
jne 0x5f4992
mov esi, esi
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x3c]
sub eax, 1
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x38]
sub eax, 1
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x54]
push eax
mov edx, 0x709e10
lea eax, [ebp - 8]
mov ecx, 1
call fcn.0040d090
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
sub eax, 1
mov edi, eax
test edi, edi
jl 0x5f3214
mov dword [ebp - 0x6c], 0xffffffff
lea esi, [esi]
nop
add dword [ebp - 0x6c], 1
mov esi, 0x709dc0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
imul edx, dword [ebp - 0x6c], 0x30
mov eax, dword [eax + edx]
lea edx, [ebp - 0x64]
mov ecx, dword [ebp - 4]
mov ebx, dword [ecx + 8]
imul ecx, dword [ebp - 0x6c], 0x30
mov ecx, dword [ebx + ecx]
mov ecx, dword [ecx]
call dword [ecx + 0x70]
mov edx, dword [ebp - 0x64]
mov eax, dword [ebp - 8]
imul ecx, dword [ebp - 0x6c], 0x14
lea eax, [eax + ecx + 0x10]
mov ecx, esi
call fcn.0040d070
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
sub eax, edx
add eax, 2
shl eax, 1
mov edx, eax
mov eax, dword [ebp - 8]
imul ecx, dword [ebp - 0x6c], 0x14
add eax, ecx
call fcn.0040ffb0
cmp edi, dword [ebp - 0x6c]
jg 0x5f31b0
mov esi, esi
mov eax, dword [ebp - 4]
cmp byte [eax + 0x15], 0
je 0x5f3233
push dword [0x709c3c]
push dword [0x709c3c]
lea eax, [ebp - 0x30]
call fcn.00578d90
jmp 0x5f324d
fldz
lea esp, [esp - 4]
fstp dword [esp]
fldz
lea esp, [esp - 4]
fstp dword [esp]
lea eax, [ebp - 0x30]
call fcn.00578d90
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
sub eax, edx
add eax, 1
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x54]
push eax
mov edx, 0x709e88
lea eax, [ebp - 0x48]
mov ecx, 1
call fcn.0040d090
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x54]
push eax
mov edx, 0x709e38
lea eax, [ebp - 0xc]
mov ecx, 1
call fcn.0040d090
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x78], eax
cmp eax, dword [ebp - 0x14]
jl 0x5f4928
mov eax, dword [ebp - 0x14]
sub eax, 1
mov dword [ebp - 0x98], eax
lea esi, [esi]
nop
add dword [ebp - 0x98], 1
mov eax, dword [ebp - 0x20]
add eax, 1
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x1c]
sub eax, 1
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
sub eax, 1
mov ebx, eax
test ebx, ebx
jl 0x5f3378
mov dword [ebp - 0x6c], 0xffffffff
lea esi, [esi]
add dword [ebp - 0x6c], 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
imul edx, dword [ebp - 0x6c], 0x30
lea edx, [eax + edx + 0x18]
mov eax, dword [ebp - 0x98]
cmp eax, dword [edx + 4]
jl 0x5f336c
mov eax, dword [ebp - 0x98]
cmp eax, dword [edx + 0xc]
jge 0x5f336c
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x6c]
mov dword [edx + ecx*4], eax
add dword [ebp - 0x10], 1
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
sub eax, edx
add eax, 1
shl eax, 1
mov edx, eax
mov eax, dword [ebp - 8]
imul ecx, dword [ebp - 0x6c], 0x14
mov eax, dword [eax + ecx]
xor cl, cl
call fcn.00403910
mov edx, dword [ebp - 8]
imul ecx, dword [ebp - 0x6c], 0x14
mov eax, dword [ebp - 0x20]
add eax, 1
mov dword [edx + ecx + 4], eax
mov edx, dword [ebp - 8]
imul ecx, dword [ebp - 0x6c], 0x14
mov eax, dword [ebp - 0x1c]
sub eax, 1
mov dword [edx + ecx + 8], eax
mov esi, esi
cmp ebx, dword [ebp - 0x6c]
jg 0x5f32f0
lea esi, [esi]
cmp byte [ebp - 0x34], 0
je 0x5f33d6
mov dword [ebp - 0x94], 0xffffffff
mov edx, dword [ebp - 0x94]
lea eax, [edx + 1]
mov dword [ebp - 0x94], eax
lea eax, [eax + eax + 1]
mov dword [ebp - 0x54], eax
fild dword [ebp - 0x54]
fld xword [0x709c90]
fmulp st(1)
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x54], eax
fild dword [ebp - 0x54]
faddp st(1)
fstp dword [ebp - 0x54]
fld dword [ebp - 0x54]
lea esp, [esp - 4]
fstp dword [esp]
mov eax, ebp
call fcn.005f49b0
cmp dword [ebp - 0x94], 0xf
jl 0x5f3388
jmp 0x5f33f9
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x54], eax
fild dword [ebp - 0x54]
fadd dword [0x709c40]
fsub dword [ebp - 0x2c]
lea esp, [esp - 4]
fstp dword [esp]
mov eax, ebp
call fcn.005f49b0
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x1c]
jge 0x5f3408
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
nop
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0x20]
jle 0x5f3418
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x28], eax
mov esi, esi
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x28]
jg 0x5f4918
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x24]
sub eax, edx
add eax, 1
shl eax, 4
mov edx, eax
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x1c]
sub eax, ebx
shl eax, 4
add eax, ecx
xor cl, cl
call fcn.00403910
cmp byte [ebp - 0x34], 0
je 0x5f3755
mov eax, dword [ebp - 0x10]
sub eax, 1
mov dword [ebp - 0xa8], eax
test eax, eax
jl 0x5f3a50
mov dword [ebp - 0x6c], 0xffffffff
add dword [ebp - 0x6c], 1
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x6c]
mov eax, dword [eax + edx*4]
imul eax, eax, 0x14
add eax, ecx
mov dword [ebp - 0xb4], eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 8]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x6c]
mov eax, dword [eax + edx*4]
imul eax, eax, 0x30
lea edi, [ecx + eax]
mov edx, dword [ebp - 0xb4]
mov eax, dword [edx + 4]
cmp eax, dword [edx + 8]
jg 0x5f3740
mov edx, dword [ebp - 0xb4]
mov eax, dword [edx + 4]
cmp eax, dword [ebp - 0x1c]
jge 0x5f34cc
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xb4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0xb4]
mov edx, dword [eax + 8]
cmp edx, dword [ebp - 0x20]
jle 0x5f34e8
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0xb4]
mov dword [edx + 8], eax
mov esi, esi
cmp dword [edi + 8], 0
je 0x5f3661
mov ecx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xb4]
mov edx, dword [eax + 4]
mov eax, dword [edi + 8]
mov ebx, dword [edi + 8]
mov ebx, dword [ebx]
call dword [ebx + 0xc]
mov edx, dword [edi + 8]
mov eax, dword [edx]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x80], edx
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0x1c]
sub eax, edx
shl eax, 1
add eax, dword [ecx]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0xb4]
mov esi, dword [eax + 8]
mov eax, dword [ebp - 0xb4]
cmp esi, dword [eax + 4]
jl 0x5f3740
mov eax, dword [ebp - 0xb4]
mov edx, dword [eax + 4]
lea eax, [edx - 1]
mov dword [ebp - 0xa4], eax
lea esi, [esi]
add dword [ebp - 0xa4], 1
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xa4]
sub edx, eax
mov eax, edx
shl eax, 4
lea ebx, [ecx + eax]
mov eax, dword [ebp - 0x90]
cmp word [eax], 0
je 0x5f363e
mov eax, dword [ebp - 0x80]
mov edx, dword [ebp - 0x7c]
call edx
mov edx, eax
shr edx, 0x10
and edx, 0xff
mov dx, word [edx + edx + 0x725580]
mov word [ebp - 0x50], dx
mov edx, eax
shr edx, 8
and edx, 0xff
mov dx, word [edx + edx + 0x725580]
mov word [ebp - 0x4e], dx
mov edx, eax
and edx, 0xff
mov dx, word [edx + edx + 0x725580]
mov word [ebp - 0x4c], dx
shr eax, 0x18
and eax, 0xff
mov edx, eax
shl edx, 8
add eax, edx
mov word [ebp - 0x4a], ax
mov eax, dword [ebp - 0x90]
movzx edx, word [eax]
movzx eax, word [ebp - 0x4a]
imul edx, eax
mov eax, edx
shr eax, 0x14
mov dword [ebp - 0x88], eax
test eax, eax
je 0x5f3646
movzx eax, word [ebp - 0x50]
imul eax, dword [ebp - 0x88]
add dword [ebx], eax
movzx eax, word [ebp - 0x4e]
imul eax, dword [ebp - 0x88]
add dword [ebx + 4], eax
movzx eax, word [ebp - 0x4c]
imul eax, dword [ebp - 0x88]
add dword [ebx + 8], eax
mov eax, dword [ebp - 0x88]
add dword [ebx + 0xc], eax
jmp 0x5f3646
mov eax, dword [ebp - 0x80]
mov edx, dword [ebp - 0x7c]
call edx
add dword [ebp - 0x90], 2
cmp esi, dword [ebp - 0xa4]
jg 0x5f3560
lea esi, [esi]
jmp 0x5f3740
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x50], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0x1c]
sub eax, edx
shl eax, 1
add eax, dword [ecx]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0xb4]
mov edx, dword [eax + 8]
mov eax, dword [ebp - 0xb4]
cmp edx, dword [eax + 4]
jl 0x5f3740
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ecx + 4]
sub eax, 1
mov dword [ebp - 0xa4], eax
nop
add dword [ebp - 0xa4], 1
mov ebx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0xa4]
sub ecx, eax
mov eax, ecx
shl eax, 4
add eax, ebx
mov ecx, dword [ebp - 0x90]
cmp word [ecx], 0
je 0x5f372c
mov ecx, dword [ebp - 0x90]
movzx ebx, word [ecx]
movzx ecx, word [ebp - 0x4a]
imul ebx, ecx
mov ecx, ebx
shr ecx, 0x14
mov dword [ebp - 0x88], ecx
test ecx, ecx
je 0x5f372c
movzx ecx, word [ebp - 0x50]
imul ecx, dword [ebp - 0x88]
add dword [eax], ecx
movzx ecx, word [ebp - 0x4e]
imul ecx, dword [ebp - 0x88]
add dword [eax + 4], ecx
movzx ecx, word [ebp - 0x4c]
imul ecx, dword [ebp - 0x88]
add dword [eax + 8], ecx
mov ecx, dword [ebp - 0x88]
add dword [eax + 0xc], ecx
mov esi, esi
add dword [ebp - 0x90], 2
cmp edx, dword [ebp - 0xa4]
jg 0x5f36b0
nop
mov eax, dword [ebp - 0xa8]
cmp eax, dword [ebp - 0x6c]
jg 0x5f3470
nop
jmp 0x5f3a50
mov eax, dword [ebp - 0x10]
sub eax, 1
mov dword [ebp - 0xac], eax
test eax, eax
jl 0x5f3a50
mov dword [ebp - 0x6c], 0xffffffff
add dword [ebp - 0x6c], 1
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x6c]
mov eax, dword [eax + edx*4]
imul eax, eax, 0x14
add eax, ecx
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 8]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x6c]
mov eax, dword [eax + edx*4]
imul eax, eax, 0x30
lea edi, [ecx + eax]
mov edx, dword [ebp - 0xb8]
mov eax, dword [edx + 4]
cmp eax, dword [edx + 8]
jg 0x5f3a40
mov eax, dword [ebp - 0xb8]
mov edx, dword [eax + 4]
cmp edx, dword [ebp - 0x1c]
jge 0x5f37cc
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0xb8]
mov dword [eax + 4], edx
mov edx, dword [ebp - 0xb8]
mov eax, dword [edx + 8]
cmp eax, dword [ebp - 0x20]
jle 0x5f37e8
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0xb8]
mov dword [eax + 8], edx
mov esi, esi
cmp dword [edi + 8], 0
je 0x5f3961
mov ecx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xb8]
mov edx, dword [eax + 4]
mov eax, dword [edi + 8]
mov ebx, dword [edi + 8]
mov ebx, dword [ebx]
call dword [ebx + 0xc]
mov edx, dword [edi + 8]
mov eax, dword [edx]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x80], edx
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0x1c]
sub eax, edx
shl eax, 1
add eax, dword [ecx]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0xb8]
mov esi, dword [eax + 8]
mov eax, dword [ebp - 0xb8]
cmp esi, dword [eax + 4]
jl 0x5f3a40
mov edx, dword [ebp - 0xb8]
mov eax, dword [edx + 4]
sub eax, 1
mov dword [ebp - 0xa4], eax
lea esi, [esi]
add dword [ebp - 0xa4], 1
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0xa4]
sub eax, edx
shl eax, 4
lea ebx, [ecx + eax]
mov eax, dword [ebp - 0x90]
cmp word [eax], 0
je 0x5f393e
mov eax, dword [ebp - 0x80]
mov edx, dword [ebp - 0x7c]
call edx
mov edx, eax
shr edx, 0x10
and edx, 0xff
mov dx, word [edx + edx + 0x725580]
mov word [ebp - 0x50], dx
mov edx, eax
shr edx, 8
and edx, 0xff
mov dx, word [edx + edx + 0x725580]
mov word [ebp - 0x4e], dx
mov edx, eax
and edx, 0xff
mov dx, word [edx + edx + 0x725580]
mov word [ebp - 0x4c], dx
shr eax, 0x18
and eax, 0xff
mov edx, eax
shl edx, 8
add eax, edx
mov word [ebp - 0x4a], ax
mov eax, dword [ebp - 0x90]
movzx edx, word [eax]
movzx eax, word [ebp - 0x4a]
imul edx, eax
mov eax, edx
shr eax, 0x10
mov dword [ebp - 0x88], eax
test eax, eax
je 0x5f3946
movzx eax, word [ebp - 0x50]
imul eax, dword [ebp - 0x88]
add dword [ebx], eax
movzx eax, word [ebp - 0x4e]
imul eax, dword [ebp - 0x88]
add dword [ebx + 4], eax
movzx eax, word [ebp - 0x4c]
imul eax, dword [ebp - 0x88]
add dword [ebx + 8], eax
mov eax, dword [ebp - 0x88]
add dword [ebx + 0xc], eax
mov esi, esi
jmp 0x5f3946
mov eax, dword [ebp - 0x80]
mov edx, dword [ebp - 0x7c]
call edx
add dword [ebp - 0x90], 2
cmp esi, dword [ebp - 0xa4]
jg 0x5f3860
lea esi, [esi]
jmp 0x5f3a40
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x50], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0x1c]
sub eax, edx
shl eax, 1
add eax, dword [ecx]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0xb8]
mov edx, dword [eax + 8]
mov eax, dword [ebp - 0xb8]
cmp edx, dword [eax + 4]
jl 0x5f3a40
mov eax, dword [ebp - 0xb8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 1]
mov dword [ebp - 0xa4], eax
nop
add dword [ebp - 0xa4], 1
mov ebx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0xa4]
sub ecx, eax
mov eax, ecx
shl eax, 4
lea ecx, [ebx + eax]
mov eax, dword [ebp - 0x90]
cmp word [eax], 0
je 0x5f3a2c
mov eax, dword [ebp - 0x90]
movzx ebx, word [eax]
movzx eax, word [ebp - 0x4a]
imul ebx, eax
mov eax, ebx
shr eax, 0x10
mov dword [ebp - 0x88], eax
test eax, eax
je 0x5f3a2c
movzx eax, word [ebp - 0x50]
imul eax, dword [ebp - 0x88]
add dword [ecx], eax
movzx eax, word [ebp - 0x4e]
imul eax, dword [ebp - 0x88]
add dword [ecx + 4], eax
movzx eax, word [ebp - 0x4c]
imul eax, dword [ebp - 0x88]
add dword [ecx + 8], eax
mov eax, dword [ebp - 0x88]
add dword [ecx + 0xc], eax
nop
add dword [ebp - 0x90], 2
cmp edx, dword [ebp - 0xa4]
jg 0x5f39b0
nop
mov eax, dword [ebp - 0xac]
cmp eax, dword [ebp - 0x6c]
jg 0x5f3770
nop
mov edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x68]
mov ebx, dword [ecx]
call dword [ebx + 0xd0]
mov edx, dword [ebp - 0x24]
shl edx, 2
add eax, edx
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0xa4], eax
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0xa4]
sub eax, edx
shl eax, 4
add eax, ecx
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x5f476e
sub eax, 1
je 0x5f4906
sub eax, 1
je 0x5f443a
sub eax, 1
je 0x5f3eca
sub eax, 1
je 0x5f45de
jmp 0x5f4918
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x84], eax
add dword [ebp - 0xa0], 0x10
mov ecx, dword [ebp - 0x84]
cmp dword [ecx + 0xc], 0
je 0x5f3ebc
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx]
xor edx, edx
div ebx
mov word [ebp - 0x50], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 4]
xor edx, edx
div ebx
mov word [ebp - 0x4e], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 8]
xor edx, edx
div ebx
mov word [ebp - 0x4c], ax
cmp dword [ecx + 0xc], 0xff
jbe 0x5f3b3d
mov byte [ebp - 0x74], 0xff
jmp 0x5f3b43
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x74], al
movzx eax, byte [ebp - 0x74]
mov edx, eax
shl eax, 8
add eax, edx
mov word [ebp - 0x4a], ax
mov dword [ebp - 0x9c], 1
jmp 0x5f3b75
add dword [ebp - 0xa4], 1
add dword [ebp - 0xa0], 0x10
add dword [ebp - 0x9c], 1
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jge 0x5f3ba6
mov ebx, dword [ebp - 0xa0]
mov edx, ecx
mov eax, dword [ebx + 0xc]
cmp eax, dword [edx + 0xc]
jne 0x5f3ba6
mov eax, dword [ebx + 8]
cmp eax, dword [edx + 8]
jne 0x5f3ba6
mov eax, dword [ebx + 4]
cmp eax, dword [edx + 4]
jne 0x5f3ba6
mov eax, dword [ebx]
cmp eax, dword [edx]
je 0x5f3b60
cmp dword [ebp - 0x9c], 1
jne 0x5f3e11
mov eax, dword [ebp - 0x8c]
mov dl, byte [eax + 3]
test dl, dl
je 0x5f3bcc
sub dl, 0xff
je 0x5f3c18
jmp 0x5f3cd4
movzx eax, word [ebp - 0x50]
mov dl, byte [eax + 0x725980]
mov eax, dword [ebp - 0x8c]
mov byte [eax + 2], dl
movzx eax, word [ebp - 0x4e]
mov dl, byte [eax + 0x725980]
mov eax, dword [ebp - 0x8c]
mov byte [eax + 1], dl
movzx eax, word [ebp - 0x4c]
mov dl, byte [eax + 0x725980]
mov eax, dword [ebp - 0x8c]
mov byte [eax], dl
mov dl, byte [ebp - 0x74]
mov eax, dword [ebp - 0x8c]
mov byte [eax + 3], dl
jmp 0x5f3ea8
movzx eax, byte [ebp - 0x74]
cmp eax, 0x80
jb 0x5f3c28
add eax, 1
mov esi, esi
mov edx, dword [ebp - 0x8c]
movzx ecx, byte [edx + 2]
movzx ecx, word [ecx + ecx + 0x725580]
mov edx, 0x100
sub edx, eax
imul ecx, edx
movzx edx, word [ebp - 0x50]
imul edx, eax
add edx, ecx
shr edx, 8
mov cl, byte [edx + 0x725980]
mov edx, dword [ebp - 0x8c]
mov byte [edx + 2], cl
mov edx, dword [ebp - 0x8c]
movzx ecx, byte [edx + 1]
movzx ecx, word [ecx + ecx + 0x725580]
mov edx, 0x100
sub edx, eax
imul ecx, edx
movzx edx, word [ebp - 0x4e]
imul edx, eax
add edx, ecx
shr edx, 8
mov cl, byte [edx + 0x725980]
mov edx, dword [ebp - 0x8c]
mov byte [edx + 1], cl
mov edx, dword [ebp - 0x8c]
movzx ecx, byte [edx]
movzx ecx, word [ecx + ecx + 0x725580]
mov edx, 0x100
sub edx, eax
imul ecx, edx
movzx edx, word [ebp - 0x4c]
imul edx, eax
lea eax, [ecx + edx]
shr eax, 8
mov dl, byte [eax + 0x725980]
mov eax, dword [ebp - 0x8c]
mov byte [eax], dl
jmp 0x5f3ea8
mov eax, dword [ebp - 0x8c]
mov dl, byte [eax + 3]
not dl
and edx, 0xff
mov al, byte [ebp - 0x74]
not al
and eax, 0xff
imul edx, eax
mov eax, 0xfe01
sub eax, edx
mov dword [ebp - 0xcc], eax
shr eax, 1
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0x8c]
movzx edx, byte [eax + 3]
mov al, byte [ebp - 0x74]
not al
and eax, 0xff
imul edx, eax
mov dword [ebp - 0xd8], edx
movzx eax, byte [ebp - 0x74]
shl eax, 8
movzx edx, byte [ebp - 0x74]
sub eax, edx
mov edi, eax
mov eax, dword [ebp - 0xcc]
shr eax, 7
add eax, dword [ebp - 0xcc]
shr eax, 8
mov dword [ebp - 0xdc], eax
shl dword [ebp - 0xdc], 0x18
mov esi, 0x725980
mov ebx, 0x725580
mov eax, dword [ebp - 0x8c]
movzx edx, byte [eax + 2]
movzx eax, word [ebx + edx*2]
imul eax, dword [ebp - 0xd8]
movzx edx, word [ebp - 0x50]
imul edx, edi
add eax, edx
add eax, dword [ebp - 0xd0]
xor edx, edx
div dword [ebp - 0xcc]
movzx eax, byte [esi + eax]
mov ecx, eax
shl ecx, 0x10
mov eax, dword [ebp - 0x8c]
movzx edx, byte [eax + 1]
movzx eax, word [ebx + edx*2]
imul eax, dword [ebp - 0xd8]
movzx edx, word [ebp - 0x4e]
imul edx, edi
add eax, edx
add eax, dword [ebp - 0xd0]
xor edx, edx
div dword [ebp - 0xcc]
movzx eax, byte [esi + eax]
shl eax, 8
or ecx, eax
mov edx, dword [ebp - 0x8c]
movzx eax, byte [edx]
movzx eax, word [ebx + eax*2]
imul eax, dword [ebp - 0xd8]
movzx edx, word [ebp - 0x4c]
imul edx, edi
add eax, edx
add eax, dword [ebp - 0xd0]
xor edx, edx
div dword [ebp - 0xcc]
movzx eax, byte [esi + eax]
or ecx, eax
or dword [ebp - 0xdc], ecx
mov edx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0x8c]
mov dword [eax], edx
nop
jmp 0x5f3ea8
mov esi, dword [ebp - 0x8c]
cmp word [ebp - 0x4a], 0x100
jb 0x5f3ea8
nop
cmp word [ebp - 0x4a], 0xff00
jb 0x5f3e70
movzx eax, word [ebp - 0x50]
mov al, byte [eax + 0x725980]
mov byte [ebp - 0x52], al
movzx eax, word [ebp - 0x4e]
mov al, byte [eax + 0x725980]
mov byte [ebp - 0x53], al
movzx eax, word [ebp - 0x4c]
mov al, byte [eax + 0x725980]
mov byte [ebp - 0x54], al
movzx eax, word [ebp - 0x4a]
shr eax, 8
mov byte [ebp - 0x51], al
mov edx, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x54]
mov eax, esi
call fcn.00403980
jmp 0x5f3ea8
mov edx, dword [ebp - 0x9c]
lea eax, [edx - 1]
test eax, eax
jl 0x5f3ea8
mov ebx, eax
add ebx, 1
lea esi, [esi]
sub ebx, 1
movzx eax, word [ebp - 0x4a]
shr eax, 8
mov cl, al
lea edx, [ebp - 0x50]
mov eax, esi
call fcn.005ffbb0
add esi, 4
test ebx, ebx
jg 0x5f3e88
lea esi, [esi]
mov eax, dword [ebp - 0x9c]
lea edx, [eax - 1]
shl edx, 2
add dword [ebp - 0x8c], edx
mov esi, esi
add dword [ebp - 0xa4], 1
add dword [ebp - 0x8c], 4
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jle 0x5f3ad0
jmp 0x5f4918
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x84], eax
add dword [ebp - 0xa0], 0x10
mov ecx, dword [ebp - 0x84]
cmp dword [ecx + 0xc], 0
je 0x5f442c
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx]
xor edx, edx
div ebx
mov word [ebp - 0x50], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 4]
xor edx, edx
div ebx
mov word [ebp - 0x4e], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 8]
xor edx, edx
div ebx
mov word [ebp - 0x4c], ax
cmp dword [ecx + 0xc], 0xff
jbe 0x5f3f55
mov byte [ebp - 0x74], 0xff
jmp 0x5f3f5b
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x74], al
movzx eax, byte [ebp - 0x74]
mov edx, eax
shl edx, 8
add eax, edx
mov word [ebp - 0x4a], ax
mov dword [ebp - 0x9c], 1
jmp 0x5f3f8d
add dword [ebp - 0xa4], 1
add dword [ebp - 0xa0], 0x10
add dword [ebp - 0x9c], 1
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jge 0x5f3fbe
mov ebx, dword [ebp - 0xa0]
mov edx, ecx
mov eax, dword [ebx + 0xc]
cmp eax, dword [edx + 0xc]
jne 0x5f3fbe
mov eax, dword [ebx + 8]
cmp eax, dword [edx + 8]
jne 0x5f3fbe
mov eax, dword [ebx + 4]
cmp eax, dword [edx + 4]
jne 0x5f3fbe
mov eax, dword [ebx]
cmp eax, dword [edx]
je 0x5f3f78
cmp dword [ebp - 0x9c], 1
jne 0x5f42dd
movzx eax, word [ebp - 0x50]
movzx eax, byte [eax + 0x725980]
shl eax, 0x10
and eax, 0xff0000
and edx, 0xff00ffff
or edx, eax
movzx eax, word [ebp - 0x4e]
movzx eax, byte [eax + 0x725980]
shl eax, 8
and eax, 0xff00
and edx, 0xffff00ff
or edx, eax
movzx eax, word [ebp - 0x4c]
movzx eax, byte [eax + 0x725980]
and edx, 0xffffff00
or edx, eax
movzx eax, word [ebp - 0x4a]
shr eax, 8
and eax, 0xff
shl eax, 0x18
and eax, 0xff000000
and edx, 0xffffff
or edx, eax
mov dword [ebp - 0xb0], edx
mov eax, dword [ebp - 0x8c]
mov dl, byte [eax + 3]
test dl, dl
je 0x5f4050
sub dl, 0xff
je 0x5f4064
jmp 0x5f4154
mov eax, dword [ebp - 0xb0]
mov edx, dword [ebp - 0x8c]
mov dword [edx], eax
jmp 0x5f442a
mov eax, dword [ebp - 0xb0]
shr eax, 0x18
and eax, 0xff
cmp eax, 0x80
jb 0x5f407c
add eax, 1
mov ebx, 0x725580
mov ecx, dword [ebp - 0x8c]
movzx edx, byte [ecx + 2]
movzx ecx, word [ebx + edx*2]
mov edx, 0x100
sub edx, eax
imul ecx, edx
mov edx, dword [ebp - 0xb0]
shr edx, 0x10
and edx, 0xff
movzx edx, word [ebx + edx*2]
imul edx, eax
add edx, ecx
shr edx, 8
mov cl, byte [edx + 0x725980]
mov edx, dword [ebp - 0x8c]
mov byte [edx + 2], cl
mov ebx, 0x725580
mov edx, dword [ebp - 0x8c]
movzx ecx, byte [edx + 1]
movzx ecx, word [ebx + ecx*2]
mov edx, 0x100
sub edx, eax
imul ecx, edx
mov edx, dword [ebp - 0xb0]
shr edx, 8
and edx, 0xff
movzx edx, word [ebx + edx*2]
imul edx, eax
add edx, ecx
shr edx, 8
mov cl, byte [edx + 0x725980]
mov edx, dword [ebp - 0x8c]
mov byte [edx + 1], cl
mov ebx, 0x725580
mov ecx, dword [ebp - 0x8c]
movzx edx, byte [ecx]
movzx ecx, word [ebx + edx*2]
mov edx, 0x100
sub edx, eax
imul ecx, edx
mov edx, dword [ebp - 0xb0]
and edx, 0xff
movzx edx, word [ebx + edx*2]
imul edx, eax
lea eax, [ecx + edx]
shr eax, 8
mov dl, byte [eax + 0x725980]
mov eax, dword [ebp - 0x8c]
mov byte [eax], dl
jmp 0x5f442a
mov eax, dword [ebp - 0x8c]
mov dl, byte [eax + 3]
not dl
and edx, 0xff
mov eax, dword [ebp - 0xb0]
shr eax, 0x18
and eax, 0xff
not al
and eax, 0xff
imul edx, eax
mov eax, 0xfe01
sub eax, edx
mov dword [ebp - 0xbc], eax
shr eax, 1
mov dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0x8c]
movzx edx, byte [eax + 3]
mov eax, dword [ebp - 0xb0]
shr eax, 0x18
and eax, 0xff
not al
and eax, 0xff
imul edx, eax
mov dword [ebp - 0xc8], edx
mov eax, dword [ebp - 0xb0]
shr eax, 0x18
and eax, 0xff
movzx edx, al
shl edx, 8
and eax, 0xff
sub edx, eax
mov esi, edx
mov eax, dword [ebp - 0xbc]
shr eax, 7
add eax, dword [ebp - 0xbc]
shr eax, 8
mov dword [ebp - 0xc4], eax
shl dword [ebp - 0xc4], 0x18
mov edi, 0x725980
mov ebx, 0x725580
mov eax, dword [ebp - 0x8c]
movzx edx, byte [eax + 2]
movzx edx, word [ebx + edx*2]
imul edx, dword [ebp - 0xc8]
mov eax, dword [ebp - 0xb0]
shr eax, 0x10
and eax, 0xff
movzx eax, word [ebx + eax*2]
imul eax, esi
add eax, edx
add eax, dword [ebp - 0xc0]
xor edx, edx
div dword [ebp - 0xbc]
movzx eax, byte [edi + eax]
mov ecx, eax
shl ecx, 0x10
mov eax, dword [ebp - 0x8c]
movzx edx, byte [eax + 1]
movzx edx, word [ebx + edx*2]
imul edx, dword [ebp - 0xc8]
mov eax, dword [ebp - 0xb0]
shr eax, 8
and eax, 0xff
movzx eax, word [ebx + eax*2]
imul eax, esi
add eax, edx
add eax, dword [ebp - 0xc0]
xor edx, edx
div dword [ebp - 0xbc]
movzx eax, byte [edi + eax]
shl eax, 8
or ecx, eax
mov edx, dword [ebp - 0x8c]
movzx eax, byte [edx]
movzx edx, word [ebx + eax*2]
imul edx, dword [ebp - 0xc8]
mov eax, dword [ebp - 0xb0]
and eax, 0xff
movzx eax, word [ebx + eax*2]
imul eax, esi
add eax, edx
add eax, dword [ebp - 0xc0]
xor edx, edx
div dword [ebp - 0xbc]
movzx eax, byte [edi + eax]
or ecx, eax
or dword [ebp - 0xc4], ecx
mov edx, dword [ebp - 0xc4]
mov eax, dword [ebp - 0x8c]
mov dword [eax], edx
mov esi, esi
jmp 0x5f442a
movzx eax, word [ebp - 0x50]
movzx eax, byte [eax + 0x725980]
shl eax, 0x10
and eax, 0xff0000
and edx, 0xff00ffff
or edx, eax
movzx eax, word [ebp - 0x4e]
movzx eax, byte [eax + 0x725980]
shl eax, 8
and eax, 0xff00
and edx, 0xffff00ff
or edx, eax
movzx eax, word [ebp - 0x4c]
movzx eax, byte [eax + 0x725980]
and edx, 0xffffff00
or edx, eax
movzx eax, word [ebp - 0x4a]
shr eax, 8
and eax, 0xff
shl eax, 0x18
and eax, 0xff000000
and edx, 0xffffff
or edx, eax
mov esi, edx
mov edi, dword [ebp - 0x8c]
mov eax, esi
shr eax, 0x18
and eax, 0xff
test al, 0xff
je 0x5f4418
mov eax, esi
shr eax, 0x18
and eax, 0xff
cmp al, 0xff
jne 0x5f4380
mov edx, dword [ebp - 0x9c]
mov ecx, esi
mov eax, edi
call fcn.00403980
jmp 0x5f4418
mov eax, esi
shr eax, 0x10
and eax, 0xff
mov ax, word [eax + eax + 0x725580]
mov word [ebp - 0x60], ax
mov eax, esi
shr eax, 8
and eax, 0xff
mov ax, word [eax + eax + 0x725580]
mov word [ebp - 0x5e], ax
mov eax, esi
and eax, 0xff
mov ax, word [eax + eax + 0x725580]
mov word [ebp - 0x5c], ax
mov eax, esi
shr eax, 0x18
and eax, 0xff
mov edx, eax
shl edx, 8
add eax, edx
mov word [ebp - 0x5a], ax
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x54], eax
mov edx, dword [ebp - 0x9c]
lea eax, [edx - 1]
test eax, eax
jl 0x5f4418
mov ebx, eax
add ebx, 1
lea esi, [esi]
sub ebx, 1
mov eax, esi
shr eax, 0x18
and eax, 0xff
mov cl, al
lea edx, [ebp - 0x58]
mov eax, edi
call fcn.005ffbb0
add edi, 4
test ebx, ebx
jg 0x5f43f8
mov edx, dword [ebp - 0x9c]
lea eax, [edx - 1]
shl eax, 2
add dword [ebp - 0x8c], eax
mov esi, esi
add dword [ebp - 0xa4], 1
add dword [ebp - 0x8c], 4
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jle 0x5f3ee8
jmp 0x5f4918
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x84], eax
add dword [ebp - 0xa0], 0x10
mov ecx, dword [ebp - 0x84]
cmp dword [ecx + 0xc], 0
je 0x5f45d0
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx]
xor edx, edx
div ebx
mov word [ebp - 0x50], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 4]
xor edx, edx
div ebx
mov word [ebp - 0x4e], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 8]
xor edx, edx
div ebx
mov word [ebp - 0x4c], ax
cmp dword [ecx + 0xc], 0xff
jbe 0x5f44c5
mov byte [ebp - 0x74], 0xff
jmp 0x5f44cb
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x74], al
movzx eax, byte [ebp - 0x74]
mov edx, eax
shl eax, 8
add eax, edx
mov word [ebp - 0x4a], ax
mov dword [ebp - 0x9c], 1
jmp 0x5f44fd
add dword [ebp - 0xa4], 1
add dword [ebp - 0xa0], 0x10
add dword [ebp - 0x9c], 1
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jge 0x5f452e
mov ebx, dword [ebp - 0xa0]
mov edx, ecx
mov eax, dword [ebx + 0xc]
cmp eax, dword [edx + 0xc]
jne 0x5f452e
mov eax, dword [ebx + 8]
cmp eax, dword [edx + 8]
jne 0x5f452e
mov eax, dword [ebx + 4]
cmp eax, dword [edx + 4]
jne 0x5f452e
mov eax, dword [ebx]
cmp eax, dword [edx]
je 0x5f44e8
mov edi, dword [ebp - 0x9c]
movzx eax, word [ebp - 0x50]
movzx eax, byte [eax + 0x725980]
shl eax, 0x10
and eax, 0xff0000
and ecx, 0xff00ffff
or ecx, eax
movzx eax, word [ebp - 0x4e]
movzx eax, byte [eax + 0x725980]
shl eax, 8
and eax, 0xff00
and ecx, 0xffff00ff
or ecx, eax
movzx eax, word [ebp - 0x4c]
movzx eax, byte [eax + 0x725980]
and ecx, 0xffffff00
or ecx, eax
movzx eax, word [ebp - 0x4a]
shr eax, 8
and eax, 0xff
shl eax, 0x18
and eax, 0xff000000
and ecx, 0xffffff
or ecx, eax
mov ebx, dword [ebp - 0x8c]
jmp 0x5f45b8
mov eax, ebx
mov edx, dword [eax]
mov esi, ecx
xor esi, edx
mov dword [eax], esi
add ebx, 4
sub edi, 1
test edi, edi
jg 0x5f45a8
mov eax, dword [ebp - 0x9c]
lea edx, [eax - 1]
shl edx, 2
add dword [ebp - 0x8c], edx
mov esi, esi
add dword [ebp - 0xa4], 1
add dword [ebp - 0x8c], 4
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jle 0x5f4458
jmp 0x5f4918
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x84], eax
add dword [ebp - 0xa0], 0x10
mov ecx, dword [ebp - 0x84]
cmp dword [ecx + 0xc], 0
je 0x5f4760
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx]
xor edx, edx
div ebx
mov word [ebp - 0x50], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 4]
xor edx, edx
div ebx
mov word [ebp - 0x4e], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 8]
xor edx, edx
div ebx
mov word [ebp - 0x4c], ax
cmp dword [ecx + 0xc], 0xff
jbe 0x5f466d
mov byte [ebp - 0x74], 0xff
jmp 0x5f4673
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x74], al
movzx eax, byte [ebp - 0x74]
mov edx, eax
shl edx, 8
add eax, edx
mov word [ebp - 0x4a], ax
mov dword [ebp - 0x9c], 1
jmp 0x5f46a5
add dword [ebp - 0xa4], 1
add dword [ebp - 0xa0], 0x10
add dword [ebp - 0x9c], 1
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jge 0x5f46d6
mov ebx, dword [ebp - 0xa0]
mov edx, ecx
mov eax, dword [ebx + 0xc]
cmp eax, dword [edx + 0xc]
jne 0x5f46d6
mov eax, dword [ebx + 8]
cmp eax, dword [edx + 8]
jne 0x5f46d6
mov eax, dword [ebx + 4]
cmp eax, dword [edx + 4]
jne 0x5f46d6
mov eax, dword [ebx]
cmp eax, dword [edx]
je 0x5f4690
movzx eax, word [ebp - 0x50]
movzx eax, byte [eax + 0x725980]
shl eax, 0x10
and eax, 0xff0000
and ecx, 0xff00ffff
or ecx, eax
movzx eax, word [ebp - 0x4e]
movzx eax, byte [eax + 0x725980]
shl eax, 8
and eax, 0xff00
and ecx, 0xffff00ff
or ecx, eax
movzx eax, word [ebp - 0x4c]
movzx eax, byte [eax + 0x725980]
and ecx, 0xffffff00
or ecx, eax
movzx eax, word [ebp - 0x4a]
shr eax, 8
and eax, 0xff
shl eax, 0x18
and eax, 0xff000000
and ecx, 0xffffff
or ecx, eax
mov eax, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x9c]
call fcn.00403980
mov eax, dword [ebp - 0x9c]
lea edx, [eax - 1]
shl edx, 2
add dword [ebp - 0x8c], edx
mov esi, esi
add dword [ebp - 0xa4], 1
add dword [ebp - 0x8c], 4
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jle 0x5f4600
jmp 0x5f4918
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x84], eax
add dword [ebp - 0xa0], 0x10
mov ecx, dword [ebp - 0x84]
cmp dword [ecx + 0xc], 0xff
jb 0x5f48f8
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx]
xor edx, edx
div ebx
mov word [ebp - 0x50], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 4]
xor edx, edx
div ebx
mov word [ebp - 0x4e], ax
mov edx, ecx
mov ebx, dword [edx + 0xc]
mov eax, ebx
shr eax, 1
add eax, dword [edx + 8]
xor edx, edx
div ebx
mov word [ebp - 0x4c], ax
cmp dword [ecx + 0xc], 0xff
jbe 0x5f4800
mov byte [ebp - 0x74], 0xff
jmp 0x5f4806
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x74], al
movzx eax, byte [ebp - 0x74]
mov edx, eax
shl eax, 8
add eax, edx
mov word [ebp - 0x4a], ax
mov dword [ebp - 0x9c], 1
jmp 0x5f483d
add dword [ebp - 0xa4], 1
add dword [ebp - 0xa0], 0x10
add dword [ebp - 0x9c], 1
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jge 0x5f486e
mov ebx, dword [ebp - 0xa0]
mov edx, ecx
mov eax, dword [ebx + 0xc]
cmp eax, dword [edx + 0xc]
jne 0x5f486e
mov eax, dword [ebx + 8]
cmp eax, dword [edx + 8]
jne 0x5f486e
mov eax, dword [ebx + 4]
cmp eax, dword [edx + 4]
jne 0x5f486e
mov eax, dword [ebx]
cmp eax, dword [edx]
je 0x5f4828
movzx eax, word [ebp - 0x50]
movzx eax, byte [eax + 0x725980]
shl eax, 0x10
and eax, 0xff0000
and ecx, 0xff00ffff
or ecx, eax
movzx eax, word [ebp - 0x4e]
movzx eax, byte [eax + 0x725980]
shl eax, 8
and eax, 0xff00
and ecx, 0xffff00ff
or ecx, eax
movzx eax, word [ebp - 0x4c]
movzx eax, byte [eax + 0x725980]
and ecx, 0xffffff00
or ecx, eax
movzx eax, word [ebp - 0x4a]
shr eax, 8
and eax, 0xff
shl eax, 0x18
and eax, 0xff000000
and ecx, 0xffffff
or ecx, eax
mov eax, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x9c]
call fcn.00403980
mov eax, dword [ebp - 0x9c]
lea edx, [eax - 1]
shl edx, 2
add dword [ebp - 0x8c], edx
mov esi, esi
add dword [ebp - 0xa4], 1
add dword [ebp - 0x8c], 4
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x28]
jle 0x5f4790
lea esi, [esi]
mov eax, dword [ebp - 0x78]
cmp eax, dword [ebp - 0x98]
jg 0x5f32b0
nop
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
sub eax, 1
mov esi, eax
test esi, esi
jl 0x5f4984
mov dword [ebp - 0x6c], 0xffffffff
mov esi, esi
add dword [ebp - 0x6c], 1
mov edx, dword [ebp - 8]
imul eax, dword [ebp - 0x6c], 0x14
mov eax, dword [edx + eax]
call fcn.0040ffe0
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
imul eax, dword [ebp - 0x6c], 0x30
mov eax, dword [edx + eax]
mov ecx, dword [ebp - 8]
imul edx, dword [ebp - 0x6c], 0x14
lea edx, [ecx + edx + 0x10]
mov ecx, dword [ebp - 4]
mov ebx, dword [ecx + 8]
imul ecx, dword [ebp - 0x6c], 0x30
mov ecx, dword [ebx + ecx]
mov ecx, dword [ecx]
call dword [ecx + 0x78]
cmp esi, dword [ebp - 0x6c]
jg 0x5f4940
mov esi, esi
mov eax, dword [ebp - 0x68]
mov edx, dword [ebp - 0x68]
mov ecx, dword [edx]
call dword [ecx + 0x12c]
xor edx, edx
pop eax
add esp, 0xc
mov dword fs:[edx], eax
mov eax, ebp
call fcn.005f2da0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret