Function at 0x4368b0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x103c
call 0x4890c0
mov edx, dword [esp + 0x1050]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], 0x20
test edx, edx
jle 0x4369a7
mov eax, dword [esp + 0x1054]
mov ecx, dword [esp + 0x1058]
sub ecx, eax
mov ebx, eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x14], edx
jmp 0x436904
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x105c]
mov edx, dword [ecx + ebx]
xor ecx, ecx
mov esi, ebp
test ebp, ebp
je 0x436929
mov eax, dword [edx]
mov edi, eax
sar edi, 0x1f
xor edi, eax
add edx, 4
or ecx, edi
sub esi, 1
jne 0x436916
not ecx
xor eax, eax
test ecx, ecx
jns 0x436938
add ecx, ecx
inc eax
test ecx, ecx
js 0x436931
mov edx, dword [ebx]
xor ecx, ecx
dec eax
test eax, eax
setl cl
mov esi, ebp
dec ecx
and ecx, eax
mov edi, ecx
xor ecx, ecx
test ebp, ebp
je 0x436963
nop
mov eax, dword [edx]
mov ebp, eax
sar ebp, 0x1f
xor ebp, eax
add edx, 4
or ecx, ebp
sub esi, 1
jne 0x436950
not ecx
xor eax, eax
test ecx, ecx
jns 0x436977
jmp 0x436970
add ecx, ecx
inc eax
test ecx, ecx
js 0x436970
dec eax
xor edx, edx
test eax, eax
setl dl
dec edx
and eax, edx
cmp eax, edi
jl 0x436988
mov eax, edi
cmp dword [esp + 0x1c], eax
jl 0x436992
mov dword [esp + 0x1c], eax
add ebx, 4
sub dword [esp + 0x14], 1
jne 0x436900
cmp dword [esp + 0x1c], 0x1f
jl 0x4369b9
mov ecx, dword [esp + 0x1064]
mov eax, 0xf
sub eax, dword [ecx]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
dec eax
xor ecx, ecx
test eax, eax
setl cl
xor ebp, ebp
lea edx, [esp + 0x4c]
mov dword [esp + 0x34], edx
mov dword [esp + 0x30], ebp
dec ecx
and ecx, eax
mov eax, dword [esp + 0x1064]
add dword [eax], ecx
cmp dword [esp + 0x1060], ebp
mov dword [esp + 0x1c], ecx
jle 0x436b66
mov ebx, dword [esp + 0x1058]
mov esi, dword [esp + 0x1054]
add ebx, 4
sub esi, dword [esp + 0x1058]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x44], esi
jmp 0x436a16
mov esi, dword [esp + 0x44]
cmp dword [esp + 0x105c], 0
mov eax, dword [esp + 0x1054]
mov eax, dword [eax + ebp*4]
mov edx, dword [ebx - 4]
mov esi, dword [esi + ebx]
mov edi, dword [ebx]
jle 0x436b44
mov ebx, dword [esp + 0x105c]
sub eax, esi
sub edx, esi
sub edi, esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], edi
mov dword [esp + 0x40], ebx
jmp 0x436a6c
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0x38]
mov edi, dword [edi + esi]
mov ebx, dword [edx + esi]
mov ebp, dword [esi]
mov dword [esp + 0x20], edi
mov edi, dword [eax + esi]
shl edi, cl
shl ebx, cl
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x10]
imul dword [esp + 0x14]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x48], edx
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x14]
imul dword [esp + 0x18]
mov dword [esp + 0x14], edx
shl dword [esp + 0x20], cl
shl ebp, cl
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], ebp
mov eax, dword [esp + 0x10]
imul dword [esp + 0x18]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
imul dword [esp + 0x20]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x18]
lea eax, [edx + ecx]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x48]
add ecx, edx
sar ecx, 1
sar eax, 1
add eax, ecx
mov ecx, dword [esp + 0x34]
mov dword [ecx], eax
add ecx, 4
cmp dword [esp + 0x24], eax
mov dword [esp + 0x34], ecx
jg 0x436b0f
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x20]
mov dword [eax + esi], edi
mov eax, dword [esp + 0x38]
mov dword [esi], ebp
mov dword [ecx + esi], ebx
mov ecx, dword [esp + 0x1c]
mov dword [eax + esi], edx
add esi, 4
sub dword [esp + 0x40], 1
jne 0x436a60
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x28]
add ebp, 2
add ebx, 8
cmp ebp, dword [esp + 0x1060]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x28], ebx
jl 0x436a12
mov eax, dword [esp + 0x1064]
mov ecx, dword [eax]
mov eax, dword [esp + 0x24]
lea edx, [ecx + ecx - 1]
mov ecx, dword [esp + 0x1068]
mov dword [ecx], edx
mov edx, eax
xor edi, edi
test edx, edx
je 0x436b98
jge 0x436b87
not edx
mov eax, edx
not eax
xor edi, edi
test eax, eax
jns 0x436b97
nop
add eax, eax
inc edi
test eax, eax
js 0x436b90
dec edi
mov ebp, dword [esp + 0x1060]
sar ebp, 1
xor esi, esi
lea ebx, [esp + 0x4c]
test ebp, ebp
jle 0x436bf4
jmp 0x436bb0
mov eax, dword [esp + 0x105c]
push eax
mov eax, dword [esp + 0x1054]
mov eax, dword [eax + esi*4]
mov ecx, edi
mov edx, ebx
call fcn.004367a0
mov eax, dword [esp + 0x1060]
add eax, eax
add eax, eax
inc esi
add esp, 4
add ebx, eax
cmp esi, ebp
jl 0x436bb0
mov eax, dword [esp + 0x1068]
add dword [eax], edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x103c
ret
add dword [ecx], edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x103c
ret