Function at 0x180bd4b5
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x9c
mov eax, dword [0x18195008]
xor eax, esp
mov dword [esp + 0x98], eax
mov eax, dword [edx]
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x10], edx
push edi
lea ecx, [esp + 0x20]
push ecx
mov ecx, edx
call dword [eax + 0x50]
xor ebx, ebx
mov ecx, esi
mov edi, ebx
mov eax, dword [eax + 4]
mov dword [esp + 0x18], eax
call fcn.180b1900
test al, al
je 0x180bd5fe
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b611a
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0x24]
cmp eax, 1
je 0x180bd5fe
mov ebx, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push esi
push ebx
call fcn.180b1a6b
push esi
push ebx
lea ecx, [esp + 0x78]
call fcn.180b1a6b
mov ecx, esi
call fcn.180dccc0
mov ecx, esi
mov eax, dword [eax + 0x14]
mov dword [esp + 0x14], eax
call fcn.180dccc0
mov ebx, dword [esp + 0x1c]
lea ecx, [esp + 0x28]
push ecx
mov ecx, ebx
mov eax, dword [eax + 0x14]
add eax, 0x58
mov dword [esp + 0x1c], eax
mov eax, dword [ebx]
call dword [eax + 0x14]
mov eax, dword [ebx]
lea ecx, [esp + 0x70]
push ecx
mov ecx, ebx
call dword [eax + 0x18]
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x70]
push edx
lea edx, [esp + 0x2c]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
test al, al
jne 0x180bd5e7
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x30]
call fcn.180bd195
lea edx, [esp + 0x50]
mov ecx, ebx
lea esi, [eax + 2]
call fcn.180bd315
add esi, eax
mov ecx, dword [esp + 0x2c]
mov eax, esi
lea edx, [esp + 0x28]
or eax, 1
bsr eax, eax
push edx
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add eax, esi
add edi, eax
mov eax, dword [ecx]
call dword [eax + 0x44]
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x70]
push edx
lea edx, [esp + 0x2c]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
test al, al
je 0x180bd58e
lea ecx, [esp + 0x70]
call fcn.180b1b61
lea ecx, [esp + 0x28]
call fcn.180b1b61
jmp case.default.0x180bd652
cmp dword [esi + 0x20], 3
mov dword [esp + 0x10], ebx
jne 0x180bd61c
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b303b
mov dword [esp + 0x10], eax
jmp 0x180bd641
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x10]
cmp byte [eax + 0x2f], bl
jne 0x180bd639
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b2fb3
test al, al
je 0x180bd641
mov dword [esp + 0x10], 1
mov ecx, esi
call fcn.180b18d4
dec eax
cmp eax, 0x11
ja case.default.0x180bd652
jmp dword [eax*4 + 0x180bd9ed]
cmp dword [esi + 0x20], 3
jne 0x180bd68d
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b376b
mov ecx, eax
call fcn.1804c251
add edi, eax
inc ebx
cmp ebx, dword [esp + 0x10]
jb 0x180bd669
jmp case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b3634
mov ecx, eax
call fcn.1804c251
mov edi, eax
jmp case.default.0x180bd652
cmp dword [esi + 0x20], 3
jne 0x180bd6df
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b39fc
push edx
push eax
call fcn.1804c049
add edi, eax
inc ebx
pop ecx
pop ecx
cmp ebx, dword [esp + 0x10]
jb 0x180bd6b9
jmp case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b38af
push edx
push eax
call fcn.1804c049
pop ecx
pop ecx
jmp 0x180bd6a2
cmp dword [esi + 0x20], 3
jne 0x180bd73d
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b376b
mov ecx, eax
add eax, eax
sar ecx, 0x1f
xor ecx, eax
or ecx, 1
bsr eax, ecx
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add edi, eax
inc ebx
cmp ebx, dword [esp + 0x10]
jb 0x180bd708
jmp case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b3634
mov ecx, eax
add eax, eax
sar ecx, 0x1f
xor ecx, eax
or ecx, 1
bsr eax, ecx
imul edi, eax, 9
add edi, 0x49
shr edi, 6
jmp case.default.0x180bd652
cmp dword [esi + 0x20], 3
jne 0x180bd79e
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b39fc
push edx
push eax
call fcn.180b935a
add edi, eax
inc ebx
pop ecx
pop ecx
cmp ebx, dword [esp + 0x10]
jb 0x180bd778
jmp case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b38af
push edx
push eax
call fcn.180b935a
jmp 0x180bd6f4
cmp dword [esi + 0x20], 3
jne 0x180bd7f4
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b3c80
or eax, 1
bsr eax, eax
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add edi, eax
inc ebx
cmp ebx, dword [esp + 0x10]
jb 0x180bd7c8
jmp case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b3b49
or eax, 1
bsr eax, eax
jmp 0x180bd75a
cmp dword [esi + 0x20], 3
jne 0x180bd843
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b3f11
push edx
push eax
call fcn.1804c049
add edi, eax
inc ebx
pop ecx
pop ecx
cmp ebx, dword [esp + 0x10]
jb 0x180bd81d
jmp case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b3dc4
jmp 0x180bd6ed
mov edi, dword [esp + 0x10]
shl edi, 2
jmp case.default.0x180bd652
mov edi, dword [esp + 0x10]
shl edi, 3
jmp case.default.0x180bd652
mov edi, dword [esp + 0x10]
jmp case.default.0x180bd652
cmp dword [esi + 0x20], 3
jne 0x180bd8ab
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b55fa
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x28]
add edi, eax
inc ebx
cmp ebx, dword [esp + 0x10]
jb 0x180bd887
jmp case.default.0x180bd652
push ecx
mov ecx, dword [esp + 0x1c]
push esi
push dword [esp + 0x1c]
call fcn.180b5123
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x28]
jmp 0x180bd6a2
cmp dword [esi + 0x20], 3
jne 0x180bd8fa
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b55fa
mov ecx, eax
call fcn.180bdf1b
add edi, eax
inc ebx
cmp ebx, dword [esp + 0x10]
jb 0x180bd8d6
jmp case.default.0x180bd652
push ecx
mov ecx, dword [esp + 0x1c]
push esi
push dword [esp + 0x1c]
call fcn.180b5123
mov ecx, eax
call fcn.180bdf1b
jmp 0x180bd6a2
cmp dword [esi + 0x20], 3
jne 0x180bd94a
cmp dword [esp + 0x10], ebx
jbe case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push ebx
push esi
push dword [esp + 0x1c]
call fcn.180b4f1d
mov ecx, dword [eax + 8]
call fcn.1804c251
add edi, eax
inc ebx
cmp ebx, dword [esp + 0x10]
jb 0x180bd925
jmp case.default.0x180bd652
mov ecx, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
call fcn.180b4d1c
mov ecx, dword [eax + 8]
call fcn.1804c251
jmp 0x180bd6a2
mov eax, ebx
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x10], eax
jbe case.default.0x180bd652
cmp dword [esi + 0x20], 3
push ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], 0xf
mov byte [esp + 0x5c], bl
jne 0x180bd999
push eax
push esi
push dword [esp + 0x20]
call fcn.180b4b9b
jmp 0x180bd9a3
push esi
push dword [esp + 0x1c]
call fcn.180b48bb
mov ecx, eax
mov eax, dword [ecx + 0x10]
or eax, 1
bsr eax, eax
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add eax, dword [ecx + 0x10]
lea ecx, [esp + 0x58]
add edi, eax
call fcn.1800ce55
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
cmp eax, dword [esp + 0x10]
jb 0x180bd971
mov ecx, dword [esp + 0xa4]
mov eax, edi
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.18120ca0
mov esp, ebp
pop ebp
ret