Function at 0x4c3730
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x62b0b3
mov eax, dword fs:[0]
push eax
sub esp, 0x100
mov eax, dword [0x717f80]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
test edi, edi
je 0x4c3a15
xor esi, esi
lea ebx, [ebp - 0x11]
test eax, eax
cmovne esi, dword [ebp + 0xc]
cmovne ebx, eax
mov eax, dword [ebp + 0x10]
cmp eax, 1
je 0x4c3a0a
cmp eax, 5
jne 0x4c37b2
lea ecx, [ebp - 0x70]
call fcn.0051fdf0
push edi
push esi
push ebx
lea ecx, [ebp - 0x70]
mov dword [ebp - 4], 0
call fcn.00520600
lea ecx, [ebp - 0x70]
call fcn.0051fe30
jmp 0x4c3a15
cmp eax, 7
jne 0x4c37c4
push edi
push esi
push ebx
call fcn.005474b0
jmp 0x4c3a12
cmp eax, 2
jne 0x4c37d6
push edi
push esi
push ebx
call fcn.00547bc0
jmp 0x4c3a12
cmp eax, 3
jne 0x4c37e8
push edi
push esi
push ebx
call fcn.005482d0
jmp 0x4c3a12
cmp eax, 0x14
jne 0x4c37fa
push edi
push esi
push ebx
call fcn.005534e0
jmp 0x4c3a12
cmp eax, 0x15
jne 0x4c380c
push edi
push esi
push ebx
call fcn.005535f0
jmp 0x4c3a12
cmp eax, 0x16
jne 0x4c381e
push edi
push esi
push ebx
call fcn.00553700
jmp 0x4c3a12
cmp eax, 0x13
jne 0x4c3830
push edi
push esi
push ebx
call fcn.005533d0
jmp 0x4c3a12
cmp eax, 0xf
je 0x4c3a0a
cmp eax, 0x1d
jne 0x4c3861
xor al, al
xor edx, edx
test esi, esi
je 0x4c385a
movzx ecx, byte [ebx + edx]
inc edx
movzx eax, al
xor ecx, eax
mov al, byte [ecx + 0x714ca0]
cmp edx, esi
jb 0x4c3846
mov byte [edi], al
jmp 0x4c3a15
cmp eax, 0x1c
jne 0x4c38b6
push 0
push esi
push ebx
call fcn.005388c0
mov ecx, eax
mov edx, eax
mov esi, eax
shr ecx, 0x18
add esp, 0xc
shr edx, 0x10
shr esi, 8
cmp byte [0x70acd0], 0
je 0x4c389e
mov ebx, eax
mov byte [edi], cl
mov eax, esi
mov byte [edi + 1], dl
mov byte [edi + 2], al
mov byte [edi + 3], bl
jmp 0x4c3a15
mov ebx, ecx
mov ecx, eax
mov eax, edx
mov byte [edi], cl
mov edx, esi
mov byte [edi + 1], dl
mov byte [edi + 2], al
mov byte [edi + 3], bl
jmp 0x4c3a15
cmp eax, 4
jne 0x4c38e2
lea ecx, [ebp - 0x6c]
call fcn.0053fec0
push edi
push esi
push ebx
lea ecx, [ebp - 0x6c]
mov dword [ebp - 4], 1
call fcn.005402f0
lea ecx, [ebp - 0x6c]
call fcn.0053fed0
jmp 0x4c3a15
cmp eax, 8
jne 0x4c391e
lea ecx, [ebp - 0x70]
call fcn.005457e0
lea ecx, [ebp - 0x70]
mov dword [ebp - 4], 2
call fcn.00520a10
push esi
push ebx
lea ecx, [ebp - 0x70]
call fcn.005461c0
push edi
lea ecx, [ebp - 0x70]
call fcn.005459a0
lea ecx, [ebp - 0x70]
call fcn.00545820
jmp 0x4c3a15
cmp eax, 0x1e
jne 0x4c3930
push edi
push esi
push ebx
call fcn.00546ea0
jmp 0x4c3a12
cmp eax, 9
jne 0x4c395c
lea ecx, [ebp - 0x7c]
call fcn.00540430
push edi
push esi
push ebx
lea ecx, [ebp - 0x7c]
mov dword [ebp - 4], 3
call fcn.00541490
lea ecx, [ebp - 0x7c]
call fcn.00540450
jmp 0x4c3a15
cmp eax, 0xa
jne 0x4c3988
lea ecx, [ebp - 0x7c]
call fcn.005414f0
push edi
push esi
push ebx
lea ecx, [ebp - 0x7c]
mov dword [ebp - 4], 4
call fcn.00542c80
lea ecx, [ebp - 0x7c]
call fcn.00541510
jmp 0x4c3a15
cmp eax, 0xb
jne 0x4c39ba
lea ecx, [ebp - 0x8c]
call fcn.00542ce0
push edi
push esi
push ebx
lea ecx, [ebp - 0x8c]
mov dword [ebp - 4], 5
call fcn.00543e60
lea ecx, [ebp - 0x8c]
call fcn.00542d00
jmp 0x4c3a15
cmp eax, 0xc
jne 0x4c39ec
lea ecx, [ebp - 0x10c]
call fcn.00543ed0
push edi
push esi
push ebx
lea ecx, [ebp - 0x10c]
mov dword [ebp - 4], 6
call fcn.005457b0
lea ecx, [ebp - 0x10c]
call fcn.00543ef0
jmp 0x4c3a15
cmp eax, 0x11
jne 0x4c39fb
push edi
push esi
push ebx
call fcn.005484e0
jmp 0x4c3a12
cmp eax, 0x12
jne 0x4c3a0a
push edi
push esi
push ebx
call fcn.005485e0
jmp 0x4c3a12
push edi
push esi
push ebx
call fcn.0053faf0
add esp, 0xc
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00622073
mov esp, ebp
pop ebp
ret