Function at 0x420d30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov edi, dword [esp + 0x3c]
mov ebp, 0xfffffffe
cmp word [edi + ebp + 2], 0
lea ebp, [ebp + 2]
jne 0x420ca0
sar ebp, 1
mov eax, esp
push eax
push 0
push 0
push ebp
push edi
push 0
call dword [0x44be2c]
mov dword [esp + 0x20], eax
mov dword [esp + 0xc], 0x195a5b61
mov dword [esp + 0x10], 0
mov esi, 0xf
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi - 3]
mov ebx, ecx
and ebx, esi
mov eax, ebx
or al, 0xfd
inc al
mov edx, ebx
and dl, 0x1d
mul dl
mov edx, eax
add dl, cl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub dl, al
movzx eax, dl
add eax, esi
add al, 0xb5
mov byte [esp + esi - 3], al
inc esi
cmp esi, 0x17
jne case.default.0x420d29
xor eax, eax
mov ecx, dword [esp + 0x20]
cmp ecx, dword [esp + 0xc]
setne al
xor ebx, ebx
jmp dword [eax*4 + 0x446084]
mov ebx, dword [esp]
test ebx, ebx
jns 0x420d3e
mov eax, 0xffffffff
jmp 0x420d41
lea eax, [ebx + ebx]
push eax
call fcn.004082d0
add esp, 4
mov esi, eax
mov eax, esp
push eax
push ebx
push esi
push ebp
push edi
push 0
call dword [0x44be2c]
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x44608c]
xor ebx, ebx
jmp dword [0x446094]
push esi
call fcn.004082e0
add esp, 4
mov eax, dword [case.0x420d29.0]
xor ebx, ebx
nop
jmp eax
lea edi, [esp + 0xc]
push edi
push esi
call fcn.0043f130
add esp, 8
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x4460ac]
xor eax, eax
test byte [esp + 0xc], 0x10
sete al
mov ebp, 1
jmp dword [eax*4 + 0x4460b4]
xor ebp, ebp
jmp dword [0x4460bc]
push esi
call fcn.004082e0
add esp, 4
xor ebx, ebx
jmp dword [ebp*4 + 0x4460c4]
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x40]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0x393a3b6a
mov dword [esp + 8], 0
movzx eax, byte [esp + ebx + 4]
mov ecx, ebx
xor ecx, 0xf4
mov edx, ebx
or edx, 0xb
and ecx, edx
add ecx, edx
mov edx, eax
and edx, 0xffffffc9
or edx, 0x26
and eax, 0x36
xor eax, ecx
xor eax, edx
xor al, 0x26
add al, 0xc9
mov byte [esp + ebx + 4], al
inc ebx
cmp ebx, 8
jne 0x420e00
lea eax, [esp + 4]
push edi
push 0x422ba0
push eax
push esi
call fcn.00423170
add esp, 0x10
mov ebx, eax
jmp dword [0x4460cc]
push esi
call fcn.004082e0
add esp, 4
mov eax, ebx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [edx]
mov ecx, dword [ecx]
mov ecx, dword [ecx + edx*4]
jmp ecx
mov ecx, dword [esi + 0x2a4]
mov dword [ecx], 0
mov eax, dword [esi + 0x2b4]
mov eax, dword [eax]
mov ecx, dword [ecx]
mov eax, dword [eax + ecx*4]
jmp eax
lea ecx, [esi + 0x2d0]
sub esp, 4
mov dword [esp], 1
call fcn.00408dd0
mov eax, edi
add eax, 4
mov dword [esi + 0x17c], eax
mov eax, dword [edi + 4]
sub esp, 4
mov dword [esp], eax
call fcn.00418760
add esp, 4
add eax, 0xa
mov ecx, 2
mul ecx
seto dl
mov ecx, 0xffffffff
test dl, 1
jne 0x4223d6
mov ecx, eax
sub esp, 4
mov dword [esp], ecx
call fcn.004082d0
add esp, 4
mov dword [esi + 0x168], eax
mov al, byte [esi + 0x44]
mov byte [esi + 0xc0], al
mov byte [esi + 0x48], 0x7c
mov byte [esi + 0x49], 0x19
mov byte [esi + 0x4a], 0x86
mov byte [esi + 0x4b], 0x17
mov byte [esi + 0x4c], 0x9a
mov byte [esi + 0x4d], 0x15
mov byte [esi + 0x4e], 0x8f
mov byte [esi + 0x4f], 0x13
mov byte [esi + 0x50], 0x8a
mov byte [esi + 0x51], 0x11
mov byte [esi + 0x52], 0x81
mov byte [esi + 0x53], 0xf
mov byte [esi + 0x54], 0x5e
mov byte [esi + 0x55], 0xd
mov byte [esi + 0x56], 0x9c
mov byte [esi + 0x57], 0xb
mov byte [esi + 0x58], 0x87
mov byte [esi + 0x59], 9
mov byte [esi + 0x5a], 6
mov byte [esi + 0x5b], 7
mov eax, 0x14
mov byte [esi + eax + 0x48], 0
add eax, 1
cmp eax, 0x17
jne 0x422448
xor edx, edx
cmp edx, 0x17
jae 0x4224c4
movzx ecx, byte [esi + edx + 0x48]
mov ebx, edx
and ebx, 0x5a498c84
mov edi, edx
and edi, 0x5a498c84
mov eax, edx
and eax, 2
xor eax, 2
imul eax, edi
mov edi, edx
and edi, 2
or ebx, 2
imul ebx, edi
add ebx, eax
mov eax, edx
xor eax, 0x5a498c86
add eax, ebx
xor eax, ecx
add eax, 0x3c904161
mov ecx, eax
shl ecx, 1
and ecx, 2
xor eax, 1
add eax, ecx
mov byte [esi + edx + 0x48], al
add edx, 0xd7a19e41
mov eax, edx
xor eax, 1
shl edx, 1
and edx, 2
add eax, edx
add eax, 0x285e61bf
mov edx, eax
jmp 0x422457
mov eax, dword [esi + 0x17c]
mov eax, dword [eax]
sub esp, 8
mov dword [esp + 4], eax
mov edi, dword [esi + 0x168]
mov dword [esp], edi
call fcn.00409d30
lea ecx, [esi + 0x48]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00409d30
sub esp, 0xc
lea eax, [esi + 4]
mov dword [esp + 4], eax
mov dword [esp], edi
mov dword [esp + 0x10], 0x60
mov dword [esp + 0xc], 3
mov dword [esp + 8], 0x120089
call fcn.0043ef80
add esp, 0x14
not eax
shr eax, 0x1f
mov ecx, dword [esi + 0x1a0]
mov dword [ecx], eax
mov eax, dword [esi + 0x1a4]
mov eax, dword [eax]
mov ecx, dword [ecx]
mov eax, dword [eax + ecx*4]
jmp eax
mov eax, dword [esi + 4]
sub esp, 0xc
lea ecx, [esi + 8]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 8], 0
call fcn.0043f2e0
add esp, 0xc
not eax
shr eax, 0x1f
mov ecx, dword [esi + 0x1ac]
mov dword [ecx], eax
mov eax, dword [esi + 0x1b4]
mov eax, dword [eax]
mov ecx, dword [ecx]
mov eax, dword [eax + ecx*4]
jmp eax