Function at 0x4a95fa
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x34
call fcn.005e38a0
push ebx
mov ebx, dword [ebp + 8]
mov eax, dword [ebx]
mov edx, dword [ebx + 4]
push esi
push edi
mov cl, 0x38
call fcn.00637030
mov ecx, dword [ebx + 0xc]
mov esi, dword [ebx + 0x1c]
mov edi, dword [ebx + 0x24]
mov dword [esp + 0x24], edx
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x30], edx
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x28], edx
mov edx, dword [ebx + 0x2c]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x34], eax
cmp dword [ebp + 0x10], edx
je 0x4a9587
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebx + 0x28]
dec edx
cmp edx, 6
ja case.default.0x4a9590
jmp dword [edx*4 + 0x4a9a24]
movzx eax, byte [ebx + 0x3e]
cdq
shl eax, 0x10
or dword [esp + 0x24], eax
movzx eax, byte [ebx + 0x3d]
cdq
shl eax, 8
or dword [esp + 0x24], eax
movzx eax, byte [ebx + 0x3c]
cdq
or dword [esp + 0x24], eax
movzx eax, byte [ebx + 0x3b]
cdq
shld edx, eax, 0x18
shl eax, 0x18
or dword [esp + 0x20], eax
or dword [esp + 0x24], edx
movzx eax, byte [ebx + 0x3a]
mov ebx, dword [ebp + 8]
cdq
shld edx, eax, 0x10
shl eax, 0x10
or dword [esp + 0x20], eax
or dword [esp + 0x24], edx
movzx eax, byte [ebx + 0x39]
mov ebx, dword [ebp + 8]
cdq
shld edx, eax, 8
shl eax, 8
or dword [esp + 0x20], eax
or dword [esp + 0x24], edx
movzx eax, byte [ebx + 0x38]
cdq
or dword [esp + 0x20], eax
or dword [esp + 0x24], edx
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x20]
xor dword [esp + 0x28], edx
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x30]
xor edi, dword [esp + 0x24]
test edx, edx
jle 0x4a9710
mov ebx, dword [esp + 0x30]
mov dword [esp + 0xc], edx
lea ecx, [ecx]
add dword [esp + 0x18], ebx
mov edx, eax
mov dword [esp + 0x3c], 0
adc dword [esp + 0x1c], eax
shld eax, ebx, 0xd
shl ebx, 0xd
shr edx, 0x13
or edx, ebx
xor edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x10]
mov dword [esp + 0x30], edx
xor eax, dword [esp + 0x1c]
add ecx, ebx
adc esi, edi
mov dword [esp + 0x34], eax
mov eax, edi
shld edi, ebx, 0x10
xor edx, edx
or edx, edi
mov edi, dword [esp + 0x1c]
xor edx, esi
shl ebx, 0x10
shr eax, 0x10
or eax, ebx
xor ebx, ebx
or ebx, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
xor edx, edx
or edi, edx
mov edx, dword [esp + 0x2c]
xor eax, ecx
add edi, eax
adc ebx, edx
mov dword [esp + 0x18], edi
mov edi, edx
shld edx, eax, 0x15
shr edi, 0xb
mov dword [esp + 0x1c], ebx
xor ebx, ebx
or ebx, edx
xor ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
shl eax, 0x15
or edi, eax
xor edi, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
add ecx, eax
adc esi, edx
mov dword [esp + 0x28], edi
mov edi, edx
shld edx, eax, 0x11
mov dword [esp + 0x2c], ebx
shr edi, 0xf
xor ebx, ebx
or ebx, edx
shl eax, 0x11
or edi, eax
xor ebx, esi
xor edi, ecx
mov eax, ebx
mov ebx, edi
xor edi, edi
or esi, edi
mov edi, dword [esp + 0x2c]
xor edx, edx
or edx, ecx
dec dword [esp + 0xc]
mov ecx, esi
mov dword [esp + 0x30], ebx
mov esi, edx
jne 0x4a9630
mov edx, dword [esp + 0x20]
xor dword [esp + 0x18], edx
mov edx, dword [esp + 0x24]
xor dword [esp + 0x1c], edx
mov edx, dword [ebp + 8]
cmp dword [edx + 0x2c], 0x10
jne 0x4a9731
xor ecx, 0xee
jmp 0x4a9737
xor ecx, 0xff
mov edx, dword [edx + 0x34]
mov ebx, dword [esp + 0x30]
xor esi, 0
test edx, edx
jle 0x4a9830
mov dword [esp + 0xc], edx
lea ecx, [ecx]
add dword [esp + 0x18], ebx
mov edx, eax
mov dword [esp + 0x3c], 0
adc dword [esp + 0x1c], eax
shld eax, ebx, 0xd
shl ebx, 0xd
shr edx, 0x13
or edx, ebx
xor edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x10]
mov dword [esp + 0x30], edx
xor eax, dword [esp + 0x1c]
add ecx, ebx
adc esi, edi
mov dword [esp + 0x34], eax
mov eax, edi
shld edi, ebx, 0x10
xor edx, edx
or edx, edi
mov edi, dword [esp + 0x1c]
xor edx, esi
shl ebx, 0x10
shr eax, 0x10
or eax, ebx
xor ebx, ebx
or ebx, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
xor edx, edx
or edi, edx
mov edx, dword [esp + 0x2c]
xor eax, ecx
add edi, eax
adc ebx, edx
mov dword [esp + 0x18], edi
mov edi, edx
shld edx, eax, 0x15
shr edi, 0xb
mov dword [esp + 0x1c], ebx
xor ebx, ebx
or ebx, edx
xor ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
shl eax, 0x15
or edi, eax
xor edi, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
add ecx, eax
adc esi, edx
mov dword [esp + 0x28], edi
mov edi, edx
shld edx, eax, 0x11
mov dword [esp + 0x2c], ebx
shr edi, 0xf
xor ebx, ebx
or ebx, edx
shl eax, 0x11
or edi, eax
xor ebx, esi
xor edi, ecx
mov eax, ebx
mov ebx, edi
xor edi, edi
or esi, edi
mov edi, dword [esp + 0x2c]
xor edx, edx
or edx, ecx
dec dword [esp + 0xc]
mov ecx, esi
mov dword [esp + 0x30], ebx
mov esi, edx
jne 0x4a9750
mov edx, dword [esp + 0x28]
mov dword [esp + 0x10], edx
xor dword [esp + 0x10], ecx
xor dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x10]
xor ebx, dword [esp + 0x18]
mov edx, edi
xor edx, esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x14], edx
xor edx, eax
xor edx, dword [esp + 0x1c]
mov dword [esp + 0x24], edx
mov edx, dword [ebp + 0xc]
mov byte [edx], bl
shr ebx, 8
mov byte [edx + 1], bl
mov ebx, dword [esp + 0x20]
shr ebx, 0x10
mov byte [edx + 2], bl
mov ebx, dword [esp + 0x20]
shr ebx, 0x18
mov byte [edx + 3], bl
mov ebx, dword [esp + 0x24]
mov byte [edx + 4], bl
mov dword [esp + 0x20], ebx
shr ebx, 8
mov byte [edx + 5], bl
mov ebx, dword [esp + 0x20]
shr ebx, 0x10
mov byte [edx + 6], bl
mov ebx, dword [esp + 0x20]
shr ebx, 0x18
mov byte [edx + 7], bl
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x2c], 8
mov dword [esp + 0x24], 0
je 0x4a9a17
mov ebx, dword [ebx + 0x34]
xor dword [esp + 0x30], 0xdd
xor eax, 0
test ebx, ebx
jle 0x4a99c3
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x30]
jmp 0x4a98e0
add dword [esp + 0x18], ebx
mov edx, eax
mov dword [esp + 0x3c], 0
adc dword [esp + 0x1c], eax
shld eax, ebx, 0xd
shl ebx, 0xd
shr edx, 0x13
or edx, ebx
xor edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
or eax, dword [esp + 0x10]
mov dword [esp + 0x30], edx
xor eax, dword [esp + 0x1c]
add ecx, ebx
adc esi, edi
mov dword [esp + 0x34], eax
mov eax, edi
shld edi, ebx, 0x10
xor edx, edx
or edx, edi
mov edi, dword [esp + 0x1c]
xor edx, esi
shl ebx, 0x10
shr eax, 0x10
or eax, ebx
xor ebx, ebx
or ebx, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
xor edx, edx
or edi, edx
mov edx, dword [esp + 0x2c]
xor eax, ecx
add edi, eax
adc ebx, edx
mov dword [esp + 0x18], edi
mov edi, edx
shld edx, eax, 0x15
shr edi, 0xb
mov dword [esp + 0x1c], ebx
xor ebx, ebx
or ebx, edx
xor ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
shl eax, 0x15
or edi, eax
xor edi, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
add ecx, eax
adc esi, edx
mov dword [esp + 0x28], edi
mov edi, edx
shld edx, eax, 0x11
mov dword [esp + 0x2c], ebx
shr edi, 0xf
xor ebx, ebx
or ebx, edx
shl eax, 0x11
or edi, eax
xor ebx, esi
xor edi, ecx
mov eax, ebx
mov ebx, edi
xor edi, edi
or esi, edi
mov edi, dword [esp + 0x2c]
xor edx, edx
or edx, ecx
dec dword [esp + 0xc]
mov ecx, esi
mov dword [esp + 0x30], ebx
mov esi, edx
jne 0x4a98e0
mov edx, dword [ebp + 0xc]
mov ebx, dword [esp + 0x28]
xor ebx, ecx
xor ebx, dword [esp + 0x30]
xor edi, esi
xor ebx, dword [esp + 0x18]
xor edi, eax
xor edi, dword [esp + 0x1c]
mov eax, ebx
mov ecx, eax
shr ecx, 8
mov byte [edx + 9], cl
mov ecx, eax
mov byte [edx + 8], al
shr ecx, 0x10
shr eax, 0x18
mov byte [edx + 0xa], cl
mov byte [edx + 0xb], al
mov eax, edi
mov ecx, edi
shr ecx, 8
mov byte [edx + 0xd], cl
mov ecx, eax
shr ecx, 0x10
mov byte [edx + 0xc], al
shr eax, 0x18
mov dword [esp + 0x24], 0
mov byte [edx + 0xe], cl
mov byte [edx + 0xf], al
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret