Function at 0x401285
Capabilities:
Encode data using xor

Disassembly:
jmp 0x402670
mov eax, 0x40090
call fcn.0040105a
mov eax, dword [0x40a074]
xor eax, esp
mov dword [esp + 0x4008c], eax
push 0x80
mov dword [esp + 0xc], 0
mov dword [esp + 0x20], 0
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ecx, eax
add esp, 4
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ecx
test ecx, ecx
jne 0x4026c9
mov ecx, dword [esp + 0x4008c]
xor ecx, esp
call fcn.004010e1
add esp, 0x40090
ret
push ebx
mov ebx, dword [esp + 0x40098]
lea eax, [ecx + 4]
push ebp
push esi
push edi
mov edi, dword [esp + 0x400a8]
mov esi, 0x1e
mov dword [esp + 0x34], eax
mov dword [eax], 0
mov dword [ecx], 0
mov ecx, esi
mov edx, esi
xor ecx, 0x18
shr edx, 1
mov eax, ebx
shr eax, cl
and al, 1
mov byte [esp + edx + 0x4003c], al
mov eax, edi
shr eax, cl
and al, 1
sub esi, 2
mov byte [esp + edx + 0x4004c], al
jns 0x4026f3
mov esi, 0x1f
mov ecx, esi
mov edx, esi
xor ecx, 0x18
shr edx, 1
mov eax, ebx
shr eax, cl
and al, 1
mov byte [esp + edx + 0x4005c], al
mov eax, edi
shr eax, cl
and al, 1
sub esi, 2
mov byte [esp + edx + 0x4006c], al
jns 0x402720
movzx ebp, byte [esp + 0x4003c]
mov ebx, 0xfffff
mov dword [esp + 0x10], ebx
mov dword [esp + 0x1c], ebp
nop dword [eax]
mov ecx, ebx
mov edx, 0x1e458
shr ecx, 0xc
mov eax, 0xd938
and ecx, 0xf
sar edx, cl
mov ecx, ebx
shr ecx, 0x10
and edx, 2
and ecx, 0xf
sar eax, cl
mov ecx, ebx
and eax, 1
shr ecx, 4
or edx, eax
and ecx, 0xf
mov eax, 0x6c9c0
sar eax, cl
mov ecx, ebx
and eax, 8
shr ecx, 8
or edx, eax
and ecx, 0xf
mov eax, 0x3c8b0
sar eax, cl
mov ecx, ebx
and eax, 4
and ecx, 0xf
or edx, eax
mov eax, 0xf22c0
sar eax, cl
and eax, 0x10
or edx, eax
mov eax, 0xec57e80a
mov ecx, edx
shr eax, cl
and eax, 1
cmp eax, ebp
jne 0x402c8b
lea ebp, [esp + 0x3c]
mov edi, ebx
mov eax, 1
mov dword [esp + 0x14], ebp
mov dword [esp + 0x3c], edi
mov dword [esp + 0x28], eax
nop word [eax + eax]
cmp eax, 0x1d
jge 0x402976
movzx eax, byte [esp + eax + 0x4003c]
add edi, edi
mov dword [esp + 0x20], eax
lea eax, [esp + 0x3c]
mov ecx, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], edi
cmp ecx, ebp
ja 0x40295c
nop dword [eax]
mov ecx, edi
mov esi, 0x1e458
shr ecx, 0xc
mov edx, 0xd938
and ecx, 0xf
mov ebx, edi
sar esi, cl
or ebx, 1
and esi, 2
mov ecx, edi
shr ecx, 0x10
and ecx, 0xf
sar edx, cl
mov ecx, edi
and edx, 1
shr ecx, 4
or esi, edx
and ecx, 0xf
mov edx, 0x6c9c0
sar edx, cl
mov ecx, edi
and edx, 8
shr ecx, 8
or esi, edx
and ecx, 0xf
mov edx, 0x3c8b0
sar edx, cl
mov ecx, edi
and edx, 4
and ecx, 0xf
or esi, edx
mov edi, 0xec57e80a
mov edx, 0xf22c0
sar edx, cl
and edx, 0x10
or esi, edx
mov edx, 0xd938
mov ecx, esi
mov esi, 0x1e458
shr edi, cl
mov ecx, edi
and ecx, 1
mov dword [esp + 0x14], ecx
mov ecx, ebx
shr ecx, 0xc
and ecx, 0xf
sar esi, cl
mov ecx, ebx
shr ecx, 0x10
and esi, 2
and ecx, 0xf
sar edx, cl
mov ecx, ebx
and edx, 1
shr ecx, 4
or esi, edx
and ecx, 0xf
mov edx, 0x6c9c0
sar edx, cl
mov ecx, ebx
and edx, 8
shr ecx, 8
or esi, edx
and ecx, 0xf
mov edx, 0x3c8b0
and ebx, 0xf
sar edx, cl
mov ecx, ebx
and edx, 4
or esi, edx
mov edx, 0xf22c0
sar edx, cl
and edx, 0x10
or esi, edx
mov edx, 0xec57e80a
mov ecx, esi
shr edx, cl
xor edx, edi
test dl, 1
je 0x402915
mov ecx, dword [esp + 0x14]
xor ecx, dword [esp + 0x20]
or ecx, dword [esp + 0x24]
mov dword [eax], ecx
jmp 0x402940
mov ecx, dword [esp + 0x20]
cmp dword [esp + 0x14], ecx
jne 0x402935
mov ecx, dword [eax + 4]
add eax, 4
add ebp, 4
mov dword [ebp], ecx
mov ecx, dword [eax - 4]
or ecx, 1
mov dword [eax], ecx
jmp 0x402940
mov ecx, dword [ebp]
mov dword [eax], ecx
sub eax, 4
sub ebp, 4
shl dword [eax + 4], 1
add eax, 4
mov edi, dword [eax]
mov dword [esp + 0x24], edi
cmp eax, ebp
jbe 0x402820
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x14], ebp
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x3c]
inc eax
mov dword [esp + 0x28], eax
cmp ebp, ecx
jae 0x4027f0
jmp 0x402c83
lea eax, [esp + 0x3c]
cmp ebp, eax
jb 0x402c83
mov ebx, dword [esp + 0x10]
mov esi, 0x408b80
mov ebp, dword [esp + 0x18]
nop
mov edx, ebx
add ebp, ebp
and edx, dword [esi]
add esi, 4
mov eax, edx
shr eax, 0x10
xor edx, eax
mov eax, edx
shr eax, 8
xor edx, eax
mov ecx, edx
shr ecx, 4
xor ecx, edx
mov edx, 0x6996
and ecx, 0xf
sar edx, cl
and edx, 1
or ebp, edx
cmp esi, 0x408bcc
jl 0x402990
mov dword [esp + 0x18], ebp
xor esi, esi
mov ebp, dword [esp + 0x14]
nop
mov edx, dword [esi*4 + 0x408c30]
and edx, ebx
mov eax, edx
shr eax, 0x10
xor edx, eax
mov eax, edx
shr eax, 8
xor edx, eax
mov eax, 0x6996
mov ecx, edx
shr ecx, 4
xor ecx, edx
and ecx, 0xf
sar eax, cl
and al, 1
mov byte [esp + esi + 0x4007c], al
inc esi
cmp esi, 0x20
jl 0x4029d0
nop word [eax + eax]
xor ebx, ebx
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ebp]
mov edi, 0x6996
mov edx, dword [ebx*4 + 0x408bcc]
and edx, dword [esp + 0x10]
lea esi, [eax + eax]
mov eax, dword [ebx*4 + 0x408c24]
and eax, esi
xor edx, eax
mov eax, edx
shr eax, 0x10
xor edx, eax
mov eax, edx
shr eax, 8
xor edx, eax
mov eax, 0xd938
mov ecx, edx
shr ecx, 4
xor ecx, edx
mov edx, 0x1e458
and ecx, 0xf
sar edi, cl
and edi, 1
or edi, esi
mov ecx, edi
mov dword [ebp], edi
shr ecx, 0xc
and ecx, 0xf
sar edx, cl
mov ecx, edi
shr ecx, 0x10
and edx, 2
and ecx, 0xf
sar eax, cl
mov ecx, edi
and eax, 1
shr ecx, 4
or edx, eax
and ecx, 0xf
mov eax, 0x6c9c0
sar eax, cl
mov ecx, edi
and eax, 8
shr ecx, 8
or edx, eax
and ecx, 0xf
mov eax, 0x3c8b0
sar eax, cl
mov ecx, edi
and eax, 4
and ecx, 0xf
or edx, eax
mov eax, 0xf22c0
sar eax, cl
and eax, 0x10
or edx, eax
mov eax, 0xec57e80a
mov ecx, edx
shr eax, cl
and eax, 1
cmp al, byte [esp + ebx + 0x40059]
jne 0x402c74
inc ebx
cmp ebx, 3
jl 0x402a20
mov ebx, dword [esp + 0x2c]
mov esi, 0x408bd8
nop
mov edx, edi
add ebx, ebx
and edx, dword [esi]
add esi, 4
mov eax, edx
shr eax, 0x10
xor edx, eax
mov eax, edx
shr eax, 8
xor edx, eax
mov ecx, edx
shr ecx, 4
xor ecx, edx
mov edx, 0x6996
and ecx, 0xf
sar edx, cl
and edx, 1
or ebx, edx
cmp esi, 0x408c24
jl 0x402af0
xor ebx, dword [esp + 0x18]
xor esi, esi
nop dword [eax + eax]
mov edx, dword [esi*4 + 0x408cb0]
add ebx, ebx
and edx, edi
mov eax, edx
shr eax, 0x10
xor edx, eax
mov eax, edx
shr eax, 8
xor edx, eax
movzx eax, byte [esp + esi + 0x4007c]
mov ecx, edx
shr ecx, 4
xor ecx, edx
mov edx, 0x6996
and ecx, 0xf
sar edx, cl
and edx, 1
xor edx, eax
mov eax, 0xd938
xor ebx, edx
mov edx, 0x1e458
mov ecx, ebx
mov dword [esp + 0x2c], ebx
shr ecx, 0xc
and ecx, 0xf
sar edx, cl
mov ecx, ebx
shr ecx, 0x10
and edx, 2
and ecx, 0xf
sar eax, cl
mov ecx, ebx
and eax, 1
shr ecx, 4
or edx, eax
and ecx, 0xf
mov eax, 0x6c9c0
sar eax, cl
mov ecx, ebx
and eax, 8
shr ecx, 8
or edx, eax
and ecx, 0xf
mov eax, 0x3c8b0
sar eax, cl
mov ecx, ebx
and eax, 4
and ecx, 0xf
or edx, eax
mov eax, 0xf22c0
sar eax, cl
and eax, 0x10
or edx, eax
mov eax, 0xec57e80a
mov ecx, edx
shr eax, cl
and eax, 1
cmp al, byte [esp + esi + 0x4005c]
jne 0x402c74
inc esi
cmp esi, 0x20
jl 0x402b30
mov edx, edi
mov esi, 0x6996
and edx, 0x870804
mov eax, edx
shr eax, 0x10
xor edx, eax
mov eax, edx
shr eax, 8
xor edx, eax
lea eax, [edi + edi]
mov ecx, edx
shr ecx, 4
xor ecx, edx
mov edx, ebx
and ecx, 0xf
and edx, 0x29ce5c
sar esi, cl
and esi, 1
or esi, eax
mov eax, edx
shr eax, 0x10
xor edx, eax
mov dword [ebp], esi
mov eax, edx
shr eax, 8
xor edx, eax
mov eax, 0x6996
mov ecx, edx
shr ecx, 4
xor ecx, edx
and ecx, 0xf
sar eax, cl
mov ecx, dword [esp + 0x30]
and eax, 1
xor eax, esi
mov dword [ecx], eax
add ecx, 8
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], ecx
mov dword [ecx + 4], 0
mov dword [ecx], 0
mov dword [eax], ebx
lea eax, [ecx + 4]
mov dword [esp + 0x34], eax
sub ebp, 4
lea eax, [esp + 0x3c]
cmp ebp, eax
jae 0x402a10
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x1c]
sub ebx, 1
mov dword [esp + 0x10], ebx
jns 0x402760
mov ecx, dword [esp + 0x4009c]
mov eax, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004010e1
add esp, 0x40090
ret