Function at 0x10083780
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x100b7e5b
mov eax, dword fs:[0]
push eax
sub esp, 0xe0
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0xd8], eax
push ebx
push esi
push edi
mov eax, dword [section..data]
xor eax, esp
push eax
lea eax, [esp + 0xf0]
mov dword fs:[0], eax
mov ebx, edx
mov edi, ecx
mov dword [esp + 0x34], edi
mov eax, dword [ebp + 8]
mov ecx, dword [ebx + 0x14]
mov esi, dword [ebp + 0x18]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x44], eax
test ecx, ecx
je 0x100837f6
mov edx, dword [ecx + 0x84]
jmp 0x100837f8
xor edx, edx
mov eax, dword [edx + 0xc]
sub eax, dword [edx + 8]
sar eax, 2
test ax, ax
je 0x10083f1a
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x84]
mov edx, dword [edi]
mov dword [esp + 0x20], edx
mov edi, dword [eax + 0x10]
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
sar eax, 2
test ax, ax
je 0x10083847
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
sar eax, 2
test eax, eax
je 0x1008383e
mov eax, dword [ecx + 8]
mov eax, dword [eax]
jmp 0x10083840
xor eax, eax
mov eax, dword [eax]
cmp edi, dword [eax + 0xc]
jb 0x10083869
push 1
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.10099ab0
test al, al
je 0x10083f1a
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
cmp edi, dword [ebx + 4]
jae 0x10083f1a
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 4]
cmp ecx, 0x2640
jb 0x10083f1a
lea eax, [edi + 0x1b0]
cmp ecx, eax
jbe 0x1008391c
add edx, 0x100
mov eax, 0x100
add edx, edi
movzx ecx, byte [edx + 1]
imul cx, ax
movzx eax, byte [edx]
add cx, ax
movzx eax, cx
mov ecx, 0x33ac
cmp ax, cx
jne 0x1008391c
push 0xb0
push edx
call fcn.1001cbb0
add esp, 8
cmp eax, 0xc99cba8e
jne 0x1008391c
mov edx, dword [esp + 0x20]
mov eax, 0x100
add edx, 0x2580
movzx ecx, byte [edx + 1]
imul cx, ax
movzx eax, byte [edx]
add cx, ax
movzx eax, cx
mov ecx, 0xe3c1
cmp ax, cx
jne 0x1008391c
push 0xb0
push edx
call fcn.1001cbb0
add esp, 8
cmp eax, 0x2c48276a
jne 0x1008391c
mov byte [esi], 1
mov eax, 1
jmp 0x10083f1c
mov ecx, dword [ebx + 0x14]
test ecx, ecx
je 0x1008392b
mov edx, dword [ecx + 0x84]
jmp 0x1008392d
xor edx, edx
mov eax, dword [edx + 0xc]
sub eax, dword [edx + 8]
sar eax, 2
dec eax
movzx eax, ax
mov dword [esp + 0x2c], eax
test ecx, ecx
je 0x1008394a
mov edx, dword [ecx + 0x84]
jmp 0x1008394c
xor edx, edx
movzx esi, ax
mov eax, dword [edx + 0xc]
sub eax, dword [edx + 8]
sar eax, 2
cmp esi, eax
jae 0x10083964
mov eax, dword [edx + 8]
mov eax, dword [eax + esi*4]
jmp 0x10083966
xor eax, eax
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x28], eax
test ecx, ecx
je 0x1008397b
mov edx, dword [ecx + 0x84]
jmp 0x1008397d
xor edx, edx
mov eax, dword [edx + 0xc]
sub eax, dword [edx + 8]
sar eax, 2
cmp esi, eax
jae 0x10083992
mov eax, dword [edx + 8]
mov eax, dword [eax + esi*4]
jmp 0x10083994
xor eax, eax
mov eax, dword [eax]
mov edx, dword [eax + 8]
test ecx, ecx
je 0x100839ac
mov al, byte [ecx + 0x88]
test al, al
je 0x100839ac
mov eax, dword [ecx + 0xc]
jmp 0x100839ae
xor eax, eax
cmp dword [esp + 0x28], 0x2000
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x24], eax
jb 0x10083f1a
cmp edx, 0x2000
jb 0x10083f1a
lea eax, [esp + 0x38]
mov ecx, ebx
push eax
lea eax, [esp + 0x4c]
push eax
push dword [esp + 0x34]
call fcn.10095250
test al, al
je 0x10083f1a
mov ecx, dword [ebx + 0x14]
test ecx, ecx
je 0x100839fb
mov ecx, dword [ecx + 0x84]
jmp 0x100839fd
xor ecx, ecx
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
sar eax, 2
cmp word [esp + 0x2c], ax
jae 0x10083f1a
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
sar eax, 2
cmp esi, eax
jae 0x10083a26
mov eax, dword [ecx + 8]
mov esi, dword [eax + esi*4]
jmp 0x10083a28
xor esi, esi
cmp byte [esi + 0x24], 0
mov eax, dword [esi]
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x38], ebx
jne 0x10083a3e
mov ecx, esi
call fcn.10097cc0
mov eax, dword [esi + 0x20]
add eax, ebx
cmp ebx, eax
ja 0x10083f1a
mov esi, dword [esp + 0x20]
cmp byte [esi + 4], 0
je 0x10083f1a
cmp byte [edi + esi], 0x56
jne 0x10083f1a
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0x5c]
push edi
mov byte [esp + 0x1a], 0
mov byte [esp + 0x19], 0
push dword [eax + 4]
mov byte [esp + 0x26], 0
push dword [eax]
mov byte [esp + 0x25], 0
mov byte [esp + 0x28], 0
mov byte [esp + 0x26], 0
mov byte [esp + 0x27], 0
mov byte [esp + 0x29], 0
mov byte [esp + 0x2b], 0
mov byte [esp + 0x23], 0
mov byte [esp + 0x24], 0
call fcn.1001d150
push edi
lea ecx, [esp + 0x60]
call fcn.1001d110
lea eax, [edi + 0x70]
mov dword [esp + 0x28], eax
cmp edi, eax
jae 0x10083f1a
mov ebx, dword [esp + 0x40]
lea ebx, [ebx]
lea edx, [esp + 0x2c]
lea ecx, [esp + 0x5c]
call fcn.100ae1f0
mov edx, eax
mov dword [esp + 0x3c], edx
test edx, edx
je 0x10083f1a
movzx ecx, byte [edi + esi]
add ecx, 0xffffffcd
cmp ecx, 0xaf
ja case.0x10083b05.52
movzx ecx, byte [ecx + 0x10083f6c]
jmp dword [ecx*4 + 0x10083f40]
lea ecx, [edi + 1]
add ecx, esi
call fcn.1001ca50
mov edx, dword [esp + 0x3c]
cmp eax, 0x60160000
jne 0x10083ee5
mov ecx, dword [esp + 0x44]
mov eax, dword [esi + edi + 1]
mov esi, dword [esp + 0x20]
mov dword [ecx], eax
mov ah, 1
mov cl, byte [esp + 0x17]
mov byte [esp + 0x16], ah
jmp 0x10083bae
mov cl, byte [esp + 0x17]
cmp edx, 5
jne 0x10083baa
mov eax, dword [edi + esi + 1]
mov ch, 1
mov dword [ebx], eax
mov al, byte [esp + 0x18]
mov ah, byte [esp + 0x16]
mov byte [esp + 0x15], ch
jmp 0x10083bb6
mov al, byte [edi + esi + 1]
cmp al, 0xc0
jne 0x10083b6b
mov byte [esp + 0x1e], 1
mov cl, byte [esp + 0x17]
cmp al, 0xc2
mov ah, byte [esp + 0x16]
mov ch, byte [esp + 0x15]
mov al, byte [esp + 0x18]
jne 0x10083bb6
mov byte [esp + 0x1b], 1
jmp 0x10083bb6
cmp edx, 5
jne 0x10083ba6
mov eax, dword [edi + esi + 1]
sub eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x30]
sub eax, dword [esp + 0x24]
add eax, dword [esp + 0x48]
mov byte [esp + 0x19], 1
mov dword [ecx], eax
mov cl, byte [esp + 0x17]
mov ah, byte [esp + 0x16]
mov al, byte [esp + 0x18]
mov ch, byte [esp + 0x15]
add edi, edx
cmp edi, dword [esp + 0x28]
jb 0x10083ad0
test al, al
je 0x10083f1a
test cl, cl
je 0x10083f1a
test ah, ah
je 0x10083f1a
test ch, ch
je 0x10083f1a
cmp byte [esp + 0x1e], 0
je 0x10083f1a
cmp byte [esp + 0x19], 0
je 0x10083f1a
cmp byte [esp + 0x1c], 0
je 0x10083f1a
cmp byte [esp + 0x1a], 0
je 0x10083f1a
cmp byte [esp + 0x1b], 0
je 0x10083f1a
cmp byte [esp + 0x1d], 0
je 0x10083f1a
cmp byte [esp + 0x1f], 0
je 0x10083f1a
push 0x28
lea ecx, [esp + 0x54]
call fcn.100940a0
mov dword [esp + 0xf8], 0
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov ecx, dword [eax]
lea eax, [ecx + 0xab]
cmp dword [edx + 4], eax
jb 0x10083f00
mov ebx, dword [esp + 0x50]
add ecx, 0xab
add esi, ecx
mov dword [esp + 0xc0], 0xfe
mov ecx, 0xa
mov dword [esp + 0xc4], 0x68e445c7
mov edi, ebx
mov dword [esp + 0xc8], 0xc7707474
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x40]
lea ecx, [ebx + 1]
mov dword [esp + 0xcc], 0x2f3ae845
mov edx, 8
mov dword [esp + 0xd0], 0x45c7772f
mov dword [esp + 0xd4], 0x2e7777ec
mov dword [esp + 0xd8], 0xf045c764
mov dword [esp + 0xdc], 0x6b696c65
mov dword [esp + 0xe0], 0x6ff445c7
mov dword [esp + 0xe4], 0xc7642e6e
lea ecx, [ecx]
mov al, byte [esi]
lea ecx, [ecx + 5]
xor byte [ecx - 6], al
mov al, byte [esi]
xor byte [ecx - 5], al
mov al, byte [esi]
xor byte [ecx - 4], al
mov al, byte [esi]
xor byte [ecx - 3], al
mov al, byte [esi]
xor byte [ecx - 2], al
dec edx
jne 0x10083cf0
lea eax, [esp + 0xc0]
sub ebx, eax
jmp 0x10083d20
lea ecx, [esp + 0xc0]
add ecx, edx
mov al, byte [ebx + ecx]
cmp al, byte [ecx]
jne 0x10083f00
inc edx
cmp edx, 0x28
jb 0x10083d20
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x4c]
mov eax, dword [eax]
mov edx, dword [eax + edx + 0x59]
mov eax, edx
shr eax, 8
movzx ecx, dl
and eax, 0xff
xor ecx, dword [esi]
mov dword [ebx], ecx
xor eax, dword [esi]
shl eax, 8
add ecx, eax
mov eax, edx
shr eax, 0x10
and eax, 0xff
mov dword [ebx], ecx
xor eax, dword [esi]
shl eax, 0x10
shr edx, 0x18
add eax, ecx
mov dword [ebx], eax
xor edx, dword [esi]
mov esi, 1
shl edx, 0x18
sub edx, dword [esp + 0x24]
add edx, eax
mov dword [ebx], edx
jmp 0x10083f02
cmp byte [edi + esi + 1], 0xfe
mov al, byte [esp + 0x18]
mov cl, byte [esp + 0x17]
mov ah, byte [esp + 0x16]
mov ch, byte [esp + 0x15]
jne 0x10083bb6
mov byte [esp + 0x1c], 1
jmp 0x10083bb6
mov cl, byte [esp + 0x17]
mov ah, byte [esp + 0x16]
mov ch, byte [esp + 0x15]
cmp edx, 1
jne 0x10083ef7
mov al, dl
mov byte [esp + 0x18], al
jmp 0x10083bb6
mov al, byte [esp + 0x18]
mov ah, byte [esp + 0x16]
mov ch, byte [esp + 0x15]
cmp edx, 1
jne 0x10083eee
mov cl, dl
mov byte [esp + 0x17], cl
jmp 0x10083bb6
mov al, byte [esp + 0x18]
mov cl, byte [esp + 0x17]
mov ah, byte [esp + 0x16]
mov ch, byte [esp + 0x15]
cmp edx, 1
jne 0x10083bb6
mov byte [esp + 0x1a], dl
jmp 0x10083bb6
mov al, byte [esp + 0x18]
mov cl, byte [esp + 0x17]
mov ah, byte [esp + 0x16]
mov ch, byte [esp + 0x15]
cmp edx, 1
jne 0x10083bb6
mov byte [esp + 0x1d], dl
jmp 0x10083bb6
mov al, byte [esp + 0x18]
mov cl, byte [esp + 0x17]
mov ah, byte [esp + 0x16]
mov ch, byte [esp + 0x15]
cmp edx, 2
jne 0x10083bb6
mov byte [esp + 0x1f], 1
jmp 0x10083bb6
mov al, byte [esp + 0x18]
mov cl, byte [esp + 0x17]
mov ah, byte [esp + 0x16]
test al, al
je 0x10083bb2
test cl, cl
je 0x10083bb2
test ah, ah
je 0x10083bb2
mov ch, byte [esp + 0x15]
test ch, ch
je 0x10083bb6
cmp byte [esp + 0x1e], 0
je 0x10083bb6
cmp byte [esp + 0x19], 0
je 0x10083bb6
cmp byte [esp + 0x1c], 0
je 0x10083bb6
cmp byte [esp + 0x1a], 0
je 0x10083bb6
cmp byte [esp + 0x1b], 0
je 0x10083bb6
cmp byte [esp + 0x1d], 0
je 0x10083bb6
cmp byte [esp + 0x1f], 0
je 0x10083bb6
mov edi, dword [esp + 0x28]
jmp 0x10083bb6
mov esi, dword [esp + 0x20]
jmp 0x10083ba6
mov cl, byte [esp + 0x17]
jmp 0x10083bb6
mov al, byte [esp + 0x18]
jmp 0x10083bb6
xor esi, esi
mov dword [esp + 0xf8], 0xffffffff
lea ecx, [esp + 0x50]
call fcn.100941a0
mov eax, esi
jmp 0x10083f1c
xor eax, eax
mov ecx, dword [esp + 0xf0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd8]
xor ecx, esp
call fcn.100b37df
mov esp, ebp
pop ebp
ret