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

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x1dc
mov ebp, edx
xor ecx, ecx
mov esi, eax
mov word [esp + 0x1bc], cx
push str._nWriting_SSP_file..._n
movzx ebx, word [ebp + 2]
call fcn.00438e90
lea edi, [esp + 0x14]
push ebx
push str._4.4X.ssp
push 0xff
push edi
call fcn.004399cd
lea eax, [esp + 0x1cc]
push 0x44d8fc
push edi
push eax
call fcn.0043939c
add esp, 0x20
mov ebx, dword [esp + 0x1b8]
test ebx, ebx
je 0x4047c7
push 1
push 3
push str.TKGF___c_c
push ebx
call fcn.0043a157
add esp, 0x10
xor edi, edi
push ebx
push 1
push 2
lea eax, [esi + edi*2]
push eax
call fcn.0043a3d5
add esp, 0x10
inc edi
cmp edi, 0x20
jl 0x4043e4
xor edi, edi
push ebx
push 1
push 2
lea eax, [ebp + edi*2]
push eax
call fcn.0043a3d5
add esp, 0x10
inc edi
cmp edi, 0x40
jl 0x4043fd
push 0
push 0x38
push str._c_c
push ebx
call fcn.0043a157
add esp, 0x10
pxor xmm0, xmm0
movaps xmmword [esp + 0x110], xmm0
movaps xmmword [esp + 0x120], xmm0
movaps xmmword [esp + 0x130], xmm0
movaps xmmword [esp + 0x140], xmm0
movaps xmmword [esp + 0x150], xmm0
movaps xmmword [esp + 0x160], xmm0
movaps xmmword [esp + 0x170], xmm0
movaps xmmword [esp + 0x180], xmm0
movaps xmmword [esp + 0x190], xmm0
movaps xmmword [esp + 0x1a0], xmm0
movq qword [esp + 0x1b0], xmm0
xor edx, edx
xor eax, eax
movzx ecx, word [esi + eax*2 + 8]
cmp ecx, 0x303
jne 0x4044b0
mov edi, dword [ebp + eax*4 + 0x10]
lea ecx, [eax + eax + 8]
mov word [esp + edx*2 + 0x180], cx
inc edx
mov dword [esp + eax*4 + 0x110], edi
movzx edx, dx
inc eax
cmp eax, 0x1c
jb 0x404488
test edx, edx
je 0x40455d
xor esi, esi
lea eax, [esp + 0x1bc]
mov dword [esp + 0x1a0], ebx
xor edi, edi
cmp dword [esp + esi*4 + 0x110], 0
jne 0x404571
mov dword [esp + 0x188], ebp
mov ebx, edi
mov edi, dword [esp + 0x1a0]
lea ebp, [esp + 0x1bc]
push edi
push 1
push 2
push ebp
call fcn.0043a3d5
add esp, 0x10
inc ebx
cmp ebx, 0x380
jb 0x4044f5
mov ebp, dword [esp + 0x188]
xor edi, edi
mov dword [esp + 0x188], ebp
mov ebx, edi
mov edi, dword [esp + 0x1a0]
lea ebp, [esp + 0x1bc]
push edi
push 1
push 2
push ebp
call fcn.0043a3d5
add esp, 0x10
inc ebx
cmp ebx, 0x380
jb 0x40452c
inc esi
xor edi, edi
mov ebp, dword [esp + 0x188]
cmp esi, 0x1c
jb 0x4044d0
mov ebx, dword [esp + 0x1a0]
push ebx
call fcn.00439c01
add esp, 4
add esp, 0x1dc
pop ebp
pop ebx
pop edi
pop esi
ret
movzx ebx, word [ebp + 0xc]
lea eax, [esp + 0x18c]
xor ecx, ecx
mov edx, dword [esp + esi*4 + 0x110]
mov dword [esp + 0xc], ebx
call fcn.004048d0
mov edx, dword [esp + 0x19c]
mov ecx, edi
mov ebx, dword [esp + 0x194]
mov dword [esp + 0x1a4], edx
mov dword [esp + 0x180], esi
mov dword [esp + 0x188], ebp
mov eax, dword [esp + 0x1a4]
mov edx, edi
xor ebx, 1
inc edx
mov ebp, ebx
shr ebp, 1
shl ebx, 0xf
or ebp, ebx
movzx ebx, bp
mov ebp, eax
mov esi, ebx
xor ebp, ebx
and esi, 0x8000
cmovne ebx, ebp
cmp edx, 0x20
jb 0x4045bc
mov eax, edi
mov dword [esp + 0x194], ebx
mov dword [esp + 0x1a8], eax
mov dword [esp + 0x184], ecx
jmp 0x404600
mov dword [esp + 0x194], ebx
mov esi, ebx
shr esi, 0xf
and esi, 1
xor esi, ebx
mov ebp, esi
mov edx, esi
shr ebp, 1
mov eax, esi
mov dword [esp + 0x1ac], ebx
mov ebx, esi
shr edx, 9
and ebp, 1
mov dword [esp + 0x1cc], ebp
mov ebp, esi
shr ebx, 0xb
and edx, 1
shr eax, 2
mov edi, esi
mov dword [esp + 0x1c4], edx
mov ecx, esi
shr ebp, 4
mov edx, esi
and ebx, 1
and eax, 1
shr edi, 7
mov dword [esp + 0x1b4], ebx
mov ebx, esi
mov dword [esp + 0x1c0], eax
mov eax, ebp
shr ecx, 6
and edi, 1
shr edx, 0xe
and ecx, 1
and ebx, 1
and eax, 1
and edx, 1
and ebp, 0xfffffffe
mov dword [esp + 0x1b0], edi
mov edi, esi
mov dword [esp + 0x1c8], ecx
mov ecx, esi
mov dword [esp + 0x1d0], ebx
mov ebx, esi
mov dword [esp + 0x1d4], eax
mov eax, esi
mov dword [esp + 0x1d8], edx
mov edx, esi
shr esi, 0xd
shr edi, 0xf
and esi, 1
shr ecx, 3
and edi, 1
add esi, ebp
and ecx, 1
shr edx, 8
shr eax, 0xc
and edx, 1
shr ebx, 0xa
and eax, 1
and ebx, 1
lea esi, [edi + esi*2]
lea ecx, [ecx + esi*2]
mov esi, dword [esp + 0x1d4]
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x1cc]
lea eax, [eax + edx*2]
lea ebp, [ebx + eax*2]
mov ebx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x1d0]
lea edi, [ebx + ebp*2]
mov ebp, dword [esp + 0x1c8]
lea edx, [esi + edi*2]
mov edi, dword [esp + 0x1c4]
lea ebx, [eax + edx*2]
mov edx, dword [esp + 0x1c0]
lea esi, [ecx + ebx*2]
mov ebx, dword [esp + 0x1b4]
lea eax, [ebp + esi*2]
mov esi, dword [esp + 0x1b0]
lea ecx, [edi + eax*2]
lea ebp, [edx + ecx*2]
lea edi, [ebx + ebp*2]
lea eax, [esi + edi*2]
mov word [esp + 0x1be], ax
push dword [esp + 0x1a0]
push 1
push 2
lea edx, [esp + 0x1ca]
push edx
mov ebx, dword [esp + 0x1bc]
call fcn.0043a3d5
add esp, 0x10
xor ebx, 1
mov eax, ebx
shl eax, 0xf
shr ebx, 1
or eax, ebx
movzx ebx, ax
mov edx, ebx
and edx, 0x8000
mov ecx, dword [esp + 0x1a4]
xor ecx, ebx
test edx, edx
mov ebp, dword [esp + 0x1a8]
cmovne ebx, ecx
inc ebp
mov dword [esp + 0x1a8], ebp
cmp ebp, 0x20
jb 0x4045f9
mov ecx, dword [esp + 0x184]
xor edi, edi
inc ecx
cmp ecx, 0x1c
jb 0x4045b3
mov esi, dword [esp + 0x180]
mov ebp, dword [esp + 0x188]
mov dword [esp + 0x194], ebx
jmp 0x404515
push edi
push str.Could_not_open_SSP_file__s_for_writing_n
call fcn.00438e90
add esp, 8
add esp, 0x1dc
pop ebp
pop ebx
pop edi
pop esi
ret