Function at 0x1c4310
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x178
mov eax, dword [0x1d5c8c]
mov ecx, dword [0x1d5c90]
mov edx, dword [0x1d5c94]
mov dword [esp + 4], eax
cmp byte [esp + 4], 0
mov al, byte [0x1d5c98]
mov byte [esp + 0x10], al
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
lea eax, [esp + 4]
je 0x1c435b
mov ecx, eax
lea esp, [esp]
xor byte [eax], 0xf
inc ecx
cmp byte [ecx], 0
mov eax, ecx
jne 0x1c4350
push ebx
mov ebx, dword [0x1d4060]
push ebp
push esi
push edi
lea ecx, [esp + 0x14]
push ecx
call ebx
mov edx, dword [0x1d5fcc]
mov ecx, dword [0x1d5fd0]
mov dword [esp + 0x14], edx
cmp byte [esp + 0x14], 0
mov edx, dword [0x1d5fd4]
mov dword [esp + 0x18], ecx
mov ecx, dword [0x1d5fd8]
mov dword [esp + 0x1c], edx
mov dl, byte [0x1d5fdc]
mov dword [esp + 0x20], ecx
mov ebp, 0x20141104
mov dword [esp + 0x10], 0x100
mov byte [esp + 0x24], dl
lea ecx, [esp + 0x14]
je 0x1c43c3
mov edx, ecx
xor byte [ecx], 0xf
inc edx
cmp byte [edx], 0
mov ecx, edx
jne 0x1c43b8
mov edi, dword [fcn.001d4058]
lea ecx, [esp + 0x14]
push ecx
push eax
call edi
mov edx, dword [0x1d5fe0]
mov ecx, dword [0x1d5fe8]
mov esi, eax
mov eax, dword [0x1d5fe4]
mov dword [esp + 0x14], edx
cmp byte [esp + 0x14], 0
mov dl, byte [0x1d5fec]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x20], dl
lea eax, [esp + 0x14]
je 0x1c4412
mov ecx, eax
xor byte [eax], 0xf
inc ecx
cmp byte [ecx], 0
mov eax, ecx
jne 0x1c4407
lea eax, [esp + 0x14]
push eax
call ebx
mov ecx, dword [0x1d5ff0]
mov edx, dword [0x1d5ff4]
mov dword [esp + 0x14], ecx
cmp byte [esp + 0x14], 0
mov ecx, dword [0x1d5ff8]
mov dword [esp + 0x18], edx
mov edx, dword [0x1d5ffc]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
lea ecx, [esp + 0x14]
je 0x1c445b
mov edx, ecx
mov edi, edi
xor byte [ecx], 0xf
inc edx
cmp byte [edx], 0
mov ecx, edx
jne 0x1c4450
lea ecx, [esp + 0x14]
push ecx
push eax
call edi
mov edi, eax
test esi, esi
je 0x1c4611
test edi, edi
je 0x1c4611
lea edx, [esp + 0x10]
push edx
lea eax, [esp + 0x8c]
push eax
call esi
push 0x288
mov dword [esp + 0x14], 0x288
call fcn.001c72aa
mov esi, eax
add esp, 4
test esi, esi
je 0x1c4611
lea ecx, [esp + 0x10]
push ecx
push esi
call edi
mov edx, dword [esp + 0x10]
push edx
push esi
call fcn.001c780d
mov esi, eax
add esp, 8
lea eax, [esp + 0x10]
push eax
push esi
mov ebx, esi
call edi
test eax, eax
jne 0x1c4611
test esi, esi
je 0x1c45ac
xor edi, edi
cmp dword [esi + 0x190], edi
jbe 0x1c4551
nop
lea eax, [esp + 0x88]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1c44f0
sub eax, edx
cmp eax, 0xe6
ja 0x1c4551
lea eax, [esp + 0x88]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1c4510
movzx ecx, byte [esi + edi + 0x194]
push ecx
sub eax, edx
lea edx, [esp + eax + 0x8c]
push 0x1d6000
push edx
call fcn.001c6dfd
mov al, byte [esi + edi + 0x194]
add esp, 0xc
test al, al
je 0x1c4548
movzx eax, al
imul ebp, eax
inc edi
cmp edi, dword [esi + 0x190]
jb 0x1c44e0
lea eax, [esp + 0x88]
lea edx, [eax + 1]
jmp 0x1c4560
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1c4560
sub eax, edx
cmp eax, 0xe6
ja 0x1c45ac
lea eax, [esp + 0x88]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1c4580
lea ecx, [esi + 8]
push ecx
sub eax, edx
lea edx, [esp + eax + 0x8c]
push 0x1d6008
push edx
call fcn.001c6dfd
mov esi, dword [esi]
add esp, 0xc
test esi, esi
jne 0x1c44d5
push ebx
call fcn.001c71cd
lea eax, [esp + 0x8c]
add esp, 4
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1c45c0
sub eax, edx
mov ecx, eax
lea eax, [esp + 0x78]
push eax
mov eax, ebp
lea edi, [esp + 0x8c]
call fcn.001c4280
add esp, 4
lea eax, [esp + 0x78]
call fcn.001c1c80
xor edi, edi
mov esi, 0x1d9ff8
movzx ecx, byte [esp + edi + 0x78]
push ecx
push 0x1d6000
push esi
call fcn.001c6dfd
add esi, 2
add esp, 0xc
inc edi
cmp esi, 0x1da018
jl 0x1c45f1
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x178
ret