Function at 0x413f5b
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
add eax, 0xffffeac4
mov ecx, dword [esp + 8]
add edx, 0xfffffe26
push ebx
push ebp
push edi
mov edi, dword [esp + 0x1c]
lea ebx, [ecx - 0x1b8e]
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
lea ebp, [edi - 0x1c14]
xor edi, 0x1c14
mov eax, ebp
xor eax, 0x1b30
cmp ebx, eax
je 0x414308
cmp ebp, ecx
jg 0x414308
lea eax, [ecx - 0x5a1]
push esi
cmp edi, eax
jg 0x414273
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x68]
cmp eax, dword [esi + 0x118]
jbe 0x413fe3
mov eax, dword [0x4a67bc]
mov ecx, dword [eax + 0x78]
sub ecx, dword [eax + 0x118]
add ecx, 0x161598
mov dword [esi + 0x80], ecx
mov eax, dword [0x4a67bc]
xor ebx, 0x163f
add ebx, 0x579
mov ecx, dword [eax + 0x68]
mov eax, dword [0x4bca70]
add ecx, dword [esi + 0xc4]
add eax, 0xf82a4
add eax, ecx
mov dword [0x4bca70], eax
mov eax, edx
xor eax, 0xe2d
push eax
push 0x4bc9f0
push ebx
lea eax, [edx + 0x58d]
push eax
push edx
call fcn.004057c6
mov ecx, dword [0x4a67bc]
add esp, 0x14
mov ebp, eax
mov ecx, dword [ecx + 0x48]
cmp ecx, dword [esi + 0x110]
jb 0x414059
mov ecx, dword [0x4bcad8]
xor ecx, dword [0x4bca60]
xor ecx, 0x27f51
mov dword [0x4bca60], ecx
jmp 0x41406d
mov eax, dword [esi + 0x124]
add eax, dword [esi + 0x20]
xor eax, 0x1a0cd00e
mov dword [esi + 0x80], eax
xor edi, edi
mov dword [0x4bcaa4], 0x4a67c0
mov dword [esp + 0x1c], edi
mov eax, dword [esi + 0xb4]
mov ecx, dword [0x4a67bc]
mov edx, dword [edi + eax]
add edi, 4
mov eax, dword [esi + 0x20]
inc eax
imul eax, dword [ecx + 0x118]
mov dword [ecx + 0x118], eax
mov eax, dword [0x4bcb08]
mov ebx, dword [esi + 0x80]
add eax, 0xffe9f39d
imul eax, dword [esi + 0xc4]
imul ebx, edx
mov dword [esi + 0xc4], eax
mov eax, dword [0x4a67bc]
mov edx, ebx
shr edx, 0x10
mov ecx, dword [eax + 0x84]
mov eax, dword [esi + 0xb8]
mov byte [ecx + eax], dl
mov edx, ebx
mov eax, dword [0x4a67bc]
shr edx, 8
inc dword [eax + 0x84]
mov eax, dword [0x4a67bc]
mov ecx, dword [eax + 0x84]
mov eax, dword [esi + 0xb8]
mov byte [ecx + eax], dl
mov eax, dword [0x4a67bc]
inc dword [eax + 0x84]
mov ecx, dword [esi + 0x84]
mov eax, dword [esi + 0xb8]
mov byte [ecx + eax], bl
inc dword [esi + 0x84]
mov eax, dword [esi + 0xac]
xor eax, 0x48
or dword [esi + 0x7c], eax
mov eax, dword [0x4bcae4]
add eax, 0x194c18
or dword [esi + 8], eax
mov eax, 0xfff09a7f
mov ecx, dword [0x4a67bc]
sub eax, dword [ecx + 0x68]
add dword [ecx + 0x124], eax
mov eax, dword [esi + 0x110]
xor eax, 0x30
add dword [esi + 0xd8], eax
cmp edi, 0xf80
jl 0x41407d
mov ecx, dword [0x4a67bc]
mov eax, 0x4bc9f0
mov edi, dword [esp + 0x1c]
cmp dword [ecx + 0x124], 0x17f5c
cmovb eax, dword [0x4bcaf0]
mov dword [0x4bcaf0], eax
mov eax, dword [ecx + 0x10c]
sub dword [esi + 0x44], eax
mov eax, dword [esi + 0x98]
add eax, 0x190e11
xor dword [0x4bca0c], eax
mov eax, dword [0x4a67bc]
push 0x12
mov ecx, dword [eax + 0x1c]
xor ecx, dword [0x4bca10]
pop eax
sub eax, ecx
add dword [0x4bcacc], eax
mov eax, dword [esi + 0xe0]
inc eax
imul eax, dword [esi + 0x124]
mov dword [esi + 0x124], eax
mov eax, dword [esi + 0xcc]
mov ecx, dword [edi + eax]
mov eax, dword [0x4a67bc]
xor ecx, dword [esi + 0xa4]
mov eax, dword [eax + 0xcc]
mov dword [edi + eax], ecx
add edi, 4
mov eax, dword [esi + 0x7c]
xor eax, dword [0x4bca0c]
xor eax, 0x18c92d
or dword [esi + 0x90], eax
mov ecx, dword [0x4a67bc]
mov eax, dword [esi + 0x7c]
sub eax, 0x18c93e
imul eax, dword [ecx + 0x1c]
mov dword [ecx + 0x1c], eax
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 0xd0]
add dword [esi + 0xa4], eax
cmp edi, 0x3118c
jge 0x41423e
mov ecx, dword [0x4a67bc]
jmp 0x41418a
mov eax, dword [0x4bcabc]
push dword [esi + 0x134]
mov dword [esi + 0xb0], eax
mov eax, dword [esi + 0x11c]
add eax, dword [esi + 0xb8]
push eax
push dword [esi + 0x100]
call dword [esi + 0xb0]
mov dword [esi + 0xf0], eax
jmp 0x414307
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x78]
or eax, edi
or eax, 0x153c
push eax
call dword [sym.imp.KERNEL32.dll_ConvertThreadToFiber]
or edi, dword [esp + 0x10]
mov eax, dword [0x4a67bc]
add ebp, edi
mov edi, dword [esp + 0x18]
add edi, 0x86
mov eax, dword [eax + 0xfc]
or eax, dword [esi + 0x68]
xor edi, eax
mov eax, dword [esi + 0x14]
imul eax, dword [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [edi - 0x18ea]
push eax
mov eax, dword [0x4bca6c]
sub eax, edi
sub eax, 0x153c
push eax
push esi
lea eax, [ebx - 0x15ed]
push eax
mov eax, dword [esi + 0x110]
or eax, ebx
sub eax, dword [esi + 0x7c]
push eax
mov eax, ebp
xor eax, edi
push eax
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 0xd8]
or eax, 0x1c14
sub eax, dword [esp + 0x34]
push eax
call fcn.0041377b
add esp, 0x1c
pop esi
pop edi
lea eax, [ebp + 0x346]
pop ebp
pop ebx
pop ecx
ret