Function at 0x10001630
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov eax, dword [esp + 0x14]
push esi
mov esi, dword [esp + 0x10]
add eax, 0xffffbcd0
push 0x43b5
push 0x3af2
push 0x3712
mov ecx, dword [esi + 0x174]
push 0x3a26
push esi
add dword [ecx + 0x38], eax
mov eax, dword [esi + 0x174]
mov eax, dword [eax + 0xc]
sub eax, 0x4231
mov dword [esp + 0x2c], eax
call fcn.10001a10
mov dword [esi + 0x230], eax
add esp, 0x14
mov eax, dword [esi + 4]
mov eax, dword [eax + 0xc]
xor eax, 0x7fb4
cmp eax, dword [esi + 0x120]
ja 0x100016a2
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x158]
or dword [esi + 0x7c], eax
dec dword [ecx + 0x158]
mov edx, dword [esi + 0x224]
mov eax, dword [esi + 0x230]
mov dword [esp + 0x10], eax
cmp edx, 0x1fa00
jge 0x100016c9
mov ecx, dword [esi + 0x228]
mov byte [edx + ecx], al
inc dword [esi + 0x224]
mov eax, dword [esi + 0x1cc]
cmp eax, dword [esi + 0x104]
jae 0x100016e8
mov eax, dword [esi + 0x98]
or eax, 0x3708
add dword [esi + 0x188], eax
push 0x3c04
push 0x41cf
push 0x3bbb
push 0x3712
push esi
call fcn.10001a10
add esp, 0x14
mov dword [esi + 0x22c], eax
cmp eax, 0xffff
je 0x100019ed
mov edx, dword [esp + 0x14]
lea ecx, [esi + 0x1e8]
push ebx
push ebp
add edx, 0x410b
lea ebx, [esi + 0x14]
push edi
movzx edi, word [esp + 0x18]
mov dword [esp + 0x10], edx
mov ebp, dword [esi + 0x174]
mov eax, dword [ebp + 0x7c]
add eax, edi
mov dword [esi + 0x154], edx
or eax, dword [ebx]
add eax, ecx
mov dword [ebx], eax
mov eax, dword [esp + 0x24]
cmp dword [esi + 0x22c], eax
jb 0x100017ba
mov eax, dword [ebx]
or dword [esi + 0x1a4], eax
dec dword [ebx]
mov eax, dword [esi + 0x218]
mov ecx, dword [esp + 0x1c]
push 0x3bbb
push 0x3e1a
mov byte [eax], cl
mov eax, dword [esi + 0x174]
push esi
push 0x410b
push 0x4396
imul eax, dword [eax + 0x94], 0x8fe8739
push 0x3e1a
add eax, dword [esi + 0x218]
mov dword [esi + 0x234], eax
mov eax, dword [esi + 0x230]
mov dword [esi + 0x238], eax
call fcn.10011e30
jmp 0x1000186f
mov ebx, dword [esi + 4]
mov edx, 0x4396
mov eax, dword [ebx + 0xa0]
xor eax, 0x7bef
cmp eax, edx
jbe 0x100017fb
mov edi, dword [esi + 0xf4]
movzx eax, word [esp + 0x18]
mov ecx, dword [esi + 0x20]
xor edi, eax
sub ecx, edi
inc edx
mov dword [esi + 0x20], ecx
mov eax, dword [ebx + 0xa0]
xor eax, 0x7bef
cmp edx, eax
jb 0x100017e1
movzx edi, word [esp + 0x18]
imul eax, dword [esi + 0x1a4], 0x3bbb
add dword [ebp + 0x78], eax
mov eax, dword [esi + 0x218]
mov dword [esi + 0x234], eax
mov eax, dword [esi + 0x22c]
mov dword [esi + 0x238], eax
mov eax, dword [esi + 4]
mov eax, dword [eax + 0xc]
xor eax, 0x788a
cmp eax, 0x3bbb
jne 0x1000183d
mov eax, dword [esi + 0x48]
sub eax, edi
mov dword [esi + 0x1cc], eax
mov eax, dword [esi + 0x1cc]
push 0x3e2e
push 0x3712
push esi
push 0x3af2
mov dword [esi + 0x50], eax
dec eax
push 0x4396
push 0x3c04
mov dword [esi + 0x1cc], eax
call fcn.10011e30
lea ebx, [esi + 0x14]
mov edx, eax
add esp, 0x18
movzx eax, byte [edx]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x28]
imul eax, dword [eax + 0xc], 0x92a409f2
cmp dword [esi + 0x184], eax
ja 0x1000189c
mov ecx, dword [esi + 8]
imul eax, edi, 0x41cf
add dword [ecx + 0x164], eax
cmp edx, dword [esi + 0x218]
jb 0x100018d8
nop dword [eax]
nop dword [eax + eax]
mov edi, dword [esi + 0x224]
cmp edi, 0x1fa00
jge 0x100018cf
mov ecx, dword [esi + 0x228]
mov al, byte [edx]
mov byte [edi + ecx], al
inc dword [esi + 0x224]
dec edx
cmp edx, dword [esi + 0x218]
jae 0x100018b0
mov eax, dword [esi + 0x174]
mov edx, dword [esp + 0x24]
movzx edi, word [esp + 0x18]
mov eax, dword [eax + 0xc]
xor eax, 0xbccf
cmp edx, eax
ja 0x10001936
mov ecx, dword [esi + 0x210]
mov eax, dword [esi + 0x230]
mov dword [ecx + edx*4], eax
mov eax, dword [esi + 0x98]
mov ecx, dword [esp + 0x1c]
add eax, edi
imul eax, dword [esi + 0x1a4]
mov dword [esi + 0x1a4], eax
mov eax, dword [esi + 0x70]
xor dword [esi + 0x1f8], eax
dec eax
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x214]
mov byte [edx + eax], cl
inc edx
mov dword [esp + 0x24], edx
mov eax, dword [esi + 0x24]
or eax, 0x3e2e
mov dword [esi + 0xdc], eax
mov eax, dword [esi + 0x174]
imul ecx, dword [eax + 0xa0], 0x22e256f3
cmp ecx, 0x40dc
jge 0x1000197b
mov edx, dword [esi + 0x1cc]
mov eax, 0x40dc
or edx, edi
sub eax, ecx
nop dword [eax + eax]
sub eax, 1
jne 0x10001970
mov dword [esi + 0x114], edx
mov ecx, dword [esi + 0xc]
add ecx, 0xfffffafd
cmp ecx, 0x3e2e
jbe 0x100019a0
mov eax, dword [ebx]
lea edx, [esi + 0x58]
add ecx, 0xffffc1d2
or eax, edx
sub ecx, 1
jne 0x10001997
mov dword [ebx], eax
mov eax, dword [esi + 0x22c]
push 0x3c04
push 0x41cf
push 0x3bbb
push 0x3712
mov dword [esi + 0x230], eax
xor dword [esi + 0x18c], ebx
push esi
call fcn.10001a10
mov edx, dword [esp + 0x24]
lea ecx, [esi + 0x1e8]
add esp, 0x14
mov dword [esi + 0x22c], eax
cmp eax, 0xffff
jne 0x10001735
pop edi
pop ebp
pop ebx
mov eax, dword [esi + 0x184]
add eax, 0x33b
cmp eax, 0x3c85
jae 0x10001a06
xor dword [esi + 0x58], 0xebb3e82
pop esi
pop ecx
ret