Function at 0x421b40
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov ecx, dword [esp + 0x74]
mov ebp, dword [esp + 0x70]
mov ebx, dword [ebp + 4]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax], 0
lea eax, [eax + 2]
jne 0x421b60
add eax, ebx
add eax, 0xfffffffe
mov edx, ebx
not edx
and edx, eax
add edx, edx
xor eax, ebx
sub edx, eax
mov edi, dword [ecx + 4]
xor eax, eax
cmp word [edi + eax], 0
lea eax, [eax + 2]
jne 0x421b80
sar edx, 1
add eax, edi
add eax, 0xfffffffe
mov ecx, edi
not ecx
and ecx, eax
add ecx, ecx
xor eax, edi
sub ecx, eax
sar ecx, 1
lea esi, [edx + ecx]
mov dword [esp + 0x50], ecx
lea eax, [edx + ecx]
add eax, 0x1b
test eax, eax
mov dword [esp + 0x54], edx
jns 0x421bbb
mov eax, 0xffffffff
jmp 0x421bc2
lea eax, [esi*2 + 0x36]
push eax
call fcn.0040cc60
add esp, 4
mov dword [esp + 0x44], eax
mov dword [esp + 8], 0xb1c28ff0
mov dword [esp + 0xc], 0xb5d7b321
mov dword [esp + 0x10], 0xb9dab7d7
mov dword [esp + 0x14], 0xbdfdbb98
mov dword [esp + 0x18], 0xa12abf24
mov dword [esp + 0x1c], 0xa5cca3c7
mov dword [esp + 0x20], 0xa9cda731
mov dword [esp + 0x24], 0xadc4ab39
mov dword [esp + 0x28], 0xd1dbaf8c
mov dword [esp + 0x2c], 0xd546d3b7
mov dword [esp + 0x30], 0xd9bdd740
mov dword [esp + 0x34], 0xddb3dbb6
mov dword [esp + 0x38], 0xc1a2df49
mov word [esp + 0x3c], 0xc3c0
mov dword [esp + 0x3e], 0
mov eax, 0xaabab09d
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x55454f6b]
xor ecx, eax
add ecx, 0xaa5a8cee
mov edx, ecx
xor edx, 0xab
and ecx, 0x54
add ecx, ecx
sub ecx, edx
add cl, 0xac
mov byte [esp + eax + 0x55454f6b], cl
inc eax
cmp eax, 0xaabab0d7
jne 0x421c50
movzx ecx, word [ebx]
mov eax, dword [esp + 0x44]
test cx, cx
je 0x421cb1
add ebx, 2
mov eax, dword [esp + 0x44]
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 0x421ca0
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x421ce1
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 0x421cd0
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
mov dword [esp + 0x4c], esi
je 0x421d11
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x421d00
mov word [eax], 0
mov esi, dword [ebp]
xor eax, eax
nop
nop
nop
nop
nop
cmp word [esi + eax], 0
lea eax, [eax + 2]
jne 0x421d20
lea ecx, [esi + eax]
add ecx, 0xfffffffe
mov eax, esi
not eax
and eax, ecx
add eax, eax
xor ecx, esi
sub eax, ecx
mov ebp, dword [ebp + 8]
xor ecx, ecx
mov edi, dword [esp + 0x74]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx], 0
lea ecx, [ecx + 2]
jne 0x421d50
lea edx, [ecx + ebp]
add edx, 0xfffffffe
mov ecx, ebp
not ecx
and ecx, edx
add ecx, ecx
xor edx, ebp
sub ecx, edx
mov ebx, dword [edi]
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx], 0
lea edx, [edx + 2]
jne 0x421d80
sar eax, 1
sar ecx, 1
lea edi, [ebx + edx]
add edi, 0xfffffffe
mov edx, ebx
not edx
and edx, edi
add edx, edx
xor edi, ebx
sub edx, edi
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x421db5
mov eax, 0xffffffff
jmp 0x421dbe
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.0040cc60
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 4], eax
mov edx, eax
test cx, cx
je 0x421df1
add esi, 2
mov edx, dword [esp + 4]
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x421de0
mov word [edx], 0x2f
mov dword [esp + 8], 0x79c17b55
mov dword [esp + 0xc], 0x7dea7ff0
mov dword [esp + 0x10], 0x71e073e7
mov dword [esp + 0x14], 0x75e977e5
mov dword [esp + 0x18], 0x69f86be5
mov dword [esp + 0x1c], 0x6d3f6ffd
mov word [esp + 0x20], 0x636c
mov dword [esp + 0x22], 0
mov byte [esp + 0x26], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0x3f
xor cl, byte [esp + eax + 8]
add cl, 0xc5
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0x1f
jne 0x421e40
add edx, 2
movzx eax, word [ebp]
test ax, ax
je 0x421e82
add ebp, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x421e70
mov word [edx], 0
movzx eax, word [esp + 8]
test ax, ax
je 0x421eb1
lea ecx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x421ea0
mov word [edx], 0
movzx eax, word [ebx]
test ax, ax
je 0x421ee1
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x421ed0
mov dword [esp + 0x48], edx
mov word [edx], 0
mov dword [esp + 8], 0xe3e2e1da
mov eax, 0x2771b757
mov ecx, 0xd88e48a8
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x2771b760]
mov edi, ecx
and edi, edx
add edi, edi
mov esi, edx
sub esi, edi
add esi, ecx
or esi, eax
mov ebx, esi
not ebx
mov ebp, ebx
mov edi, ebx
and edi, 2
or ebx, 2
imul ebx, edi
mov edi, esi
and edi, 2
and ebp, 0xd88e48a9
imul edi, ebp
shr esi, 1
and esi, 1
imul esi, ebp
add edi, ebx
lea ebx, [ebx + esi*2]
lea esi, [eax + edi]
add esi, 0xd88e4901
xor esi, edx
not ebx
add ebx, ecx
and ebx, edx
add ebx, ebx
sub ebx, esi
add bl, 0xb8
mov byte [esp + ecx + 0x2771b760], bl
dec eax
inc ecx
cmp eax, 0x2771b753
jne 0x421f00
lea eax, [esp + 8]
push 0
push 0
push 0xc00000
push eax
mov esi, dword [esp + 0x54]
push esi
push dword [esp + 0x18]
push dword [esp + 0x84]
call fcn.00425430
add esp, 0x1c
mov ebx, eax
jmp dword [0x44c850]