Function at 0x594cf0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x24
push ebx
mov ebx, dword [esp + 0x3c]
push ebp
push esi
mov esi, dword [esp + 0x38]
push edi
mov edi, dword [esp + 0x38]
push 0
push 0x6a5660
push 0x6a5a0c
push 0
push esi
mov byte [esi + 4], 1
call fcn.0061eefc
mov ebp, eax
add esp, 0x14
test ebp, ebp
je 0x594cd7
mov eax, dword [ebp + 0x48]
test eax, eax
mov dword [esp + 0x14], eax
jne 0x5945ca
mov eax, dword [ebp]
mov edx, dword [eax + 0x7c]
mov ecx, ebp
call edx
mov ecx, dword [ebx + 4]
imul ecx, dword [esi + 0x24]
add ecx, dword [ebx]
lea edx, [eax + ecx*4]
mov eax, dword [edi]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x7c]
mov ecx, edi
call edx
mov ecx, dword [edi + 0x24]
imul ecx, dword [esp + 0x44]
add ecx, dword [esp + 0x40]
cmp byte [edi + 0x52], 0
lea edx, [eax + ecx*4]
mov dword [esp + 0x44], edx
jne 0x594136
cmp byte [edi + 0x51], 0
jne 0x594136
mov edi, dword [esp + 0x4c]
mov eax, 0x72289c
mov ecx, edi
call fcn.005644b0
test al, al
jne 0x59413a
mov eax, dword [ebp]
mov edx, dword [eax + 0x48]
mov ecx, ebp
call edx
mov ecx, dword [ebx + 4]
imul ecx, dword [esi + 0x24]
add ecx, dword [ebx]
mov dword [esp + 0x20], 0
add ecx, eax
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], ecx
jle 0x594ccc
mov eax, dword [esp + 0x48]
mov edi, dword [eax + 8]
test edi, edi
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x14], edi
jle 0x5940df
mov eax, dword [esp + 0x40]
mov al, byte [eax]
mov ecx, dword [edx]
movzx ebx, al
cmp ebx, edi
mov byte [esp + 0x4c], al
jle 0x593f7e
mov al, byte [esp + 0x14]
mov byte [esp + 0x4c], al
mov ebx, ecx
shr ebx, 0x18
mov edi, 0x100
sub edi, ebx
cmp edi, 1
jne 0x593fb4
movzx eax, al
test eax, eax
jle 0x5940c5
mov ecx, eax
lea esp, [esp]
mov edi, dword [edx]
mov dword [esi], edi
add esi, 4
add edx, 4
sub ecx, 1
jne 0x593fa0
jmp 0x5940c5
cmp edi, 0x100
jne 0x593fcf
movzx eax, al
lea ecx, [eax*4]
add esi, ecx
add edx, ecx
jmp 0x5940c5
mov eax, 0x100
sub eax, edi
mov dword [esp + 0x18], eax
mov eax, dword [esi]
mov ebx, eax
and ebx, 0xff00ff
mov ebp, ecx
imul ebx, edi
and eax, 0xff00
and ebp, 0xff00ff
imul eax, edi
imul ebp, dword [esp + 0x18]
and ecx, 0xff00
imul ecx, dword [esp + 0x18]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
movzx eax, byte [esp + 0x4c]
or ebx, 0xff000000
mov dword [esi], ebx
add edx, 4
add esi, 4
cmp eax, 1
mov dword [esp + 0x24], eax
jle 0x5940c5
add eax, 0xffffffff
mov dword [esp + 0x4c], eax
jmp 0x594050
mov ecx, dword [edx]
mov eax, dword [esi]
add edx, 4
mov dword [esp + 0x18], edx
mov edx, ecx
mov ebx, eax
shr edx, 0x18
and ebx, 0xff00ff
mov ebp, ecx
and eax, 0xff00
mov edi, 0x100
sub edi, edx
imul ebx, edi
imul eax, edi
and ebp, 0xff00ff
and ecx, 0xff00
imul ebp, edx
imul ecx, edx
mov edx, dword [esp + 0x18]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
or ebx, 0xff000000
mov dword [esi], ebx
add esi, 4
sub dword [esp + 0x4c], 1
jne 0x594050
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
add dword [esp + 0x40], eax
sub edi, eax
test edi, edi
mov dword [esp + 0x14], edi
jg 0x593f63
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov edx, dword [esp + 0x44]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [edx + 0x24]
mov edx, dword [esp + 0x10]
lea edx, [edx + eax*4]
add ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x48]
add eax, 1
cmp eax, dword [edx + 0xc]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
jl 0x593f44
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov edi, dword [esp + 0x4c]
mov eax, edi
call fcn.00564470
test al, al
je 0x59429f
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x594ccc
jmp 0x594160
cmp dword [ebx + 8], 0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], 0
jle 0x594252
mov edi, edi
mov edi, dword [eax]
mov ecx, dword [esp + 0x4c]
mov ecx, dword [ecx]
add eax, 4
mov ebp, edi
shr ebp, 0x18
mov dword [esp + 0x24], eax
je 0x594239
mov ebx, ecx
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
sar edx, 7
mov eax, ebp
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00ff
mov edx, 0x100
and ecx, 0xff00
shl esi, 0x18
sub edx, eax
mov dword [esp + 0x40], eax
imul ebx, edx
imul ecx, edx
mov eax, edi
and eax, 0xff00ff
imul eax, dword [esp + 0x40]
and edi, 0xff00
imul edi, dword [esp + 0x40]
shr ebx, 8
shr eax, 8
add ebx, eax
mov eax, dword [esp + 0x4c]
shr ecx, 8
shr edi, 8
and ebx, 0xff00ff
add ecx, edi
and ecx, 0xff00
or ebx, ecx
or ebx, esi
mov dword [eax], ebx
mov ebx, dword [esp + 0x48]
add eax, 4
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
jmp 0x59423e
add dword [esp + 0x4c], 4
mov ecx, dword [esp + 0x20]
add ecx, 1
cmp ecx, dword [ebx + 8]
mov dword [esp + 0x20], ecx
jl 0x594180
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + 0x24]
mov eax, dword [esp + 0x44]
lea ecx, [eax + edx*4]
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x24]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x10]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], eax
jl 0x594160
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov eax, dword [edi + 0xc]
mov ecx, dword [edi]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 4]
cmp ecx, eax
mov edi, dword [edi + 8]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], edi
jne 0x594437
cmp eax, edi
jne 0x594437
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x594ccc
lea esp, [esp]
mov ecx, dword [esp + 0x48]
cmp dword [ecx + 8], 0
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], 0
jle 0x5943e6
mov ecx, dword [ebx]
mov edi, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
mov eax, 0x80808081
mul edx
add ebx, 4
mov ebp, edx
shr ebp, 7
mov dword [esp + 0x24], ebx
je 0x5943c7
mov ebx, edi
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00ff
imul ebx, dword [esp + 0x40]
and ecx, 0xff00
shr ebx, 8
and ebx, 0xff00ff
mov ebp, edi
mov edx, 0x100
and ebp, 0xff00ff
and edi, 0xff00
shl esi, 0x18
imul ecx, eax
imul ebx, eax
imul ecx, dword [esp + 0x40]
sub edx, eax
imul ebp, edx
imul edi, edx
shr ebx, 8
shr ecx, 0x10
shr ebp, 8
add ebx, ebp
shr edi, 8
add ecx, edi
and ebx, 0xff00ff
and ecx, 0xff00
or ebx, ecx
or ebx, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], ebx
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], eax
jl 0x594302
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x44]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x10]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ecx + 0xc]
mov dword [esp + 0x1c], eax
jl 0x5942e0
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x14], 0
jle 0x594ccc
lea esp, [esp]
mov edx, dword [esp + 0x48]
cmp dword [edx + 8], 0
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x1c], 0
jle 0x594579
mov ecx, dword [edi]
mov ebx, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
mov eax, 0x80808081
mul edx
add edi, 4
mov ebp, edx
shr ebp, 7
mov dword [esp + 0x2c], edi
je 0x59455a
mov edi, ebx
shr edi, 0x18
mov esi, 0xff
sub esi, edi
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, edi
cdq
idiv esi
mov edi, ecx
and edi, 0xff0000
mov ebp, ebx
and ebp, 0xff0000
mov edx, 0x100
shl esi, 0x18
imul edi, eax
sub edx, eax
imul ebp, edx
shr edi, 8
imul edi, dword [esp + 0x40]
mov dword [esp + 0x20], edx
movzx edx, cl
and ecx, 0xff00
imul edx, eax
imul edx, dword [esp + 0x24]
imul ecx, eax
imul ecx, dword [esp + 0x28]
shr edi, 8
shr ebp, 8
add edi, ebp
movzx ebp, bl
imul ebp, dword [esp + 0x20]
and ebx, 0xff00
imul ebx, dword [esp + 0x20]
shr edx, 0x10
shr ebp, 8
shr ecx, 0x10
and edi, 0xff0000
add edx, ebp
shr ebx, 8
and edx, 0xff
add ecx, ebx
or edi, edx
and ecx, 0xff00
or edi, ecx
or edi, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], edi
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x1c], eax
jl 0x594472
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x44]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x10]
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
add eax, 1
cmp eax, dword [ecx + 0xc]
mov dword [esp + 0x14], eax
jl 0x594450
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov edi, dword [ebx + 4]
mov edx, esi
imul edi, dword [edx + 0x24]
add edi, dword [ebp + 0x4c]
mov esi, dword [esp + 0x38]
add edi, dword [ebx]
mov eax, dword [esi]
mov edx, dword [eax + 0x7c]
mov ecx, esi
mov dword [esp + 0x10], edi
call edx
mov ecx, dword [esi + 0x24]
imul ecx, dword [esp + 0x44]
add ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
cmp byte [edx + 0x52], 0
lea esi, [eax + ecx*4]
mov dword [esp + 0x44], esi
jne 0x594857
mov eax, edx
cmp byte [eax + 0x51], 0
jne 0x594857
mov ecx, dword [esp + 0x4c]
mov eax, 0x72289c
call fcn.005644b0
test al, al
jne 0x594857
mov edx, dword [ebp]
mov eax, dword [edx + 0x48]
mov ecx, ebp
call eax
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x3c]
imul ecx, dword [edx + 0x24]
add ecx, dword [ebx]
mov dword [esp + 0x24], 0
add ecx, eax
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], ecx
jle 0x594ccc
jmp 0x594660
mov eax, dword [esp + 0x48]
mov edi, dword [eax + 8]
test edi, edi
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], edi
jle 0x594807
nop
movzx ecx, byte [edx]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esp + 0x40]
mov al, byte [eax]
movzx ebx, al
cmp ebx, edi
mov byte [esp + 0x4c], al
jle 0x5946a3
mov al, byte [esp + 0x18]
mov byte [esp + 0x4c], al
mov ebx, ecx
shr ebx, 0x18
mov edi, 0x100
sub edi, ebx
cmp edi, 1
jne 0x5946dd
movzx eax, al
test eax, eax
jle 0x5947ed
mov edi, dword [esp + 0x14]
mov ecx, eax
movzx ebx, byte [edx]
mov ebx, dword [edi + ebx*4]
mov dword [esi], ebx
add esi, 4
add edx, 1
sub ecx, 1
jne 0x5946c5
jmp 0x5947ed
cmp edi, 0x100
jne 0x5946f2
movzx eax, al
lea esi, [esi + eax*4]
add edx, eax
jmp 0x5947ed
mov eax, 0x100
sub eax, edi
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov ebx, eax
and ebx, 0xff00ff
mov ebp, ecx
imul ebx, edi
and eax, 0xff00
and ebp, 0xff00ff
imul eax, edi
imul ebp, dword [esp + 0x20]
and ecx, 0xff00
imul ecx, dword [esp + 0x20]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
movzx eax, byte [esp + 0x4c]
or ebx, 0xff000000
mov dword [esi], ebx
add edx, 1
add esi, 4
cmp eax, 1
mov dword [esp + 0x2c], eax
jle 0x5947ed
add eax, 0xffffffff
mov dword [esp + 0x4c], eax
mov edi, edi
movzx ecx, byte [edx]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + ecx*4]
mov eax, dword [esi]
add edx, 1
mov dword [esp + 0x20], edx
mov edx, ecx
mov ebx, eax
shr edx, 0x18
and ebx, 0xff00ff
mov ebp, ecx
and eax, 0xff00
mov edi, 0x100
sub edi, edx
imul ebx, edi
imul eax, edi
and ebp, 0xff00ff
and ecx, 0xff00
imul ebp, edx
imul ecx, edx
mov edx, dword [esp + 0x20]
shr ebx, 8
shr eax, 8
shr ebp, 8
add ebx, ebp
shr ecx, 8
add eax, ecx
and ebx, 0xffff00ff
and eax, 0xff00
or ebx, eax
or ebx, 0xff000000
mov dword [esi], ebx
add esi, 4
sub dword [esp + 0x4c], 1
jne 0x594770
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
add dword [esp + 0x40], eax
sub edi, eax
test edi, edi
mov dword [esp + 0x18], edi
jg 0x594680
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov edx, dword [esp + 0x44]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x44], eax
mov eax, dword [edx + 0x24]
add dword [esp + 0x10], eax
mov edx, dword [esp + 0x48]
add ecx, eax
mov eax, dword [esp + 0x24]
add eax, 1
cmp eax, dword [edx + 0xc]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], eax
jl 0x594660
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov ebp, dword [esp + 0x4c]
mov eax, ebp
call fcn.00564470
test al, al
je 0x5949c4
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x594ccc
lea esp, [esp]
cmp dword [ebx + 8], 0
mov dword [esp + 0x4c], esi
mov dword [esp + 0x40], edi
mov dword [esp + 0x20], 0
jle 0x594984
lea ebx, [ebx]
mov eax, dword [esp + 0x40]
movzx ecx, byte [eax]
mov edx, dword [esp + 0x14]
mov edi, dword [edx + ecx*4]
add eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax]
mov ebp, edi
shr ebp, 0x18
je 0x59495d
mov ebx, ecx
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
sar edx, 7
mov eax, ebp
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00
mov edx, 0x100
and ecx, 0xff00ff
shl esi, 0x18
sub edx, eax
mov dword [esp + 0x24], eax
imul ebx, edx
imul ecx, edx
mov eax, edi
and eax, 0xff00
imul eax, dword [esp + 0x24]
and edi, 0xff00ff
imul edi, dword [esp + 0x24]
shr ebx, 8
shr eax, 8
add ebx, eax
mov eax, dword [esp + 0x4c]
shr ecx, 8
shr edi, 8
add ecx, edi
and ebx, 0xff00
and ecx, 0xff00ff
or ebx, ecx
or ebx, esi
mov dword [eax], ebx
add eax, 4
mov dword [esp + 0x4c], eax
jmp 0x594962
add dword [esp + 0x4c], 4
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
cmp eax, dword [ecx + 8]
mov dword [esp + 0x20], eax
jl 0x5948a0
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov ebx, ecx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x3c]
add edi, dword [ecx + 0x24]
lea esi, [esi + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
jl 0x594880
mov ecx, edx
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov ecx, dword [ebp]
mov eax, dword [ebp + 4]
cmp ecx, eax
mov edx, dword [ebp + 0xc]
mov ebp, dword [ebp + 8]
mov dword [esp + 0x18], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebp
jne 0x594b56
cmp eax, ebp
jne 0x594b56
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x594ccc
cmp dword [ebx + 8], 0
mov dword [esp + 0x4c], esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], 0
jle 0x594b16
lea esp, [esp]
mov eax, dword [esp + 0x24]
movzx ecx, byte [eax]
mov edx, dword [esp + 0x14]
mov ecx, dword [edx + ecx*4]
mov edi, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
add eax, 1
mov dword [esp + 0x24], eax
mov eax, 0x80808081
mul edx
mov ebp, edx
shr ebp, 7
je 0x594aed
mov ebx, edi
shr ebx, 0x18
mov esi, 0xff
sub esi, ebx
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, ebx
cdq
idiv esi
mov ebx, ecx
and ebx, 0xff00ff
imul ebx, dword [esp + 0x40]
and ecx, 0xff00
shr ebx, 8
and ebx, 0xff00ff
mov ebp, edi
mov edx, 0x100
and ebp, 0xff00ff
and edi, 0xff00
shl esi, 0x18
imul ecx, eax
imul ebx, eax
imul ecx, dword [esp + 0x40]
sub edx, eax
imul ebp, edx
imul edi, edx
shr ebx, 8
shr ecx, 0x10
shr ebp, 8
shr edi, 8
add ebx, ebp
add ecx, edi
and ebx, 0xff00ff
and ecx, 0xff00
or ebx, ecx
or ebx, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], ebx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], eax
jl 0x594a20
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov ebx, ecx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x3c]
add edi, dword [ecx + 0x24]
lea esi, [esi + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
jl 0x594a02
mov ecx, edx
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
cmp dword [ebx + 0xc], 0
mov dword [esp + 0x1c], 0
jle 0x594ccc
jmp 0x594b70
cmp dword [ebx + 8], 0
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], 0
jle 0x594c9f
movzx edx, byte [edi]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + edx*4]
mov ebx, dword [esi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x18]
mov eax, 0x80808081
mul edx
add edi, 1
mov ebp, edx
shr ebp, 7
mov dword [esp + 0x30], edi
je 0x594c76
mov edi, ebx
shr edi, 0x18
mov esi, 0xff
sub esi, edi
imul esi, ebp
mov eax, 0x80808081
imul esi
add edx, esi
mov eax, ebp
sar edx, 7
imul eax, eax, 0xff
mov esi, edx
shr esi, 0x1f
add esi, edx
add esi, edi
cdq
idiv esi
mov edi, ecx
and edi, 0xff0000
mov ebp, ebx
and ebp, 0xff0000
mov edx, 0x100
shl esi, 0x18
imul edi, eax
sub edx, eax
imul ebp, edx
shr edi, 8
imul edi, dword [esp + 0x40]
mov dword [esp + 0x24], edx
movzx edx, cl
and ecx, 0xff00
imul edx, eax
imul edx, dword [esp + 0x2c]
imul ecx, eax
imul ecx, dword [esp + 0x28]
shr edi, 8
shr ebp, 8
add edi, ebp
movzx ebp, bl
imul ebp, dword [esp + 0x24]
and ebx, 0xff00
imul ebx, dword [esp + 0x24]
shr edx, 0x10
shr ebp, 8
shr ecx, 0x10
and edi, 0xff0000
add edx, ebp
shr ebx, 8
and edx, 0xff
add ecx, ebx
or edi, edx
and ecx, 0xff00
or edi, ecx
or edi, esi
mov esi, dword [esp + 0x4c]
mov dword [esi], edi
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 8]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x20], eax
jl 0x594b86
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov ebx, ecx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x3c]
add edi, dword [ecx + 0x24]
lea esi, [esi + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, dword [ebx + 0xc]
mov dword [esp + 0x44], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
jl 0x594b70
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
mov eax, dword [edx + 0x64]
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 0x18
mov eax, dword [esp + 0x18]
sub eax, 0
mov edx, dword [esp + 4]
mov byte [edx + 4], 1
je 0x594d25
sub eax, 1
jne 0x594d22
mov eax, dword [esp + 0x14]
push edi
mov edi, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
push eax
push edx
push ecx
call fcn.005933a0
pop edi
ret 0x18
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
jmp 0x593e70