Function at 0x59b610
Capabilities:
Encode data using xor
Encrypt data using chaskey

Disassembly:
mov eax, 0x58
call fcn.004c47c0
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
push ebx
push esi
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov ebx, dword [ecx + 0xc]
push edi
mov edi, dword [ecx + 8]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x28], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x24], ebx
test ecx, ecx
je 0x59bebd
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ebx
push ebp
nop dword [eax]
dec ecx
movzx edx, byte [eax]
mov dword [esp + 0x74], ecx
movzx ecx, byte [eax + 1]
shl ecx, 8
or edx, ecx
movzx ebp, byte [eax + 4]
movzx ecx, byte [eax + 2]
shl ecx, 0x10
or edx, ecx
movzx ecx, byte [eax + 3]
shl ecx, 0x18
or edx, ecx
movzx ecx, byte [eax + 5]
shl ecx, 8
or ebp, ecx
mov dword [esp + 0x38], edx
movzx ecx, byte [eax + 6]
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 7]
shl ecx, 0x18
or ebp, ecx
mov ecx, ebx
xor ecx, edi
mov dword [esp + 0x48], ebp
and ecx, esi
xor ecx, ebx
mov ebx, dword [esp + 0x2c]
add ecx, edx
add ebx, ecx
mov edx, ebx
shr edx, 0x1d
lea ecx, [ebx*8]
movzx ebx, byte [eax + 8]
or edx, ecx
movzx ecx, byte [eax + 9]
shl ecx, 8
or ebx, ecx
movzx ecx, byte [eax + 0xa]
shl ecx, 0x10
or ebx, ecx
movzx ecx, byte [eax + 0xb]
shl ecx, 0x18
or ebx, ecx
mov ecx, edi
xor ecx, esi
mov dword [esp + 0x44], ebx
and ecx, edx
xor ecx, edi
add ecx, ebp
mov ebp, dword [esp + 0x28]
add ebp, ecx
movzx ecx, byte [eax + 0xd]
shl ecx, 8
mov edi, ebp
shl ebp, 7
shr edi, 0x19
or edi, ebp
movzx ebp, byte [eax + 0xc]
or ebp, ecx
movzx ecx, byte [eax + 0xe]
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0xf]
shl ecx, 0x18
or ebp, ecx
mov ecx, esi
xor ecx, edx
mov dword [esp + 0x4c], ebp
and ecx, edi
xor ecx, esi
mov esi, dword [esp + 0x30]
add ecx, ebx
add esi, ecx
movzx ecx, byte [eax + 0x11]
mov ebx, esi
shl esi, 0xb
shr ebx, 0x15
or ebx, esi
movzx esi, byte [eax + 0x10]
shl ecx, 8
or esi, ecx
movzx ecx, byte [eax + 0x12]
shl ecx, 0x10
or esi, ecx
movzx ecx, byte [eax + 0x13]
shl ecx, 0x18
or esi, ecx
mov ecx, edi
xor ecx, edx
mov dword [esp + 0x3c], esi
and ecx, ebx
xor ecx, edx
add ecx, ebp
add dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
mov ebp, ecx
shr ecx, 0xd
shl ebp, 0x13
or ebp, ecx
movzx ecx, byte [eax + 0x14]
mov dword [esp + 0x10], ecx
movzx ecx, byte [eax + 0x15]
shl ecx, 8
or dword [esp + 0x10], ecx
movzx ecx, byte [eax + 0x16]
shl ecx, 0x10
or dword [esp + 0x10], ecx
movzx ecx, byte [eax + 0x17]
shl ecx, 0x18
or dword [esp + 0x10], ecx
mov ecx, edi
xor ecx, ebx
and ecx, ebp
xor ecx, edi
add ecx, esi
add edx, ecx
mov esi, edx
shr esi, 0x1d
lea ecx, [edx*8]
movzx edx, byte [eax + 0x18]
or esi, ecx
movzx ecx, byte [eax + 0x19]
shl ecx, 8
or edx, ecx
movzx ecx, byte [eax + 0x1a]
shl ecx, 0x10
or edx, ecx
movzx ecx, byte [eax + 0x1b]
shl ecx, 0x18
or edx, ecx
mov ecx, ebx
xor ecx, ebp
mov dword [esp + 0x20], edx
and ecx, esi
xor ecx, ebx
add ecx, dword [esp + 0x10]
add edi, ecx
movzx ecx, byte [eax + 0x1d]
mov edx, edi
shl ecx, 8
shl edi, 7
shr edx, 0x19
or edx, edi
movzx edi, byte [eax + 0x1c]
or edi, ecx
movzx ecx, byte [eax + 0x1e]
shl ecx, 0x10
or edi, ecx
movzx ecx, byte [eax + 0x1f]
shl ecx, 0x18
or edi, ecx
mov ecx, ebp
xor ecx, esi
mov dword [esp + 0x2c], edi
and ecx, edx
xor ecx, ebp
add ecx, dword [esp + 0x20]
add ebx, ecx
mov edi, ebx
shr edi, 0x15
movzx ecx, byte [eax + 0x21]
shl ecx, 8
shl ebx, 0xb
or edi, ebx
movzx ebx, byte [eax + 0x20]
or ebx, ecx
mov dword [esp + 0x70], edi
movzx ecx, byte [eax + 0x22]
shl ecx, 0x10
or ebx, ecx
movzx ecx, byte [eax + 0x23]
shl ecx, 0x18
or ebx, ecx
mov ecx, edx
xor ecx, esi
mov dword [esp + 0x18], ebx
and ecx, edi
xor ecx, esi
add ecx, dword [esp + 0x2c]
add ebp, ecx
movzx ecx, byte [eax + 0x25]
shl ecx, 8
mov ebx, ebp
shr ebp, 0xd
shl ebx, 0x13
or ebx, ebp
movzx ebp, byte [eax + 0x24]
or ebp, ecx
mov dword [esp + 0x34], ebx
movzx ecx, byte [eax + 0x26]
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0x27]
shl ecx, 0x18
or ebp, ecx
mov ecx, edx
mov dword [esp + 0x24], ebp
mov ebp, edi
xor ecx, ebp
and ecx, ebx
xor ecx, edx
add ecx, dword [esp + 0x18]
add esi, ecx
mov edi, esi
shr edi, 0x1d
lea ecx, [esi*8]
movzx esi, byte [eax + 0x28]
or edi, ecx
movzx ecx, byte [eax + 0x29]
shl ecx, 8
or esi, ecx
movzx ecx, byte [eax + 0x2a]
shl ecx, 0x10
or esi, ecx
movzx ecx, byte [eax + 0x2b]
shl ecx, 0x18
or esi, ecx
mov ecx, ebp
xor ecx, ebx
mov dword [esp + 0x1c], esi
and ecx, edi
xor ecx, ebp
add ecx, dword [esp + 0x24]
add edx, ecx
movzx ecx, byte [eax + 0x2d]
mov esi, edx
shl ecx, 8
shl edx, 7
shr esi, 0x19
or esi, edx
movzx edx, byte [eax + 0x2c]
or edx, ecx
mov dword [esp + 0x70], esi
movzx ecx, byte [eax + 0x2e]
shl ecx, 0x10
or edx, ecx
movzx ecx, byte [eax + 0x2f]
shl ecx, 0x18
or edx, ecx
mov ecx, ebx
mov dword [esp + 0x50], edx
xor ecx, edi
and ecx, esi
xor ecx, ebx
add ecx, dword [esp + 0x1c]
add ebp, ecx
movzx ecx, byte [eax + 0x31]
shl ecx, 8
mov ebx, ebp
shl ebp, 0xb
shr ebx, 0x15
or ebx, ebp
movzx ebp, byte [eax + 0x30]
or ebp, ecx
movzx ecx, byte [eax + 0x32]
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0x33]
shl ecx, 0x18
or ebp, ecx
mov ecx, esi
xor ecx, edi
mov esi, dword [esp + 0x34]
and ecx, ebx
mov dword [esp + 0x40], ebp
xor ecx, edi
add ecx, edx
add esi, ecx
movzx ecx, byte [eax + 0x35]
shl ecx, 8
mov edx, esi
shr esi, 0xd
shl edx, 0x13
or edx, esi
movzx esi, byte [eax + 0x34]
or esi, ecx
movzx ecx, byte [eax + 0x36]
shl ecx, 0x10
or esi, ecx
movzx ecx, byte [eax + 0x37]
shl ecx, 0x18
or esi, ecx
mov ecx, dword [esp + 0x70]
xor ecx, ebx
mov dword [esp + 0x28], esi
and ecx, edx
xor ecx, dword [esp + 0x70]
add ecx, ebp
movzx ebp, byte [eax + 0x38]
add edi, ecx
mov esi, edi
shr esi, 0x1d
lea ecx, [edi*8]
mov edi, dword [esp + 0x70]
or esi, ecx
movzx ecx, byte [eax + 0x39]
shl ecx, 8
or ebp, ecx
movzx ecx, byte [eax + 0x3a]
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0x3b]
shl ecx, 0x18
or ebp, ecx
mov ecx, ebx
xor ecx, edx
mov dword [esp + 0x34], ebp
and ecx, esi
xor ecx, ebx
add ecx, dword [esp + 0x28]
add edi, ecx
movzx ecx, byte [eax + 0x3d]
mov ebp, edi
shl ecx, 8
shl edi, 7
shr ebp, 0x19
or ebp, edi
movzx edi, byte [eax + 0x3c]
or edi, ecx
mov dword [esp + 0x14], ebp
movzx ecx, byte [eax + 0x3e]
shl ecx, 0x10
or edi, ecx
movzx ecx, byte [eax + 0x3f]
shl ecx, 0x18
add eax, 0x40
or edi, ecx
mov dword [esp + 0x70], eax
mov ecx, edx
mov dword [esp + 0x30], edi
xor ecx, esi
mov eax, dword [esp + 0x14]
and ecx, ebp
add eax, 0x5a827999
xor ecx, edx
add ecx, dword [esp + 0x34]
add ebx, ecx
mov ecx, ebp
xor ecx, esi
mov edi, ebx
shl ebx, 0xb
shr edi, 0x15
or edi, ebx
and ecx, edi
xor ecx, esi
add esi, 0x5a827999
add ecx, dword [esp + 0x30]
add edx, ecx
mov ecx, edi
mov ebx, edx
shr edx, 0xd
shl ebx, 0x13
or ebx, edx
mov edx, edi
and ecx, ebx
or edx, ebx
and edx, ebp
or ecx, edx
mov edx, ebx
add ecx, dword [esp + 0x38]
add ecx, esi
mov esi, ebx
mov ebp, ecx
add ebx, 0x5a827999
shl ecx, 3
shr ebp, 0x1d
or ebp, ecx
or esi, ebp
and edx, ebp
mov ecx, esi
and ecx, edi
or ecx, edx
add ecx, dword [esp + 0x3c]
add ecx, eax
mov dword [esp + 0x14], ecx
shr dword [esp + 0x14], 0x1b
shl ecx, 5
or dword [esp + 0x14], ecx
and esi, dword [esp + 0x14]
or esi, edx
add esi, dword [esp + 0x18]
lea ecx, [esi + 0x5a827999]
add ecx, edi
mov edi, dword [esp + 0x14]
mov esi, ecx
shl ecx, 9
shr esi, 0x17
or esi, ecx
mov edx, esi
mov dword [esp + 0x64], esi
or edx, ebp
mov ecx, esi
and ecx, ebp
and edx, edi
or ecx, edx
mov edx, esi
add ecx, dword [esp + 0x40]
add ecx, ebx
mov ebx, ecx
shl ecx, 0xd
shr ebx, 0x13
or ebx, ecx
mov dword [esp + 0x14], ebx
or edx, ebx
mov ecx, esi
and ecx, ebx
and edx, edi
or edx, ecx
mov esi, ebx
add edx, dword [esp + 0x48]
lea ecx, [ebp + 0x5a827999]
add ecx, edx
add edi, 0x5a827999
mov ebp, ecx
mov edx, ebx
mov ebx, dword [esp + 0x64]
shl ecx, 3
shr ebp, 0x1d
or ebp, ecx
and edx, ebp
or esi, ebp
mov ecx, esi
and ecx, ebx
or ecx, edx
add ecx, dword [esp + 0x10]
add ecx, edi
mov edi, ecx
shl ecx, 5
shr edi, 0x1b
or edi, ecx
lea ecx, [ebx + 0x5a827999]
and esi, edi
or esi, edx
add esi, dword [esp + 0x24]
add ecx, esi
mov ebx, ecx
shl ecx, 9
shr ebx, 0x17
or ebx, ecx
mov edx, ebx
mov ecx, ebx
and ecx, ebp
or edx, ebp
and edx, edi
or edx, ecx
mov ecx, dword [esp + 0x14]
add edx, dword [esp + 0x28]
add ecx, 0x5a827999
add ecx, edx
mov edx, ebx
mov esi, ecx
shl ecx, 0xd
shr esi, 0x13
or esi, ecx
mov ecx, ebx
or edx, esi
mov dword [esp + 0x64], esi
and ecx, esi
and edx, edi
or edx, ecx
add edi, 0x5a827999
add edx, dword [esp + 0x44]
lea ecx, [ebp + 0x5a827999]
mov ebp, dword [esp + 0x64]
add ecx, edx
mov edx, ecx
shl ecx, 3
shr edx, 0x1d
or edx, ecx
or esi, edx
mov dword [esp + 0x14], edx
mov ecx, esi
mov edx, ebp
and edx, dword [esp + 0x14]
and ecx, ebx
or ecx, edx
add ecx, dword [esp + 0x20]
add ecx, edi
mov edi, ecx
shl ecx, 5
shr edi, 0x1b
or edi, ecx
and esi, edi
or esi, edx
add esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
lea ecx, [esi + 0x5a827999]
add ecx, ebx
mov ebx, dword [esp + 0x14]
mov esi, ecx
shl ecx, 9
shr esi, 0x17
or esi, ecx
mov edx, esi
mov dword [esp + 0x64], esi
or edx, ebx
mov ecx, esi
and ecx, ebx
and edx, edi
or edx, ecx
add ebx, 0x5a827999
add edx, eax
lea ecx, [ebp + 0x5a827999]
add ecx, edx
mov edx, esi
mov ebp, ecx
shl ecx, 0xd
shr ebp, 0x13
or ebp, ecx
mov ecx, esi
and ecx, ebp
mov dword [esp + 0x34], ebp
mov esi, dword [esp + 0x34]
or edx, ebp
and edx, edi
add edi, 0x5a827999
or ecx, edx
mov edx, dword [esp + 0x34]
add ecx, dword [esp + 0x4c]
add ecx, ebx
mov ebx, dword [esp + 0x64]
mov ebp, ecx
shl ecx, 3
shr ebp, 0x1d
or ebp, ecx
or esi, ebp
mov dword [esp + 0x14], ebp
and edx, ebp
mov ecx, esi
and ecx, ebx
or ecx, edx
add ecx, dword [esp + 0x2c]
add ecx, edi
mov edi, ecx
shl ecx, 5
shr edi, 0x1b
or edi, ecx
lea ecx, [ebx + 0x5a827999]
and esi, edi
or esi, edx
add esi, dword [esp + 0x50]
add ecx, esi
mov ebx, ecx
shl ecx, 9
shr ebx, 0x17
or ebx, ecx
mov edx, ebx
mov ecx, ebx
and ecx, ebp
or edx, ebp
and edx, edi
or edx, ecx
mov ecx, dword [esp + 0x34]
add edx, dword [esp + 0x30]
add ecx, 0x5a827999
add ecx, edx
mov edx, dword [esp + 0x14]
mov ebp, ecx
shl ecx, 0xd
shr ebp, 0x13
or ebp, ecx
mov ecx, edi
xor ecx, ebx
xor ecx, ebp
add ecx, dword [esp + 0x38]
add edx, 0x6ed9eba1
add edi, 0x6ed9eba1
add ecx, edx
mov esi, ecx
shl ecx, 3
shr esi, 0x1d
or esi, ecx
mov ecx, ebx
xor ecx, ebp
add ebx, 0x6ed9eba1
xor ecx, esi
add ecx, dword [esp + 0x18]
add ecx, edi
mov edi, ecx
shl ecx, 9
shr edi, 0x17
or edi, ecx
mov ecx, edi
mov edx, edi
xor ecx, ebp
add edi, 0x6ed9eba1
xor ecx, esi
add ebp, 0x6ed9eba1
add ecx, dword [esp + 0x3c]
add ecx, ebx
mov ebx, ecx
shl ecx, 0xb
shr ebx, 0x15
or ebx, ecx
xor edx, ebx
mov ecx, edx
xor ecx, esi
add ecx, dword [esp + 0x40]
add ecx, ebp
mov ebp, ecx
shl ecx, 0xf
shr ebp, 0x11
or ebp, ecx
xor edx, ebp
add edx, dword [esp + 0x44]
lea ecx, [edx + 0x6ed9eba1]
add ecx, esi
mov esi, ecx
shl ecx, 3
shr esi, 0x1d
or esi, ecx
mov ecx, ebx
xor ecx, ebp
add ebx, 0x6ed9eba1
xor ecx, esi
add ecx, dword [esp + 0x1c]
add ecx, edi
mov edi, ecx
shl ecx, 9
shr edi, 0x17
or edi, ecx
mov ecx, edi
mov edx, edi
xor ecx, ebp
add ebp, 0x6ed9eba1
xor ecx, esi
add ecx, dword [esp + 0x20]
add ecx, ebx
mov ebx, ecx
shl ecx, 0xb
shr ebx, 0x15
or ebx, ecx
xor edx, ebx
mov ecx, edx
xor ecx, esi
add ecx, eax
add ecx, ebp
mov ebp, ecx
shl ecx, 0xf
shr ebp, 0x11
or ebp, ecx
xor edx, ebp
add edx, dword [esp + 0x48]
lea ecx, [edx + 0x6ed9eba1]
add ecx, esi
mov esi, ecx
shl ecx, 3
add edi, 0x6ed9eba1
shr esi, 0x1d
or esi, ecx
mov eax, dword [esp + 0x54]
mov ecx, ebx
add ebx, 0x6ed9eba1
xor ecx, ebp
xor ecx, esi
add ecx, dword [esp + 0x24]
add ecx, edi
mov edi, ecx
shl ecx, 9
shr edi, 0x17
or edi, ecx
mov ecx, edi
mov edx, edi
xor ecx, ebp
add edi, 0x6ed9eba1
xor ecx, esi
add ebp, 0x6ed9eba1
add ecx, dword [esp + 0x10]
add ecx, ebx
mov ebx, ecx
shl ecx, 0xb
shr ebx, 0x15
or ebx, ecx
xor edx, ebx
mov ecx, edx
xor ecx, esi
add ecx, dword [esp + 0x28]
add ecx, ebp
mov ebp, ecx
shl ecx, 0xf
shr ebp, 0x11
or ebp, ecx
xor edx, ebp
add edx, dword [esp + 0x4c]
lea ecx, [edx + 0x6ed9eba1]
add ecx, esi
mov esi, ecx
shl ecx, 3
shr esi, 0x1d
or esi, ecx
mov ecx, ebx
xor ecx, ebp
add ebx, 0x6ed9eba1
xor ecx, esi
add eax, esi
add ecx, dword [esp + 0x50]
add ecx, edi
mov edi, ecx
shl ecx, 9
shr edi, 0x17
or edi, ecx
mov ecx, edi
xor ecx, ebp
xor ecx, esi
add ecx, dword [esp + 0x2c]
add ecx, ebx
mov dword [esp + 0x2c], eax
mov ebx, dword [esp + 0x6c]
mov edx, ecx
shl ecx, 0xb
shr edx, 0x15
or edx, ecx
mov ecx, edi
xor ecx, edx
mov dword [ebx], eax
mov eax, dword [esp + 0x5c]
xor ecx, esi
mov esi, dword [esp + 0x30]
add esi, 0x6ed9eba1
add esi, ecx
add esi, ebp
ror esi, 0x11
add esi, dword [esp + 0x58]
add eax, edx
mov dword [esp + 0x14], esi
mov dword [ebx + 4], esi
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x2c]
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x60]
add eax, edi
mov dword [esp + 0x54], edx
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov dword [ebx + 0xc], eax
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], edi
test ecx, ecx
jne 0x59b660
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x58
ret