Function at 0x421446
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov ebx, dword [esp + 0xb0]
mov eax, dword [esp + 0xac]
mov ecx, dword [eax]
mov eax, 0xfffffffe
nop
cmp word [ecx + eax + 2], 0
lea eax, [eax + 2]
jne 0x421000
mov ecx, 0xfffffffe
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x421010
sar eax, 1
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x3f
test edx, edx
jns 0x421030
mov eax, 0xffffffff
jmp 0x421039
add eax, ecx
lea eax, [eax*2 + 0x7e]
push eax
call fcn.00409860
add esp, 4
mov esi, eax
mov dword [esp + 0x50], 0x21a927c2
mov dword [esp + 0x54], 0xddbd23ad
mov dword [esp + 0x58], 0xd923df4e
mov dword [esp + 0x5c], 0xd54cdb49
mov dword [esp + 0x60], 0xd149d758
mov dword [esp + 0x64], 0xcd5ed358
mov dword [esp + 0x68], 0xc952cf37
mov dword [esp + 0x6c], 0xc506cb0f
mov dword [esp + 0x70], 0xc10dc716
mov dword [esp + 0x74], 0xfd09c30c
mov dword [esp + 0x78], 0xf937ff32
mov dword [esp + 0x7c], 0xf531fb2a
mov dword [esp + 0x80], 0xf112f73b
mov dword [esp + 0x84], 0xed6ef36b
mov dword [esp + 0x88], 0xe9eeef0e
mov word [esp + 0x8c], 0
mov byte [esp + 0x8e], 0
xor edi, edi
xor ecx, ecx
nop
nop
nop
nop
nop
movzx ebp, byte [esp + ecx + 0x50]
mov eax, edi
and eax, 0x72
mov edx, ecx
xor edx, 0x2e4f90f9
add edx, eax
xor edx, ebp
add edx, 0x18722b22
mov eax, edx
xor eax, 0x28
and edx, 0x57
add edx, edx
sub edx, eax
add dl, 0x29
mov byte [esp + ecx + 0x50], dl
inc ecx
add edi, 2
cmp ecx, 0x3f
jne 0x4210e0
mov dword [esp + 8], 0x9fe999c4
mov dword [esp + 0xc], 0xa3d19de8
mov dword [esp + 0x10], 0xa7c7a1d6
mov dword [esp + 0x14], 0xabcfa5cf
mov dword [esp + 0x18], 0xafcaa9f4
mov dword [esp + 0x1c], 0xb3d8adc9
mov dword [esp + 0x20], 0xb7c3b1d1
mov dword [esp + 0x24], 0xbbceb5d8
mov dword [esp + 0x28], 0xbfd3b9e4
mov dword [esp + 0x2c], 0xc3bcbdcf
mov dword [esp + 0x30], 0xc7a3c1ed
mov dword [esp + 0x34], 0xcbbec5bc
mov dword [esp + 0x38], 0xcfbcc9ad
mov dword [esp + 0x3c], 0xd3bbcdbb
mov dword [esp + 0x40], 0xd7a4d1a3
mov dword [esp + 0x44], 0xdbf5d5fb
mov dword [esp + 0x48], 0xdfded9f7
mov byte [esp + 0x4c], 0
mov eax, 0x603b491a
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x603b4912]
mov ecx, eax
or ecx, edx
lea edi, [eax - 0x603b4900]
or edi, eax
and edi, edx
sub ecx, edi
add cl, 0x7e
mov byte [esp + eax - 0x603b4912], cl
inc eax
cmp eax, 0x603b495f
jne 0x4211b0
mov eax, dword [esp + 0xac]
mov ecx, dword [eax]
movzx edx, word [ecx]
mov eax, esi
test dx, dx
je 0x421211
add ecx, 2
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x421200
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x421241
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421230
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x421271
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x421260
mov word [eax], 0
movzx ecx, word [esp + 0x50]
test cx, cx
je 0x4212a1
lea edx, [esp + 0x52]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421290
mov word [eax], 0
mov eax, dword [esp + 0xb4]
mov ebx, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x4212c0
mov ecx, dword [esp + 0xa8]
mov edx, dword [ecx]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [edx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4212e0
sar eax, 1
add eax, 0xb
mov edx, dword [esp + 0xac]
mov edi, dword [edx + 4]
mov edx, 0xfffffffe
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x421300
sar ecx, 1
add eax, ecx
sar edx, 1
mov ecx, edx
and ecx, eax
xor edx, eax
lea eax, [edx + ecx*2]
mov ebp, 0xffffffff
test eax, eax
mov dword [esp + 4], esi
jns 0x42132e
mov eax, 0xffffffff
jmp 0x421330
add eax, eax
push eax
call fcn.00409860
add esp, 4
mov dword [esp], eax
mov dword [esp + 8], 0xb7578973
mov dword [esp + 0xc], 0xb326b520
mov dword [esp + 0x10], 0xbf22b15d
mov dword [esp + 0x14], 0xbb69bd23
mov word [esp + 0x18], 0xb9b8
mov dword [esp + 0x1a], 0
xor eax, eax
nop
nop
nop
movzx ecx, byte [esp + eax + 8]
mov edx, ebp
or edx, 0x3040455e
add edx, eax
inc edx
mov edi, eax
and edi, 1
or edi, 0x3040455e
mov esi, edi
and esi, edx
xor edi, edx
lea edx, [edi + esi*2]
lea esi, [ecx + ecx]
not esi
add esi, ecx
and esi, 0x15
xor ecx, 0x15
or ecx, esi
xor ecx, edx
xor cl, 0x15
add cl, 0x2a
mov byte [esp + eax + 8], cl
lea ecx, [eax + 1]
dec ebp
mov eax, ecx
cmp ecx, 0x16
jne 0x421370
movzx ecx, word [esp + 8]
mov esi, dword [esp]
mov eax, esi
test cx, cx
je 0x4213e1
lea edx, [esp + 0xa]
mov eax, esi
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4213d0
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x421411
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x421400
mov word [eax], 0x5f
add eax, 2
mov ecx, dword [esp + 0xa8]
mov ecx, dword [ecx]
movzx edx, word [ecx]
test dx, dx
je 0x421441
add ecx, 2
nop
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x421430
mov word [eax], 0x5f
mov ecx, dword [esp + 0xac]
mov ecx, dword [ecx + 4]
add eax, 2
movzx edx, word [ecx]
test dx, dx
je 0x421471
add ecx, 2
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x421460
mov word [eax], 0
mov dword [esp + 8], 0x90a0b3a
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 8]
mov esi, ecx
xor esi, 0x71390da6
mov edx, eax
and edx, 2
sub edx, esi
lea ebp, [edx + 0xa9]
and ebp, ebx
mov esi, ebp
or esi, 0xfd
inc esi
mov edi, ebp
and edi, 0xd
imul edi, esi
mov esi, ebp
and esi, 2
or ebp, 2
imul ebp, esi
sub edi, ebp
add edx, ebx
add edx, edi
add dl, 0x9a
mov byte [esp + ecx + 8], dl
inc ecx
add eax, 2
cmp ecx, 4
jne 0x421490
lea eax, [esp + 8]
push 0
push 1
push 0
push eax
mov esi, dword [esp + 0x14]
push esi
mov edi, dword [esp + 0x14]
push edi
push dword [esp + 0xbc]
call fcn.00421800
add esp, 0x1c
mov ebx, eax
jmp dword [0x447194]