Function at 0x694540
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x25c
push ebx
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0x11]
push esi
push edi
push str..clpi
add edx, 0x99b
lea edi, [esp + 0x64]
call fcn.004ad010
push 2
xor esi, esi
push esi
push 0xc0000000
mov eax, edi
push eax
mov eax, 0x3e8
call fcn.004abf70
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x505]
xor edi, edi
cmp eax, esi
je 0x694599
mov eax, dword [eax]
add edi, 1
cmp eax, esi
jne 0x694590
lea ecx, [edi*8]
push ecx
call fcn.0069c0de
lea edx, [edi*4]
add esp, 4
push edx
mov dword [esp + 0x3c], eax
call fcn.0069c0de
add esp, 4
cmp edi, 1
mov dword [esp + 0x3c], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], esi
jbe 0x6945fd
mov ecx, dword [ebx + 0x505]
cmp ecx, esi
je 0x6945fd
mov edx, dword [ecx]
push ecx
mov dword [ebx + 0x505], edx
call fcn.0069d0cc
mov eax, dword [esp + 0x40]
add esp, 4
mov edi, dword [ebx + 0x505]
cmp edi, esi
je 0x69476c
lea esi, [eax + 1]
mov ecx, eax
sub ecx, esi
mov dword [esp + 0x40], ecx
mov ecx, eax
sub ecx, esi
add ecx, 2
sub eax, esi
add eax, 3
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], ecx
mov dword [esp + 0x28], eax
mov eax, dword [edi + 8]
mov ecx, dword [edi + 4]
mov edx, eax
mov dword [esp + 0x58], ecx
shrd ecx, edx, 0x13
and cx, 0x3fff
shr edx, 0x13
movzx edx, cx
mov ecx, dword [esp + 0x58]
shrd ecx, eax, 9
shr eax, 9
and cx, 0x7ff
movzx eax, cx
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x14], eax
and eax, 0x1ffff
cmp dword [esp + 0x24], 0
mov dword [esp + 0x20], edx
je 0x694690
cmp word [esp + 0x50], dx
ja 0x694690
mov cx, word [esp + 0x54]
cmp cx, word [esp + 0x10]
ja 0x694690
cmp dword [esp + 0x4c], eax
jbe 0x694706
movzx esi, word [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x24]
shr edx, 0xa
add esi, esi
add esi, esi
add esi, esi
mov byte [esi + ecx], dl
mov edx, dword [esp + 0x24]
shr edx, 2
mov byte [esi + ecx + 1], dl
movzx edx, byte [esp + 0x21]
mov cl, byte [esp + 0x24]
shl cl, 6
add dl, cl
mov ecx, dword [esp + 0x38]
mov byte [esi + ecx + 2], dl
movzx edx, byte [esp + 0x20]
mov byte [esi + ecx + 3], dl
mov edx, dword [esp + 0x14]
shr edx, 0x18
mov byte [esi + ecx + 4], dl
mov edx, dword [esp + 0x14]
shr edx, 0x10
mov byte [esi + ecx + 5], dl
mov edx, dword [esp + 0x14]
shr edx, 8
add dword [esp + 0x34], 1
mov byte [esi + ecx + 6], dl
movzx edx, byte [esp + 0x14]
mov byte [esi + ecx + 7], dl
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x40]
shr ecx, 7
mov byte [edx + esi], cl
mov dl, byte [esp + 0x10]
add dl, dl
mov ecx, eax
shr ecx, 0x10
add cl, dl
mov edx, dword [esp + 0x44]
mov byte [esi], cl
mov ecx, eax
shr ecx, 8
mov byte [edx + esi], cl
movzx edx, word [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov byte [ecx + esi], al
mov edi, dword [edi]
mov ecx, 1
add dword [esp + 0x24], ecx
add dword [esp + 0x1c], ecx
mov dword [esp + 0x50], edx
movzx edx, word [esp + 0x10]
add esi, 4
test edi, edi
mov dword [esp + 0x54], edx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], esi
jne 0x69462e
xor esi, esi
and dword [esp + 0x1c], 0x3ffff
push esi
call fcn.0069c8fa
add esp, 4
push 0x28
call fcn.0069c0de
mov ecx, 0x30313030
bswap ecx
mov dword [eax + 4], ecx
mov ecx, 0xdc
bswap ecx
mov dword [eax + 8], ecx
mov edx, 0x48444d56
bswap edx
mov dword [eax], edx
mov ecx, 0x134
bswap ecx
mov dword [eax + 0x10], ecx
movzx ecx, word [esp + 0x38]
mov edx, 0xf6
bswap edx
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], ecx
lea ecx, [edx + ecx*2]
lea edx, [ecx*4 + 0x14c]
xor ecx, ecx
bswap edx
mov dword [eax + 0x14], edx
mov edx, dword [esp + 0x1c]
mov dword [eax + 0x18], ecx
add esp, 4
mov dword [eax + 0x1c], ecx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_WriteFile]
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], ecx
lea ecx, [esp + 0x2c]
push ecx
push 0x28
push eax
push edx
mov dword [esp + 0x54], eax
call esi
push 0
call fcn.0069c8fa
add esp, 4
push 0xb4
call fcn.0069c0de
mov edi, eax
add esp, 4
mov byte [edi + 4], 0
mov byte [edi + 5], 0
mov byte [edi + 6], 1
mov eax, 0xb0
bswap eax
mov dword [edi], eax
cmp byte [ebx + 0x511], 0
setne cl
lea ecx, [ecx*4 + 1]
mov byte [edi + 7], cl
mov dword [edi + 8], 0
mov eax, dword [ebx + 0x4f9]
mov ecx, dword [ebx + 0x4f5]
cdq
push edx
push eax
mov eax, ecx
cdq
push edx
mov edx, dword [ebx + 0x1e]
sub edx, dword [ebx + 0x512]
push eax
mov eax, dword [ebx + 0x22]
sbb eax, dword [ebx + 0x516]
sub edx, 0x337f980
sbb eax, 0
push eax
push edx
mov ecx, 5
call fcn.006601c0
mov ecx, eax
mov dword [esp + 0x2c], edx
mov edx, ecx
xor eax, eax
or edx, dword [esp + 0x2c]
je 0x6948a7
mov edx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x1a]
push edx
push ecx
lea eax, [eax + eax*2]
shl eax, 6
push 0
push eax
call fcn.006b2550
bswap eax
mov dword [edi + 0xc], eax
mov eax, dword [ebx + 0x1a]
push 0xa0
lea ecx, [edi + 0x14]
bswap eax
push 0
push ecx
mov dword [edi + 0x10], eax
call fcn.006a1300
mov eax, dword [esp + 0x24]
add esp, 0xc
push 0
lea edx, [esp + 0x2c]
push edx
push 0xb4
push edi
push eax
mov byte [edi + 0x95], 0x1e
mov byte [edi + 0x96], 0x80
mov byte [edi + 0x97], 0x48
mov byte [edi + 0x98], 0x44
mov byte [edi + 0x99], 0x4d
mov byte [edi + 0x9a], 0x56
call esi
push 0
call fcn.0069c8fa
add esp, 4
push 0x1a
call fcn.0069c0de
mov esi, eax
xor eax, eax
add esp, 4
mov ecx, 0x16
bswap ecx
mov dword [esi], ecx
mov byte [esi + 4], 0
mov byte [esi + 5], 1
mov dword [esi + 6], eax
push eax
mov byte [esi + 0xb], al
mov byte [esi + 0xa], 1
mov byte [esi + 0xc], 0x10
mov byte [esi + 0xd], 1
push 0x15f90
mov dword [esi + 0xe], eax
mov edx, dword [ebx + 0x512]
mov ecx, dword [ebx + 0x516]
push eax
add edx, 0x337f980
push 0xafc8
adc ecx, eax
push ecx
push edx
lea ecx, [eax + 5]
mov dword [esp + 0x5c], esi
call fcn.006601c0
push 0
push 0x15f90
bswap eax
push 0
mov dword [esi + 0x12], eax
mov edx, dword [ebx + 0x32]
mov eax, dword [ebx + 0x2e]
push 0xafc8
push edx
push eax
mov ecx, 5
call fcn.006601c0
push 0
lea ecx, [esp + 0x2c]
push ecx
push 0x1a
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x24]
add eax, 0x57e4
push esi
bswap eax
push edx
mov dword [esi + 0x16], eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
push 0
call fcn.0069c8fa
add esp, 4
push 0x3e
call fcn.0069c0de
mov esi, eax
mov eax, 0x3a
bswap eax
mov dword [esi], eax
mov byte [esi + 4], 0
mov byte [esi + 5], 1
mov dword [esi + 6], 0
add esp, 4
mov byte [esi + 0xa], 1
mov byte [esi + 0xb], 0
cmp byte [ebx + 0x511], 0
mov byte [esi + 0xd], 0
je 0x694a31
push 0x29
lea ecx, [esi + 0x15]
push 0
push ecx
mov byte [esi + 0xc], 1
mov byte [esi + 0xe], 0x14
mov byte [esi + 0xf], 0
mov byte [esi + 0x10], 0x2d
mov byte [esi + 0x11], 0x91
mov byte [esi + 0x12], 0x65
mov byte [esi + 0x13], 0x6e
mov byte [esi + 0x14], 0x67
call fcn.006a1300
add esp, 0xc
jmp 0x694af2
mov byte [esi + 0xc], 2
mov byte [esi + 0xe], 0x10
mov byte [esi + 0xf], 0x11
mov byte [esi + 0x10], 0x15
mov byte [esi + 0x11], 0x1b
mov edx, dword [ebx + 0x11]
fld qword [edx + 0x66]
mov dl, 0x40
fld qword [0x7235f8]
fcom st(1)
fnstsw ax
test ah, 0x41
jnp 0x694a5e
mov dl, 0x60
fld st(1)
xor cl, cl
fsub qword [0x723850]
fld qword [0x7237d0]
fcom st(1)
fnstsw ax
fld qword [0x723638]
test ah, 0x41
jp 0x694b51
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 1
jne 0x694b53
fstp st(3)
mov cl, 1
fstp st(2)
fstp st(0)
fstp st(0)
or cl, dl
mov byte [esi + 0x12], cl
mov eax, dword [ebx + 0x11]
mov cl, byte [eax + 0x992]
neg cl
sbb cl, cl
and cl, 0x10
add cl, 0x20
xor eax, eax
mov byte [esi + 0x13], cl
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], eax
mov word [esi + 0x24], ax
mov byte [esi + 0x26], 0x11
mov byte [esi + 0x27], al
mov byte [esi + 0x28], 0x15
mov byte [esi + 0x29], 0x80
mov byte [esi + 0x2a], 0x34
mov byte [esi + 0x2b], 0x65
mov byte [esi + 0x2c], 0x6e
mov byte [esi + 0x2d], 0x67
mov dword [esi + 0x2e], eax
mov dword [esi + 0x32], eax
mov dword [esi + 0x36], eax
mov dword [esi + 0x3a], eax
mov eax, dword [esp + 0x18]
push 0
lea edx, [esp + 0x2c]
push edx
push 0x3e
push esi
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
lea eax, [ecx + edx*2 + 6]
add eax, eax
add eax, eax
push 0
mov dword [esp + 0x14], eax
call fcn.0069c8fa
mov eax, dword [esp + 0x14]
add esp, 4
push eax
call fcn.0069c0de
add esp, 4
cmp byte [ebx + 0x511], 0
mov dword [esp + 0x14], eax
je 0x694ba1
mov ecx, dword [esp + 0x10]
push ecx
push 0
push eax
call fcn.006a1300
jmp 0x694c4b
fstp st(2)
fld st(3)
fsubrp st(3)
fcom st(2)
fnstsw ax
test ah, 0x41
jp 0x694b74
fxch st(2)
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x694b76
fstp st(2)
mov cl, 3
jmp 0x694a96
fstp st(2)
fxch st(2)
fsub qword [0x723858]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 1
jne 0x694a96
fcompp
fnstsw ax
test ah, 0x41
jp 0x694a9a
mov cl, 4
jmp 0x694a9a
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x1c]
add edx, 0xfffffffc
bswap edx
mov dword [eax], edx
mov dx, cx
shr dx, 0xe
add dl, 4
mov byte [eax + 0xb], dl
mov edx, ecx
shr edx, 6
mov byte [eax + 0xc], dl
add cl, cl
add cl, cl
mov edx, ebx
shr edx, 0x10
add dl, cl
mov ecx, ebx
shr ecx, 8
mov byte [eax + 0xe], cl
mov ecx, dword [esp + 0x20]
mov byte [eax + 0xd], dl
add ecx, ecx
add ecx, ecx
mov edx, 0xe
bswap edx
add ecx, ecx
mov dword [eax + 0x10], edx
lea edx, [ecx + 4]
push ecx
mov ecx, dword [esp + 0x3c]
bswap edx
mov byte [eax + 4], 0
mov byte [eax + 5], 1
mov byte [eax + 6], 0
mov byte [eax + 7], 1
mov byte [eax + 8], 0x10
mov byte [eax + 9], 0x11
mov byte [eax + 0xa], 0
mov byte [eax + 0xf], bl
mov dword [eax + 0x14], edx
push ecx
add eax, 0x18
push eax
call fcn.006a4bd0
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x2c]
add esp, 0xc
lea edx, [ebx*4]
push edx
mov edx, dword [esp + 0x18]
push eax
lea eax, [edx + ecx*8 + 0x18]
push eax
call fcn.006a4bd0
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
add esp, 0xc
push 0
lea ecx, [esp + 0x2c]
push ecx
push edx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
push 0
call fcn.0069c8fa
add esp, 4
push 4
call fcn.0069c0de
add esp, 4
push 0
lea ecx, [esp + 0x4c]
push ecx
push 4
push eax
push ebx
mov dword [esp + 0x3c], eax
mov dword [eax], 0
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp ebx, 0xffffffff
je 0x694cb1
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x18], 0xffffffff
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
mov edx, dword [ebp + 0xc]
push eax
mov dword [edx], 0
call fcn.0069c8fa
mov ecx, dword [esp + 0x18]
add esp, 4
push ecx
call fcn.0069c8fa
add esp, 4
push esi
call fcn.0069c8fa
mov edx, dword [esp + 0x48]
add esp, 4
push edx
call fcn.0069c8fa
add esp, 4
push edi
call fcn.0069c8fa
mov eax, dword [esp + 0x44]
add esp, 4
push eax
call fcn.0069c8fa
mov ecx, dword [esp + 0x40]
add esp, 4
push ecx
call fcn.0069c8fa
mov edx, dword [esp + 0x3c]
add esp, 4
push edx
call fcn.0069c8fa
add esp, 4
cmp ebx, 0xffffffff
je 0x694d26
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8