Function at 0x10014cf0
Capabilities:
Encode data using xor
Terminate process
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100a57d0
mov eax, dword fs:[0]
push eax
mov eax, 0x11b8
call fcn.1007d570
mov eax, dword [0x100ce350]
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 eax, edx
mov dword [ebp - 0x1194], eax
mov esi, ecx
mov ecx, eax
call fcn.10014cc8
cmp dword [esi + 0x14], 0x10
jb 0x10014d3b
mov esi, dword [esi]
push esi
call fcn.1001b460
mov esi, eax
pop ecx
test esi, esi
jne 0x10014d72
sub esp, 0x18
mov ecx, esp
push str.unzOpen_failed
and dword [ecx], eax
and dword [ecx + 0x10], eax
mov dword [ecx + 0x14], 0xf
call fcn.1000350c
call fcn.100157ce
add esp, 0x18
xor al, al
jmp 0x10015037
lea eax, [ebp - 0x1130]
push eax
push esi
call fcn.1001b330
pop ecx
pop ecx
test eax, eax
je 0x10014db2
sub esp, 0x18
mov ecx, esp
push str.unzGetGlobalInfo_failed
and dword [ecx], 0
and dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.1000350c
call fcn.100157ce
push esi
call fcn.1001b1a0
add esp, 0x1c
jmp 0x10014d6b
xor ebx, ebx
mov edi, ebx
mov dword [ebp - 0x1190], edi
cmp dword [ebp - 0x1130], ebx
jbe 0x1001502e
push ebx
push ebx
push ebx
push ebx
push 0x100
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x1180]
push eax
push esi
call fcn.1001b270
add esp, 0x20
test eax, eax
jne 0x1001509e
mov edx, dword [ebp - 0x1194]
lea ecx, [ebp - 0x11c4]
push 0x100c5e2c
call fcn.1000c880
pop ecx
lea ecx, [ebp - 0x110]
mov dword [ebp - 4], ebx
push ecx
mov ecx, eax
call fcn.1000b7a7
push eax
lea ecx, [ebp - 0x1128]
call fcn.1000b89c
lea ecx, [ebp - 0x11c4]
mov byte [ebp - 4], 2
call fcn.100034e6
lea ecx, [ebp - 0x110]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10014e3c
sub ecx, edx
mov al, byte [ebp + ecx - 0x111]
cmp al, 0x5c
je 0x10014fb1
cmp al, 0x2f
je 0x10014fb1
push esi
call fcn.1001b480
pop ecx
test eax, eax
jne 0x10015051
mov dword [ebp - 0x118c], 0x49
mov edx, ebx
mov byte [ebp - 0x1188], 0x3e
mov byte [ebp - 0x1187], 0x2b
mov al, byte [ebp - 0x1188]
mov byte [ebp - 0x1186], bl
mov al, byte [ebp + edx - 0x1188]
mov ecx, dword [ebp - 0x118c]
xor cl, al
mov byte [ebp + edx - 0x1188], cl
inc edx
cmp edx, 2
jb 0x10014e91
cmp dword [ebp - 0x1114], 0x10
lea ecx, [ebp - 0x1188]
lea eax, [ebp - 0x1128]
mov byte [ebp - 0x1186], bl
cmovae eax, dword [ebp - 0x1128]
push ecx
push eax
call fcn.100839ca
cmp dword [ebp - 0x1114], 0x10
lea edx, [ebp - 0x1128]
mov edi, eax
cmovae edx, dword [ebp - 0x1128]
sub esp, 0x10
mov ecx, esp
push edx
call fcn.100034c3
call fcn.100157ce
add esp, 0x18
test edi, edi
jne 0x10014f5c
sub esp, 0x18
mov ecx, esp
push str.fopen_failed
mov dword [ecx], ebx
mov dword [ecx + 0x10], ebx
mov dword [ecx + 0x14], 0xf
call fcn.1000350c
call fcn.100157ce
cmp dword [ebp - 0x1114], 0x10
lea eax, [ebp - 0x1128]
mov ecx, esp
cmovae eax, dword [ebp - 0x1128]
push eax
call fcn.100034c3
call fcn.100157ce
push esi
call fcn.1001b1e0
push esi
call fcn.1001b3b0
mov edi, dword [ebp - 0x1190]
add esp, 0x20
jmp 0x1001500c
push 0x1000
lea eax, [ebp - 0x1110]
push eax
push esi
call fcn.1001bf20
add esp, 0xc
jmp 0x10014f97
push 1
push eax
lea eax, [ebp - 0x1110]
push eax
call fcn.10082dcf
push 0x1000
lea eax, [ebp - 0x1110]
push eax
push esi
call fcn.1001bf20
add esp, 0x1c
push edi
test eax, eax
jg 0x10014f73
call fcn.1008335c
push esi
call fcn.1001b1e0
mov edi, dword [ebp - 0x1190]
pop ecx
pop ecx
jmp 0x10015005
cmp dword [ebp - 0x1114], 0x10
lea eax, [ebp - 0x1128]
lea ecx, [ebp - 0x11ac]
mov dword [ebp - 0x11ac], ebx
cmovae eax, dword [ebp - 0x1128]
push eax
mov dword [ebp - 0x119c], ebx
mov dword [ebp - 0x1198], 0xf
call fcn.1000350c
lea ecx, [ebp - 0x11ac]
call fcn.10014cc8
lea ecx, [ebp - 0x11ac]
mov bl, al
call fcn.100034e6
test bl, bl
je 0x10015062
xor ebx, ebx
push esi
call fcn.1001b3b0
pop ecx
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1128]
call fcn.100034e6
inc edi
mov dword [ebp - 0x1190], edi
cmp edi, dword [ebp - 0x1130]
jb 0x10014dc8
push esi
call fcn.1001b1a0
pop ecx
mov al, 1
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.1007c2ab
leave
ret
sub esp, 0x18
mov ecx, esp
push str.unzOpenCurrentFile_failed
mov dword [ecx], ebx
mov dword [ecx + 0x10], ebx
jmp 0x10015073
sub esp, 0x18
mov ecx, esp
push str.createDirectory_failed
and dword [ecx], 0
and dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
call fcn.1000350c
call fcn.100157ce
add esp, 0x18
push esi
call fcn.1001b1a0
pop ecx
lea ecx, [ebp - 0x1128]
call fcn.100034e6
jmp 0x10014d6b
sub esp, 0x18
mov ecx, esp
push str.unzGetCurrentFileInfo_failed
mov dword [ecx], ebx
mov dword [ecx + 0x10], ebx
jmp 0x10014d96