Function at 0x4071c8
Capabilities:
Encode data using xor
Write file on windows

Disassembly:
push 0x34
mov eax, 0x428723
call fcn.00417869
mov ebx, ecx
mov dword [ebp - 0x14], ebx
push dword [ebp + 8]
lea ecx, [ebp - 0x40]
mov byte [ebp - 0xd], 0
call fcn.00403a9f
and dword [ebp - 4], 0
lea eax, [ebp - 0xd]
push eax
push ecx
push ecx
lea edi, [ebx + 0x16c8]
lea eax, [ebp - 0x40]
mov dword [ebp - 0x1c], edi
push eax
mov ecx, edi
call fcn.0040b177
test al, al
je 0x4073c6
mov ecx, edi
call fcn.0040af4c
test al, al
je 0x4073c6
mov eax, dword [0x43f628]
xor ebx, ebx
inc ebx
test bl, al
jne 0x407256
or eax, ebx
mov dword [0x43f628], eax
push 0x4341c8
mov ecx, 0x43f62c
mov byte [ebp - 4], bl
call fcn.00403a9f
push 0x428f72
call fcn.0041589e
mov byte [ebp - 4], 0
mov eax, dword [0x43f628]
pop ecx
test al, 2
jne 0x407289
or eax, 2
mov dword [0x43f628], eax
push 0x4341e0
mov ecx, 0x43f63c
mov byte [ebp - 4], 2
call fcn.00403a9f
push 0x428f68
call fcn.0041589e
mov byte [ebp - 4], 0
mov eax, dword [0x43f628]
pop ecx
test al, 4
jne 0x4072b5
or eax, 4
mov dword [0x43f628], eax
mov byte [ebp - 4], 3
mov ecx, dword [edi + 0x18]
push dword [0x43f62c]
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [0x43f64c], eax
mov byte [ebp - 4], 0
mov eax, dword [0x43f628]
test al, 8
jne 0x4072e3
or eax, 8
mov dword [0x43f628], eax
push 0x434200
mov ecx, 0x43f650
mov byte [ebp - 4], 4
call fcn.00403a9f
push 0x428f5e
call fcn.0041589e
pop ecx
mov byte [ebp - 4], 0
push 0x10
mov eax, ebx
pop ecx
jmp 0x4072ed
mov edi, dword [ebp - 0x1c]
cmp eax, dword [edi + 0x24]
jg 0x4072fd
test eax, eax
jle 0x4072fd
mov esi, dword [edi + 0x60]
add esi, ecx
jmp 0x4072ff
xor esi, esi
inc eax
add ecx, 0x10
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x2c], ecx
test esi, esi
je 0x4073a4
mov edx, dword [esi + 8]
xor edi, edi
mov dword [ebp - 0x24], edx
test edx, edx
je 0x4072ea
mov eax, dword [esi + 4]
mov ecx, dword [eax + edi*4]
movzx edx, word [ecx + 8]
cmp dx, bx
jne 0x407336
mov eax, dword [ecx]
cmp eax, dword [0x43f64c]
je 0x40734e
cmp dx, 0x31
jne 0x407393
mov eax, dword [ecx]
mov edx, 0x43f62c
mov ecx, dword [eax]
call fcn.00409087
test al, al
je 0x407393
mov ecx, dword [esi + 4]
mov eax, dword [ecx + edi*4 + 4]
cmp word [eax + 8], 0x47
jne 0x407393
mov eax, dword [ecx + edi*4 + 8]
mov dword [ebp - 0x18], eax
cmp word [eax + 8], 0x32
jne 0x407393
mov eax, dword [eax]
mov edx, 0x43f63c
mov ecx, dword [eax]
call fcn.00409087
test al, al
je 0x407393
mov ecx, dword [ebp - 0x18]
push 0x36
call fcn.0040db1d
mov ecx, dword [ebp - 0x18]
push 0x43f650
call fcn.0040dad5
inc edi
cmp edi, dword [ebp - 0x24]
jb 0x40731d
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x2c]
jmp 0x4072ea
push 0x43321c
push dword [ebp + 0xc]
call fcn.00412e64
mov esi, eax
pop ecx
pop ecx
test esi, esi
jne 0x4073da
mov ecx, dword [ebp - 0x14]
push 0xa036
call fcn.004040a5
xor bl, bl
lea ecx, [ebp - 0x40]
call fcn.004015bf
mov al, bl
call fcn.00417846
ret 8
mov eax, dword [ebp - 0x14]
push esi
push 4
push ebx
mov eax, dword [eax + 0x16ec]
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
call fcn.0041375f
mov eax, dword [0x43f628]
add esp, 0x10
test al, 0x10
jne 0x40742e
or eax, 0x10
mov dword [0x43f628], eax
push 0x434238
mov ecx, 0x43f660
mov byte [ebp - 4], 5
call fcn.00403a9f
push 0x428f54
call fcn.0041589e
mov byte [ebp - 4], 0
mov eax, dword [0x43f628]
pop ecx
test al, 0x20
jne 0x407455
or eax, 0x20
mov dword [0x43f628], eax
mov byte [ebp - 4], 6
mov ecx, dword [edi + 0x18]
push dword [0x43f660]
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [0x43f670], eax
mov byte [ebp - 4], 0
push 0x10
mov eax, ebx
pop ecx
jmp 0x407462
mov ecx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x1c]
cmp eax, dword [edi + 0x24]
jg 0x407472
test eax, eax
jle 0x407472
mov edi, dword [edi + 0x60]
add edi, ecx
jmp 0x407474
xor edi, edi
inc eax
add ecx, 0x10
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ecx
test edi, edi
je 0x4075c9
mov edx, dword [edi + 8]
xor ecx, ecx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x18], ecx
test edx, edx
je 0x40745c
mov eax, dword [edi + 4]
push esi
push ebx
push ebx
mov eax, dword [eax + ecx*4]
mov al, byte [eax + 8]
mov byte [ebp + 0xb], al
lea eax, [ebp + 0xb]
push eax
call fcn.0041375f
mov eax, dword [edi + 4]
add esp, 0x10
mov edx, dword [ebp - 0x18]
mov ecx, dword [eax + edx*4]
call fcn.0040db8c
test al, al
je 0x4074f2
mov eax, dword [ebp - 0x14]
cmp byte [eax + 0x1740], 0
jne 0x4074e6
cmp byte [ebp + 0xb], bl
jne 0x4074e6
mov eax, dword [ecx]
cmp eax, dword [0x43f670]
jne 0x4074e6
mov eax, dword [ebp - 0x14]
mov byte [eax + 0x1740], bl
mov eax, dword [edi + 4]
push esi
push 4
push ebx
push dword [eax + edx*4]
jmp 0x407509
call fcn.0040dba1
test al, al
jne 0x407504
call fcn.0040dbb7
test al, al
je 0x407516
push esi
push 8
push ebx
push ecx
call fcn.0041375f
add esp, 0x10
jmp 0x4075b1
call fcn.0040db76
test al, al
je 0x4075b1
mov eax, dword [ecx]
mov ecx, dword [eax]
call fcn.0040ecb8
mov ecx, dword [ebp - 0x14]
mov dword [ebp + 0xc], eax
cmp byte [ecx + 0x1740], 0
jne 0x407568
cmp byte [ebp + 0xb], 0x31
jne 0x407568
mov eax, dword [edi + 4]
mov edx, 0x43f660
mov ecx, dword [ebp - 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax]
mov ecx, dword [eax]
call fcn.00409087
test al, al
je 0x407565
mov eax, dword [ebp - 0x14]
mov byte [eax + 0x1740], bl
mov eax, dword [ebp + 0xc]
push eax
call fcn.00412e4b
pop ecx
push esi
push 4
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x20]
push ebx
push eax
call fcn.0041375f
mov ecx, dword [ebp - 0x20]
add esp, 0x10
mov edx, dword [ebp + 0xc]
xor eax, eax
test ecx, ecx
jle 0x40759a
xor word [edx + eax*2], cx
inc eax
mov ecx, dword [ebp - 0x20]
cmp eax, ecx
jl 0x40758e
push esi
lea eax, [ecx + ecx]
push eax
push ebx
push edx
call fcn.0041375f
push dword [ebp + 0xc]
call fcn.00415950
add esp, 0x14
mov ecx, dword [ebp - 0x18]
inc ecx
mov dword [ebp - 0x18], ecx
cmp ecx, dword [ebp - 0x2c]
jb 0x407495
mov eax, dword [ebp - 0x28]
jmp 0x40745c
push esi
call fcn.00412faf
pop ecx
jmp 0x4073c8