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

Disassembly:
push 0xffffffffffffffff
push 0x100e4f28
mov eax, dword fs:[0]
push eax
sub esp, 0x974
mov eax, dword [0x1010bb90]
xor eax, esp
mov dword [esp + 0x970], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1010bb90]
xor eax, esp
push eax
lea eax, [esp + 0x988]
mov dword fs:[0], eax
mov eax, dword [esp + 0x998]
push 0x100f4118
push eax
call fcn.100c1120
mov ebp, eax
xor ebx, ebx
add esp, 8
cmp ebp, ebx
je 0x10031c3f
push ebp
push 1
lea eax, [esp + 0x11c]
push 4
push eax
call fcn.100c33c2
push ebp
push 1
lea ecx, [esp + 0x48]
push 4
push ecx
call fcn.100c33c2
add esp, 0x20
cmp dword [esp + 0x30], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], ebx
jle 0x10031c36
push ebp
push 1
lea edx, [esp + 0x2c]
push 4
push edx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
call fcn.100c33c2
push ebp
push 1
lea eax, [esp + 0x38]
push 4
push eax
call fcn.100c33c2
push ebp
push 1
lea ecx, [esp + 0x124]
push 0x18
push ecx
call fcn.100c33c2
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
add esp, 0x30
push ebx
push 0x800
push edx
push eax
call fcn.100c3bc0
mov ecx, dword [esp + 0x20]
mov edi, eax
shl ecx, 0xb
lea eax, [esp + 0xfc]
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ecx
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10031b70
sub eax, edx
cmp eax, 3
jle 0x10031c23
mov cl, byte [esp + eax + 0xfb]
cmp cl, 0x66
je 0x10031b97
cmp cl, 0x46
jne 0x10031c23
mov cl, byte [esp + eax + 0xfa]
cmp cl, 0x66
je 0x10031ba8
cmp cl, 0x46
jne 0x10031c23
mov cl, byte [esp + eax + 0xf9]
cmp cl, 0x64
je 0x10031bb9
cmp cl, 0x44
jne 0x10031c23
mov esi, eax
lea edx, [esp + 0xfc]
call fcn.10031a20
mov dword [esp + 0x1c], ebx
mov esi, 0x1010e868
lea ecx, [esi + 8]
lea eax, [esp + 0xfc]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10031c00
test dl, dl
je 0x10031bfc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10031c00
add eax, 2
add ecx, 2
test dl, dl
jne 0x10031be0
xor eax, eax
jmp 0x10031c05
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x10031c14
mov edx, dword [esp + 0x99c]
cmp dword [esi], edx
je 0x10031c69
inc dword [esp + 0x1c]
add esi, 0x20
cmp esi, 0x10110f28
jl 0x10031bd0
mov eax, dword [esp + 0x18]
inc eax
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x18], eax
jl 0x10031afa
push ebp
call fcn.100c190c
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x988]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x970]
xor ecx, esp
call fcn.100bfcbc
add esp, 0x980
ret
mov eax, dword [esp + 0x28]
push ebx
push eax
push edi
push ebp
call fcn.100c2d90
add esp, 0x10
lea edi, [esp + 0x18]
call fcn.10010540
mov eax, dword [esp + 0x20]
cmp eax, ebx
mov ebx, dword [esp + 0x18]
mov esi, eax
je 0x10031cd6
push ebp
push 1
lea ecx, [esp + 0x184]
push 0x800
push ecx
call fcn.100c33c2
add esp, 0x10
sub esi, 0x800
lea ecx, [esp + 0x17c]
mov al, byte [ecx]
xor al, bl
movzx edx, al
shr ebx, 8
xor ebx, dword [edx*4 + 0x101143e0]
inc ecx
lea eax, [esp + 0x97c]
cmp ecx, eax
jb 0x10031cb5
test esi, esi
jne 0x10031c90
push ebp
not ebx
call fcn.100c190c
mov eax, dword [esp + 0x20]
shl eax, 5
add esp, 4
xor edi, edi
mov dword [esp + 0x18], 1
cmp ebx, dword [eax + 0x1010e86c]
je 0x10031cfe
mov dword [esp + 0x18], edi
push 0x100f439c
lea ecx, [esp + 0x58]
push ecx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x24], 0x4a
call fcn.1000fd40
lea edx, [esp + 0x1c]
push edx
mov dword [esp + 0x994], edi
call fcn.10013f30
lea ecx, [esp + 0x9a0]
add esp, 4
push ecx
call fcn.10013f30
lea edx, [esp + 0x1c]
add esp, 4
push edx
call fcn.10013f30
lea ecx, [esp + 0x24]
add esp, 4
push ecx
call fcn.10013f30
lea edx, [esp + 0x38]
add esp, 4
push edx
call fcn.10013f30
add esp, 4
mov ecx, eax
lea esi, [esp + 0x38]
call fcn.1000fe50
mov byte [esp + 0x990], 1
mov ecx, dword [0x1019eca8]
mov ecx, dword [ecx + 0x14]
push eax
call fcn.1003e110
cmp dword [esp + 0x50], 0x10
jb 0x10031d9a
mov edx, dword [esp + 0x3c]
push edx
call fcn.100c14d4
add esp, 4
lea eax, [esp + 0x54]
push eax
mov dword [esp + 0x54], 0xf
mov dword [esp + 0x50], edi
mov byte [esp + 0x40], 0
mov dword [esp + 0x994], 0xffffffff
call fcn.100048d0
mov eax, 1
jmp 0x10031c41