Function at 0x4201b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ebp, dword [esp + 0x6c]
mov edi, dword [ebp + 4]
xor eax, eax
cmp word [edi + eax], 0
lea eax, [eax + 2]
jne 0x4201c0
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add eax, edi
mov edx, 1
sub edx, eax
and edx, edi
mov ebx, edi
not ebx
and ebx, ecx
sub ebx, edx
mov eax, dword [esp + 0x70]
mov esi, dword [eax + 4]
xor eax, eax
nop
nop
nop
nop
cmp word [esi + eax], 0
lea eax, [eax + 2]
jne 0x4201f0
sar ebx, 1
lea ecx, [esi + eax]
add ecx, 0xfffffffe
add eax, esi
mov edx, 1
sub edx, eax
and edx, esi
mov eax, esi
not eax
and eax, ecx
sub eax, edx
sar eax, 1
lea ecx, [ebx + eax]
mov dword [esp + 0x50], eax
add eax, ebx
add eax, 0x1b
test eax, eax
mov dword [esp + 0xc], ebx
mov dword [esp + 0x4c], ecx
jns 0x420236
mov eax, 0xffffffff
jmp 0x42023d
lea eax, [ecx*2 + 0x36]
push eax
call fcn.00408c10
add esp, 4
mov dword [esp + 8], eax
mov dword [esp + 0x10], 0x8f528924
mov dword [esp + 0x14], 0x83258d3f
mov dword [esp + 0x18], 0x873a8121
mov dword [esp + 0x1c], 0x9b5f8564
mov dword [esp + 0x20], 0x9f2a9910
mov dword [esp + 0x24], 0x93209d39
mov dword [esp + 0x28], 0x972f9127
mov dword [esp + 0x2c], 0x6bd89527
mov dword [esp + 0x30], 0x6fb96988
mov dword [esp + 0x34], 0x63d66dc9
mov dword [esp + 0x38], 0x67df61d4
mov dword [esp + 0x3c], 0x7bc165d6
mov dword [esp + 0x40], 0x7fd279cf
mov dword [esp + 0x44], 0x7d7c
mov byte [esp + 0x48], 0
mov eax, 0x22
mov ecx, 0x9d
nop
nop
nop
nop
nop
nop
nop
mov ebx, ecx
and ebx, 0xc8
mov edx, eax
and edx, 0x37
or edx, ebx
xor dl, byte [esp + eax - 0x12]
xor dl, 0xc8
add dl, 0x16
mov byte [esp + eax - 0x12], dl
inc eax
dec ecx
cmp eax, 0x5b
jne 0x4202d0
movzx ecx, word [edi]
mov eax, dword [esp + 8]
test cx, cx
je 0x420321
add edi, 2
mov eax, dword [esp + 8]
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 0x420310
mov word [eax], 0
movzx ecx, word [esp + 0x10]
test cx, cx
je 0x420351
lea edx, [esp + 0x12]
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 0x420340
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
je 0x420381
add esi, 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 [esi]
add esi, 2
test cx, cx
jne 0x420370
mov word [eax], 0
mov ebx, dword [ebp]
xor eax, eax
nop
nop
nop
nop
nop
cmp word [ebx + eax], 0
lea eax, [eax + 2]
jne 0x420390
lea ecx, [ebx + eax]
add ecx, 0xfffffffe
add eax, ebx
mov edx, 1
sub edx, eax
and edx, ebx
mov eax, ebx
not eax
and eax, ecx
sub eax, edx
mov dword [esp], eax
mov edi, dword [ebp + 8]
xor ecx, ecx
nop
nop
nop
nop
nop
cmp word [edi + ecx], 0
lea ecx, [ecx + 2]
jne 0x4203c0
lea edx, [edi + ecx]
add edx, 0xfffffffe
add ecx, edi
mov esi, 1
sub esi, ecx
and esi, edi
mov ecx, edi
not ecx
and ecx, edx
sub ecx, esi
mov eax, dword [esp + 0x70]
mov ebp, dword [eax]
xor edx, edx
nop
nop
nop
nop
nop
cmp word [ebp + edx], 0
lea edx, [edx + 2]
jne 0x4203f0
mov esi, dword [esp]
sar esi, 1
sar ecx, 1
lea eax, [edx + ebp]
add eax, 0xfffffffe
mov dword [esp], eax
add edx, ebp
mov eax, 1
sub eax, edx
and eax, ebp
mov edx, ebp
not edx
and edx, dword [esp]
sub edx, eax
sar edx, 1
add ecx, esi
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x420434
mov eax, 0xffffffff
jmp 0x42043d
add ecx, edx
lea eax, [ecx*2 + 0x26]
mov dword [esp + 4], ebp
push eax
call fcn.00408c10
add esp, 4
mov esi, eax
movzx eax, word [ebx]
mov dword [esp], esi
test ax, ax
je 0x420471
add ebx, 2
mov esi, dword [esp]
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x420460
mov word [esi], 0x2f
mov dword [esp + 0x10], 0x37eb390b
mov dword [esp + 0x14], 0x33be35bc
mov dword [esp + 0x18], 0xcf3c31cd
mov dword [esp + 0x1c], 0xcb33cd43
mov dword [esp + 0x20], 0xc734c93b
mov dword [esp + 0x24], 0xc3f1c54b
mov word [esp + 0x28], 0xc1c0
mov dword [esp + 0x2a], 0
mov word [esp + 0x2e], 0
mov edx, 0x51d48f6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edx - 0x51d48e6]
mov ebx, ebp
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, ebp
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x32
mov byte [esp + edx - 0x51d48e6], al
inc edx
cmp edx, 0x51d4916
jne 0x4204d0
add esi, 2
movzx eax, word [edi]
test ax, ax
je 0x420543
add edi, 2
mov edx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x420530
jmp 0x420547
mov edx, dword [esp + 4]
mov word [esi], 0
movzx eax, word [esp + 0x10]
test ax, ax
je 0x420571
lea ecx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x420560
mov word [esi], 0
movzx eax, word [edx]
test ax, ax
je 0x4205a1
add edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edx]
add edx, 2
test ax, ax
jne 0x420590
mov word [esi], 0
mov dword [esp + 0x10], 0x3f3e3956
mov word [esp + 0x14], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x10]
mov ebx, ecx
xor ebx, 0x76
mov edi, eax
and edi, 2
sub edi, ebx
lea ebp, [edx + edx]
not ebp
add ebp, edx
mov ebx, ebp
xor ebx, edx
not ebx
add ebx, ebp
and ebp, edx
sub ebx, ebp
xor ebx, edx
and ebx, edi
xor ebx, edx
add bl, 0x4e
mov byte [esp + ecx + 0x10], bl
inc ecx
add eax, 2
cmp ecx, 6
jne 0x4205c0
lea ebx, [esp + 0x10]
push 0
push 0
push 0xc00000
push ebx
mov ebp, dword [esp + 0x18]
push ebp
mov edi, dword [esp + 0x14]
push edi
push dword [esp + 0x80]
call fcn.00424aa0
add esp, 0x1c
mov byte [esp + 4], al
jmp dword [0x446ff0]