Function at 0x10019ec0
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
mov eax, 0x404c
call fcn.10024c50
mov eax, dword [0x10056b88]
xor eax, esp
mov dword [esp + 0x4048], eax
push ebx
push ebp
mov ebp, dword [esp + 0x4058]
push esi
mov esi, dword [esp + 0x4064]
push edi
mov edi, dword [esp + 0x4070]
push 0x401e
lea eax, [esp + 0x3d]
push 0
push eax
mov dword [esp + 0x20], esi
mov byte [esp + 0x44], 0
call fcn.10024c80
xor eax, eax
add esp, 0xc
test edi, edi
mov byte [esp + 0x18], 0
mov dword [esp + 0x19], eax
mov dword [esp + 0x1d], eax
mov dword [esp + 0x21], eax
mov word [esp + 0x25], ax
mov byte [esp + 0x27], al
mov dword [esp + 0x10], 0xffffffff
je 0x1001a18d
test ebp, ebp
je 0x1001a18d
mov ebx, dword [esp + 0x4064]
test ebx, ebx
je 0x1001a18d
test esi, esi
je 0x1001a18d
cmp dword [esp + 0x406c], eax
je 0x1001a18d
cmp dword [edi + 0x108], eax
je 0x1001a18d
mov esi, dword [edi + 0x104]
push esi
lea ecx, [edi + 4]
push ecx
lea edx, [esp + 0x40]
push edx
call fcn.100250c0
push ebx
lea eax, [esp + esi + 0x48]
push ebp
push eax
call fcn.100250c0
add esi, ebx
push esi
lea esi, [esp + 0x44]
lea ecx, [esp + 0x54]
call fcn.10019830
mov ecx, dword [edi + 0x108]
push ecx
mov ecx, esi
call fcn.100198b0
mov edx, dword [edi + 0x10c]
mov ecx, dword [edi]
mov esi, eax
lea eax, [edx + esi*4]
add eax, dword [edi + 0x118]
push 0
push eax
push ecx
call fcn.10026035
add esp, 0x2c
test eax, eax
jne 0x1001a18d
mov edx, dword [edi]
push edx
push 1
lea eax, [esp + 0x40]
push 4
push eax
call fcn.10025cc8
lea ecx, [esp + 0x48]
call fcn.10019800
push eax
mov eax, esi
call fcn.10019a00
add esp, 0x14
test eax, eax
je 0x1001a18d
mov ecx, dword [edi + 0x118]
mov edx, dword [edi]
push 0
add ecx, eax
push ecx
push edx
call fcn.10026035
add esp, 0xc
test eax, eax
jne 0x1001a18d
lea eax, [esp + 0x18]
lea ecx, [esp + 0x28]
call fcn.100199e0
mov eax, dword [edi]
push eax
push 1
lea ecx, [esp + 0x40]
push 2
push ecx
call fcn.10025cc8
add esp, 0x10
cmp eax, 1
jne 0x1001a106
lea ecx, [esp + 0x38]
call fcn.10019820
mov edx, dword [edi]
movzx esi, ax
push edx
push 1
mov eax, esi
call fcn.100199d0
push eax
lea eax, [esp + 0x44]
push eax
call fcn.10025cc8
add esp, 0x10
cmp eax, 1
jne 0x1001a106
lea ecx, [esp + 0x18]
push ecx
lea ebx, [esp + 0x3c]
movsx ecx, si
mov edx, ebx
call fcn.10019a60
movzx ebx, ax
add esp, 4
test bx, bx
mov dword [esp + 0x10], ebx
jl 0x1001a0c9
movsx edx, bx
push edx
lea ecx, [esp + 0x40]
call fcn.10019930
add esp, 4
lea ecx, [esp + 0x38]
mov ebp, eax
call fcn.10019800
cmp ebp, eax
je 0x1001a0d7
mov dword [esp + 0x10], 0xffffffff
mov ebx, dword [esp + 0x10]
test esi, 0x8000
jne 0x1001a030
jmp 0x1001a10a
mov eax, dword [esp + 0x406c]
movsx ecx, bx
cmp eax, ecx
jg 0x1001a0ee
movzx edx, ax
mov dword [esp + 0x10], edx
mov ebx, edx
mov esi, dword [esp + 0x14]
movsx eax, bx
push eax
lea ecx, [esp + 0x40]
push ecx
push esi
call fcn.100250c0
add esp, 0xc
jmp 0x1001a10e
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
test bx, bx
jl 0x1001a18d
fld dword [edi + 0x110]
fcomp qword [0x1004d258]
fnstsw ax
test ah, 0x41
jne 0x1001a188
cmp bx, 4
jle 0x1001a188
cmp byte [esi], 0x24
jne 0x1001a188
cmp byte [esi + 1], 0x24
jne 0x1001a188
mov cl, byte [esi + 2]
movzx ebp, cl
movsx edx, bx
lea eax, [ebp + 6]
cmp eax, edx
jne 0x1001a188
mov al, 0x24
cmp byte [edx + esi - 1], al
jne 0x1001a188
cmp byte [edx + esi - 2], al
jne 0x1001a188
mov eax, 3
add edx, 0xfffffffe
cmp edx, eax
jle 0x1001a16b
xor cl, byte [esi + eax]
add eax, 1
cmp eax, edx
jl 0x1001a161
test cl, cl
jne 0x1001a188
mov ecx, dword [esp + 0x406c]
push edi
push ecx
push esi
push ebp
add esi, 3
push esi
call fcn.10019ec0
add esp, 0x14
jmp 0x1001a190
mov ax, bx
jmp 0x1001a190
xor ax, ax
mov ecx, dword [esp + 0x4058]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10024c3b
add esp, 0x404c
ret