Function at 0x10036ce0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x34
mov eax, dword [esp + 0x50]
test eax, eax
jle 0x10037350
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x48]
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xc], edx
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], edx
cdq
add dword [esi + 0x28], eax
mov eax, dword [esi + 0x20]
adc dword [esi + 0x2c], edx
test eax, eax
jle 0x1003713c
cmp eax, 0xf
jg 0x10037379
lea edx, [eax + 1]
mov dword [esi + 0x20], edx
mov esi, dword [esp + 0x4c]
movzx ecx, byte [esi]
lea edi, [esi + 1]
mov esi, dword [esp + 0x48]
mov byte [esi + eax + 0x10], cl
mov ecx, dword [esp + 0x50]
sub ecx, 1
je 0x10037350
cmp edx, 0x10
je 0x10037360
lea ecx, [eax + 2]
mov edx, dword [esp + 0x50]
mov dword [esi + 0x20], ecx
mov esi, dword [esp + 0x4c]
sub edx, 2
movzx ebx, byte [esi + 1]
lea edi, [esi + 2]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x11], bl
je 0x10037350
cmp ecx, 0x10
je 0x10037370
lea edx, [eax + 3]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esi + 0x20], edx
mov esi, dword [esp + 0x4c]
add edi, 3
sub ecx, 3
movzx ebx, byte [esi + 2]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x12], bl
je 0x10037350
cmp edx, 0x10
je 0x10037360
lea ecx, [eax + 4]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [esi + 0x20], ecx
mov esi, dword [esp + 0x4c]
add edi, 4
sub edx, 4
movzx ebx, byte [esi + 3]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x13], bl
je 0x10037350
cmp ecx, 0x10
je 0x10037370
lea edx, [eax + 5]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esi + 0x20], edx
mov esi, dword [esp + 0x4c]
add edi, 5
sub ecx, 5
movzx ebx, byte [esi + 4]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x14], bl
je 0x10037350
cmp edx, 0x10
je 0x10037360
lea ecx, [eax + 6]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [esi + 0x20], ecx
mov esi, dword [esp + 0x4c]
add edi, 6
sub edx, 6
movzx ebx, byte [esi + 5]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x15], bl
je 0x10037350
cmp ecx, 0x10
je 0x10037370
lea edx, [eax + 7]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esi + 0x20], edx
mov esi, dword [esp + 0x4c]
add edi, 7
sub ecx, 7
movzx ebx, byte [esi + 6]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x16], bl
je 0x10037350
cmp edx, 0x10
je 0x10037360
lea ecx, [eax + 8]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [esi + 0x20], ecx
mov esi, dword [esp + 0x4c]
add edi, 8
sub edx, 8
movzx ebx, byte [esi + 7]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x17], bl
je 0x10037350
cmp ecx, 0x10
je 0x10037370
lea edx, [eax + 9]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esi + 0x20], edx
mov esi, dword [esp + 0x4c]
add edi, 9
sub ecx, 9
movzx ebx, byte [esi + 8]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x18], bl
je 0x10037350
cmp edx, 0x10
je 0x10037360
lea ecx, [eax + 0xa]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [esi + 0x20], ecx
mov esi, dword [esp + 0x4c]
add edi, 0xa
sub edx, 0xa
movzx ebx, byte [esi + 9]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x19], bl
je 0x10037350
cmp ecx, 0x10
je 0x10037370
lea edx, [eax + 0xb]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esi + 0x20], edx
mov esi, dword [esp + 0x4c]
add edi, 0xb
sub ecx, 0xb
movzx ebx, byte [esi + 0xa]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x1a], bl
je 0x10037350
cmp edx, 0x10
je 0x10037360
lea ecx, [eax + 0xc]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [esi + 0x20], ecx
mov esi, dword [esp + 0x4c]
add edi, 0xc
sub edx, 0xc
movzx ebx, byte [esi + 0xb]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x1b], bl
je 0x10037350
cmp ecx, 0x10
je 0x10037370
lea edx, [eax + 0xd]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov dword [esi + 0x20], edx
mov esi, dword [esp + 0x4c]
add edi, 0xd
sub ecx, 0xd
movzx ebx, byte [esi + 0xc]
mov esi, dword [esp + 0x48]
mov byte [eax + esi + 0x1c], bl
je 0x10037350
cmp edx, 0x10
je 0x10037360
add eax, 0xe
mov edi, dword [esp + 0x4c]
mov dword [esi + 0x20], eax
mov esi, dword [esp + 0x4c]
add edi, 0xe
movzx ecx, byte [esi + 0xd]
mov esi, dword [esp + 0x48]
mov byte [esi + edx + 0x10], cl
mov edx, dword [esp + 0x50]
sub edx, 0xe
je 0x10037350
cmp eax, 0xf
jne 0x10037370
mov eax, dword [esp + 0x4c]
mov dword [esi + 0x20], 0x10
sub dword [esp + 0x50], 0xf
lea edi, [eax + 0xf]
movzx eax, byte [eax + 0xe]
mov byte [esi + 0x1f], al
je 0x10037350
mov eax, dword [esp + 0x48]
mov ebp, 0x2745937f
mov dword [esp + 0x4c], edi
imul ebx, dword [eax + 0x14], 0x114253d5
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x20], 0
imul eax, ecx, 0x87c37b91
lea esi, [ebx + eax]
mov eax, ecx
mov ecx, 0x114253d5
mul ecx
mov ecx, eax
mov eax, dword [esp + 0x48]
mov ebx, edx
add ebx, esi
mov eax, dword [eax + 0x18]
mov edx, eax
mov eax, dword [esp + 0x48]
imul esi, dword [eax + 0x1c], 0x2745937f
imul eax, edx, 0x4cf5ad43
add esi, eax
mov eax, edx
mul ebp
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
mov edx, ebx
mov eax, ecx
add dword [esp + 0x24], esi
shld eax, ebx, 0x1f
shld edx, ecx, 0x1f
imul esi, edx, 0x2745937f
imul edx, eax, 0x4cf5ad43
add esi, edx
mul ebp
mov ebp, 5
mov ebx, edx
add ebx, esi
mov esi, dword [esp + 8]
xor esi, eax
mov eax, esi
mov esi, dword [esp + 0xc]
xor esi, ebx
mov ebx, dword [esp + 0x20]
mov edx, esi
mov esi, eax
shld eax, edx, 0x1b
shld edx, esi, 0x1b
add eax, dword [esp]
mov esi, dword [esp + 0x24]
adc edx, dword [esp + 4]
lea ecx, [edx + edx*4]
mul ebp
add edx, ecx
add eax, 0x52dce729
adc edx, 0
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov edx, ebx
shrd ebx, esi, 0x1f
shrd esi, edx, 0x1f
mov ecx, ebx
imul eax, ecx, 0x87c37b91
imul esi, esi, 0x114253d5
add esi, eax
mov eax, 0x114253d5
mul ecx
mov ebx, edx
add ebx, esi
mov esi, dword [esp]
xor esi, eax
mov eax, esi
mov esi, dword [esp + 4]
xor esi, ebx
mov edx, esi
mov esi, eax
shld eax, edx, 0x1f
shld edx, esi, 0x1f
add eax, dword [esp + 8]
adc edx, dword [esp + 0xc]
lea ecx, [edx + edx*4]
mul ebp
add edx, ecx
add eax, 0x38495ab5
adc edx, 0
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [esp + 0x50]
and eax, 0xfffffff0
add eax, dword [esp + 0x4c]
cmp dword [esp + 0x4c], eax
mov dword [esp + 0x2c], eax
jae 0x100372b5
mov ebp, dword [esp + 0x4c]
lea esi, [esi]
mov edi, dword [ebp]
imul esi, dword [ebp + 4], 0x114253d5
imul eax, edi, 0x87c37b91
add esi, eax
mov eax, edi
mov edi, 0x114253d5
mul edi
mov ebx, edx
mov ecx, eax
mov eax, dword [ebp + 8]
add ebx, esi
imul esi, dword [ebp + 0xc], 0x2745937f
imul edx, eax, 0x4cf5ad43
mov dword [esp + 0x20], eax
lea eax, [esi + edx]
mov esi, 0x2745937f
mov edi, eax
mov eax, dword [esp + 0x20]
mul esi
mov esi, dword [esp]
mov dword [esp + 0x20], eax
mov eax, ecx
mov dword [esp + 0x24], edx
shld ecx, ebx, 0x1f
shld ebx, eax, 0x1f
imul eax, ecx, 0x4cf5ad43
add dword [esp + 0x24], edi
imul ebx, ebx, 0x2745937f
add ebx, eax
mov eax, 0x2745937f
mul ecx
mov ecx, dword [esp + 8]
add edx, ebx
mov ebx, dword [esp + 0xc]
mov edi, ecx
xor edi, eax
mov eax, edx
mov ecx, 5
mov dword [esp + 0x18], edi
xor eax, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov edi, eax
shld eax, edx, 0x1b
shld edx, edi, 0x1b
add eax, dword [esp]
adc edx, dword [esp + 4]
lea ebx, [edx + edx*4]
mul ecx
add edx, ebx
add eax, 0x52dce729
adc edx, 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x24]
mov edi, eax
shrd eax, edx, 0x1f
shrd edx, edi, 0x1f
mov edi, 0x114253d5
imul ebx, edx, 0x114253d5
imul edx, eax, 0x87c37b91
add ebx, edx
mul edi
mov edi, dword [esp + 4]
add edx, ebx
mov ebx, esi
xor ebx, eax
mov dword [esp + 0x10], ebx
mov ebx, edx
mov eax, dword [esp + 0x10]
xor ebx, edi
mov dword [esp + 0x14], ebx
mov edx, dword [esp + 0x14]
mov edi, eax
shld eax, edx, 0x1f
shld edx, edi, 0x1f
add eax, dword [esp + 8]
adc edx, dword [esp + 0xc]
lea ebx, [edx + edx*4]
mul ecx
add edx, ebx
add eax, 0x38495ab5
adc edx, 0
mov dword [esp], eax
add ebp, 0x10
cmp dword [esp + 0x2c], ebp
mov dword [esp + 4], edx
ja 0x10037160
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x4c]
not eax
add eax, dword [esp + 0x2c]
and eax, 0xfffffff0
lea eax, [edi + eax + 0x10]
mov dword [esp + 0x4c], eax
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x50]
mov dword [edi], eax
mov eax, dword [esp]
mov dword [edi + 4], edx
mov edx, dword [esp + 4]
and ecx, 0xf
mov dword [edi + 8], eax
mov dword [edi + 0xc], edx
je 0x10037350
mov eax, edi
add eax, 0x10
cmp ecx, 4
jb 0x10037330
mov edi, dword [esp + 0x4c]
mov edx, dword [edi]
mov edi, dword [esp + 0x48]
mov dword [edi + 0x10], edx
mov edi, dword [esp + 0x4c]
mov edx, dword [edi + ecx - 4]
mov dword [eax + ecx - 4], edx
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x4c]
lea edx, [edi + 0x14]
and edx, 0xfffffffc
sub eax, edx
sub ebx, eax
add eax, ecx
and eax, 0xfffffffc
cmp eax, 4
jb 0x10037349
and eax, 0xfffffffc
xor esi, esi
mov edi, dword [ebx + esi]
mov dword [edx + esi], edi
add esi, 4
cmp esi, eax
jb 0x10037320
jmp 0x10037349
test ecx, ecx
je 0x10037349
mov edi, dword [esp + 0x4c]
movzx edx, byte [edi]
mov edi, dword [esp + 0x48]
mov byte [edi + 0x10], dl
test byte [esp + 0x50], 2
jne 0x10037382
mov eax, dword [esp + 0x48]
mov dword [eax + 0x20], ecx
add esp, 0x34
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x50], ecx
jmp 0x10037019
mov dword [esp + 0x50], edx
jmp 0x10037019
mov edi, dword [esp + 0x4c]
jmp 0x10037019
mov edi, dword [esp + 0x4c]
movzx edx, word [edi + ecx - 2]
mov word [eax + ecx - 2], dx
jmp 0x10037349