Function at 0x40f440
Capabilities:
Read file on windows
Set current directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1073c
call fcn.004333f0
mov eax, dword [0x4c4174]
push ebx
push esi
inc eax
mov esi, ecx
push edi
mov dword [esp + 0x2c], esi
mov dword [0x4c4174], eax
cmp eax, 0x30
jge 0x473cfb
lea ecx, [esp + 0x50]
mov dword [esp + 0x30], 0
mov byte [esp + 0x11], 1
mov byte [esp + 0x2b], 1
mov byte [esp + 0x23], 0
call fcn.00402d40
mov ebx, dword [ebp + 8]
push 0x2000
push ebx
lea ecx, [esp + 0x58]
call fcn.00402990
test al, al
je 0x473d15
lea ecx, [esp + 0x100]
call fcn.0040e4fe
lea ecx, [esp + 0x100]
call fcn.00421824
lea ecx, [esp + 0xd4]
call fcn.0040e4fe
lea edx, [esp + 0xd4]
mov ecx, ebx
call fcn.004023f9
mov edi, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
lea eax, [esp + 0xb4]
push eax
lea eax, [esp + 0x134]
push eax
lea ecx, [esp + 0x58]
mov dword [esp + 0xbc], 0x18
call fcn.00421897
push 0
push esi
push edi
lea ecx, [esp + 0x5c]
call fcn.00402b18
cmp dword [esp + 0x140], 0x5f726177
je 0x473d31
lea eax, [esp + 0x548]
push eax
lea eax, [esp + 0x34c]
push eax
lea eax, [esp + 0x150]
push eax
lea eax, [esp + 0xc8]
push eax
push dword [esp + 0xe4]
call fcn.00425949
add esp, 0x14
lea eax, [esp + 0xbc]
push eax
lea eax, [esp + 0x74c]
push eax
call fcn.00424863
lea eax, [esp + 0x150]
push eax
lea eax, [esp + 0x754]
push eax
call fcn.00424834
add esp, 0x10
lea eax, [esp + 0x748]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push 0x2000
call fcn.0042302a
add esp, 4
lea ecx, [esp + 0x88]
push eax
call fcn.00402c80
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x88]
cmp byte [esp + 0x2b], 1
mov esi, 2
jne 0x40fb8a
mov ecx, dword [esp + 0x74]
xor eax, eax
mov word [edi], ax
mov eax, dword [ecx]
cmp eax, 1
jg 0x474129
mov eax, dword [esp + 0x68]
xor ecx, ecx
mov word [eax], cx
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x6c], 0
test al, 3
jne 0x4743ec
test al, 4
jne 0x474163
mov eax, 0x10
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], eax
call fcn.0042302a
mov esi, eax
add esp, 4
mov dword [esp + 0x24], esi
push 4
mov dword [esp + 0x44], esi
mov byte [esi], 0
call fcn.0042302a
mov ecx, eax
add esp, 4
mov dword [esp + 0x14], ecx
test ecx, ecx
je 0x40fdb0
mov dword [ecx], 1
mov eax, dword [ecx]
mov dword [esp + 0x4c], ecx
cmp eax, 1
jg 0x47417a
xor edi, edi
xor al, al
mov byte [esi], 0
mov byte [esp + 0x12], al
cmp dword [esp + 0x58], 0
mov dword [esp + 0x44], edi
je 0x4741b3
xor esi, esi
jmp 0x40f670
cmp ebx, dword [esp + 0x58]
je 0x40f8aa
mov eax, dword [esp + 0x54]
inc esi
mov al, byte [eax + ebx]
mov byte [esp + esi + 0x12], al
inc ebx
mov dword [esp + 0x5c], ebx
cmp esi, 1
jb 0x40f670
add dword [esp + 0x60], esi
adc dword [esp + 0x64], 0
test esi, esi
je 0x40f8e9
mov al, byte [esp + 0x13]
mov byte [esp + 0x12], 1
cmp al, 0xd
je 0x40f755
cmp al, 0xa
je 0x40f79a
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
cmp eax, 1
jg 0x4741d5
lea eax, [edi + 2]
cmp dword [esp + 0x18], eax
jb 0x40f6e7
mov esi, dword [esp + 0x24]
mov al, byte [esp + 0x13]
mov byte [esi + edi], al
inc edi
mov byte [esi + edi], 0
jmp 0x40f656
cmp eax, 0x41c2
jae 0x474227
mov esi, dword [esp + 0x24]
add eax, eax
test eax, eax
je 0x40fdbb
add eax, 0xf
and eax, 0xfffffff0
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], eax
call fcn.0042302a
add esp, 4
mov dword [esp + 0x24], eax
test esi, esi
je 0x40f73a
lea ecx, [edi + 1]
push ecx
push esi
push eax
call fcn.004229c0
add esp, 0xc
push esi
call fcn.0042309e
mov eax, dword [esp + 0x28]
add esp, 4
mov esi, eax
mov al, byte [esp + 0x13]
mov byte [esi + edi], al
inc edi
mov dword [esp + 0x24], esi
mov dword [esp + 0x40], esi
mov byte [esi + edi], 0
jmp 0x40f656
cmp dword [esp + 0x58], 0
je 0x47431b
xor esi, esi
cmp ebx, dword [esp + 0x58]
je 0x47433d
mov eax, dword [esp + 0x54]
inc esi
mov al, byte [eax + ebx]
mov byte [esp + esi + 0x12], al
inc ebx
mov dword [esp + 0x5c], ebx
cmp esi, 1
jb 0x40f762
add dword [esp + 0x60], esi
adc dword [esp + 0x64], 0
test esi, esi
je 0x40f79a
cmp byte [esp + 0x13], 0xa
jne 0x47437c
mov esi, dword [esp + 0x24]
push 0
push 0
lea eax, [edi + 1]
push eax
push esi
push 1
push 0
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [esp + 0x18], eax
test eax, eax
je 0x474394
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042302a
add esp, 4
mov edi, eax
push dword [esp + 0x18]
push edi
push dword [esp + 0x1c]
push esi
push 1
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea esi, [eax - 1]
test esi, esi
je 0x40f844
cmp esi, 0xffffffff
je 0x40f844
test edi, edi
je 0x40f844
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx]
cmp eax, 1
jg 0x4743b1
lea eax, [esi + 1]
cmp dword [esp + 0x70], eax
jb 0x40f863
mov dword [esp + 0x6c], esi
add esi, esi
push esi
push edi
push dword [esp + 0x70]
call fcn.004229c0
mov eax, dword [esp + 0x74]
add esp, 0xc
xor ecx, ecx
push edi
mov word [eax + esi], cx
call fcn.0042309e
add esp, 4
jmp 0x4743a1
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0x70]
call fcn.0041005d
mov ebx, dword [esp + 0x5c]
push edi
call fcn.0042309e
add esp, 4
jmp 0x4743a1
push eax
call fcn.0040e544
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x70], eax
test ecx, ecx
je 0x40f882
push ecx
call fcn.0042309e
mov eax, dword [esp + 0x74]
add esp, 4
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042302a
add esp, 4
xor ecx, ecx
mov word [eax + esi*2], cx
mov dword [esp + 0x68], eax
jmp 0x40f818
push 0
lea eax, [esp + 0xbc]
push eax
push 0x10000
push dword [esp + 0x60]
push dword [esp + 0x60]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40f690
mov eax, dword [esp + 0xb8]
test eax, eax
je 0x40f690
mov dword [esp + 0x58], eax
xor ebx, ebx
jmp 0x40f67a
mov al, byte [esp + 0x12]
test al, al
jne 0x40f79a
mov edi, dword [esp + 0x14]
dec dword [edi]
jne 0x40f913
mov esi, dword [esp + 0x24]
push esi
call fcn.0042309e
add esp, 4
push edi
call fcn.0042309e
add esp, 4
xor al, al
mov edi, dword [esp + 0x88]
test al, al
je 0x40fb8a
mov esi, dword [esp + 0x6c]
cmp esi, 0xffe
ja 0x474403
push dword [esp + 0x68]
push edi
call fcn.00424863
inc dword [esp + 0x38]
add esp, 8
xor esi, esi
xor edi, edi
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x88]
movzx eax, word [edi + esi*2]
push eax
mov dword [esp + 0x1c], eax
call fcn.004251ed
add esp, 4
test eax, eax
je 0x40f97d
push dword [esp + 0x18]
call fcn.00425210
add esp, 4
test eax, eax
jne 0x40fc25
mov ecx, dword [esp + 0x88]
mov edi, dword [esp + 0x24]
movzx eax, word [ecx + esi*2]
test ax, ax
je 0x40f9a2
lea esi, [esi + 1]
mov word [ecx + edi*2], ax
movzx eax, word [ecx + esi*2]
inc edi
test ax, ax
jne 0x40f991
xor eax, eax
mov word [ecx + edi*2], ax
xor edi, edi
cmp word [ecx], 0x23
mov esi, ecx
je 0x40fd34
cmp word [esi], 0
je 0x40f9d5
lea esp, [esp]
movzx eax, word [esi]
cmp eax, 0x3b
jle 0x40fbf8
add esi, 2
cmp word [esi], 0
jne 0x40f9c0
test edi, edi
jne 0x40fd8d
push ecx
call fcn.0042481b
mov edi, dword [esp + 0x8c]
add esp, 4
test eax, eax
jne 0x40fc2b
push edi
mov byte [esp + 0x16], 0
call fcn.0042481b
mov esi, eax
add esp, 4
cmp esi, 2
jg 0x40fc67
cmp byte [esp + 0x23], 1
je 0x40fd1b
mov ebx, dword [esp + 0xd4]
push ebx
call fcn.0042481b
lea esi, [eax + 1]
add esp, 4
mov dword [esp + 0xa4], eax
test esi, esi
je 0x40fdc5
lea eax, [esi + 7]
and eax, 0xfffffff8
xor ecx, ecx
mov dword [esp + 0xa8], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004229b1
add esp, 4
lea ecx, [esi + esi]
push ecx
push ebx
push eax
mov dword [esp + 0xac], eax
call fcn.004229c0
add esp, 0xc
push 4
call fcn.0042302a
add esp, 4
test eax, eax
je 0x474451
mov dword [eax], 1
mov dword [esp + 0xac], eax
mov ebx, dword [esp + 0x2c]
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0xa8]
push eax
push edi
mov ecx, ebx
call fcn.0040fdd0
mov ecx, dword [esp + 0xac]
mov esi, eax
dec dword [ecx]
mov ecx, dword [esp + 0xac]
cmp dword [ecx], 0
jne 0x40fae8
push dword [esp + 0xa0]
call fcn.0042309e
add esp, 4
push dword [esp + 0xac]
call fcn.0042309e
add esp, 4
cmp esi, 3
jne 0x40fd60
cmp dword [ebx + 8], 0
je 0x40fd9b
mov eax, dword [ebx + 0xc]
mov eax, dword [eax]
cmp word [eax], 0
jne 0x40fca1
push eax
call fcn.0042309e
add esp, 4
dec dword [ebx + 0x10]
mov eax, dword [ebx + 0xc]
push edi
mov dword [eax + 0xc], 0
call fcn.0042481b
xor ecx, ecx
inc eax
add esp, 4
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042302a
add esp, 4
mov esi, eax
push edi
push esi
call fcn.00424863
mov ecx, dword [ebx + 0xc]
mov eax, dword [esp + 0x38]
mov dword [ecx], esi
mov ecx, dword [ebx + 0xc]
add esp, 8
mov dword [ecx + 4], eax
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebp + 0xc]
mov dword [eax + 8], ecx
inc dword [ebx + 0x10]
mov ebx, dword [esp + 0x5c]
mov al, byte [esp + 0x11]
cmp byte [esp + 0x12], 1
je 0x40fd2a
mov byte [esp + 0x23], 0
cmp al, 1
je 0x40f5b2
mov bl, byte [esp + 0x11]
lea ecx, [esp + 0x50]
call fcn.00402d8d
push dword [esp + 0x100]
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea ecx, [esp + 0x88]
call fcn.00402cf1
lea ecx, [esp + 0xd4]
call fcn.0040e281
lea ecx, [esp + 0x100]
call fcn.0040e281
lea ecx, [esp + 0x50]
call fcn.00402d63
mov al, bl
dec dword [0x4c4174]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp eax, 0x27
je 0x40fcb9
cmp eax, 0x22
je 0x40fcd7
cmp eax, 0x3b
jne 0x40f9cc
test edi, edi
jne 0x40fd01
xor eax, eax
mov word [esi], ax
jmp 0x40f9dd
inc esi
jmp 0x40f954
lea esi, [eax - 1]
test esi, esi
js 0x40fc5b
movzx eax, word [edi + esi*2]
push eax
mov dword [esp + 0x1c], eax
call fcn.004251ed
add esp, 4
test eax, eax
je 0x40fc5b
push dword [esp + 0x18]
call fcn.00425210
add esp, 4
test eax, eax
jne 0x40fcee
xor eax, eax
mov word [edi + esi*2 + 2], ax
jmp 0x40f9f5
mov cx, word [edi + esi*2 - 4]
and cx, 0x7f
movzx ecx, cx
push ecx
call fcn.00425210
add esp, 4
test eax, eax
je 0x40fa0e
cmp word [edi + esi*2 - 2], 0x5f
jne 0x40fa0e
xor eax, eax
mov word [edi + esi*2 - 2], ax
mov byte [esp + 0x12], 1
jmp 0x40fa0e
push 0x10
call fcn.0042302a
mov ecx, dword [ebx + 0xc]
add esp, 4
mov dword [ecx + 0xc], eax
mov dword [ebx + 0xc], eax
jmp 0x40fb16
cmp edi, 1
je 0x40fcd0
test edi, edi
jne 0x40f9cc
mov edi, 1
jmp 0x40f9cc
xor edi, edi
jmp 0x40f9cc
cmp edi, 2
je 0x40fd14
test edi, edi
jne 0x40f9cc
mov edi, 2
jmp 0x40f9cc
dec esi
jns 0x40fc32
xor eax, eax
mov word [edi + esi*2 + 2], ax
jmp 0x40f9f5
cmp edi, 3
jne 0x40f9cc
xor eax, eax
mov word [esi], ax
jmp 0x40f9dd
xor edi, edi
jmp 0x40f9cc
mov ecx, dword [esp + 0x2c]
push edi
call fcn.0040f2b0
jmp 0x40fb6e
mov byte [esp + 0x23], 1
jmp 0x40fb82
push 8
push 0x49fe60
push ecx
call fcn.0042539b
mov ecx, dword [esp + 0x94]
add esp, 0xc
test eax, eax
je 0x40f9b6
mov edi, 3
lea esi, [ecx + 2]
jmp 0x40f9b6
sub esi, 0
je 0x474461
sub esi, 2
je 0x40faf1
mov ebx, dword [esp + 0x5c]
mov al, byte [esp + 0x11]
sub esi, 2
jne 0x40fb72
mov byte [esp + 0x2b], 0
jmp 0x40fb72
cmp edi, 3
je 0x40f9dd
jmp 0x474470
push 0x10
call fcn.0042302a
add esp, 4
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], eax
jmp 0x40fb16
xor ecx, ecx
mov dword [esp + 0x14], ecx
jmp 0x40f63c
mov eax, 0x10
jmp 0x40f706
mov eax, 8
jmp 0x40fa41
push dword [ebp + 0x14]
push str.include_depth_exceeded.__Make_sure_there_are_no_recursive_includes
push dword [ebp + 0x18]
push dword [ebp + 0x10]
call fcn.00446011
xor al, al
jmp 0x40fbe9
push dword [ebp + 0x14]
mov ecx, esi
push str.Error_opening_the_file
push dword [ebp + 0x18]
push dword [ebp + 0x10]
call fcn.00446011
xor bl, bl
jmp 0x40fbde
cmp dword [esp + 0x144], 0xa9393035
jne 0x40f523
lea ecx, [esp + 0x50]
call fcn.00402d8d
push 2
push dword [ebx]
lea ecx, [esp + 0xec]
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0xf8], 0
mov dword [esp + 0xfc], 0
mov byte [esp + 0x100], 0
call fcn.004025f0
test eax, eax
jne 0x473dc4
lea eax, [esp + 0xfc]
push eax
lea eax, [esp + 0x98]
push eax
push 0x4b54f8
lea ecx, [esp + 0xf0]
call fcn.0044f1da
lea ecx, [esp + 0xe4]
test eax, eax
je 0x473de2
call fcn.0040265b
push dword [ebp + 0x14]
mov ecx, dword [esp + 0x30]
push str.Error_opening_the_file
push dword [ebp + 0x18]
push dword [ebp + 0x10]
call fcn.00446011
xor bl, bl
jmp 0x40fbc6
call fcn.0040265b
mov ebx, dword [esp + 0x94]
push 0x10
mov eax, dword [ebx]
mov dword [esp + 0x34], eax
or eax, 0xffffffff
mov esi, 4
mov word [esp + 0x40], ax
mov dword [esp + 0xc8], 0x49ff60
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call fcn.0042302a
mov edi, eax
add esp, 4
test edi, edi
je 0x473e5a
mov dword [edi], 0x49ff60
mov dword [edi + 4], 0
mov dword [edi + 8], 0
mov dword [edi + 0xc], 0
jmp 0x473e5c
xor edi, edi
or eax, 0xffffffff
push 5
lea ecx, [esp + 0x38]
mov dword [esp + 0xa0], edi
mov word [esp + 0x42], ax
call fcn.0040dcfe
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x34]
push eax
mov ecx, edi
call fcn.0040db70
cmp dword [esp + 0x30], 1
mov dword [esp + 0x24], 0
mov dword [esp + 0x18], 1
jl 0x474099
lea eax, [esi + ebx]
inc esi
movzx eax, byte [eax]
push eax
lea ecx, [esp + 0x38]
mov dword [esp + 0x9c], esi
mov dword [esp + 0x94], eax
call fcn.0040dcfe
lea ecx, [esp + 0x34]
call fcn.0044cb28
test al, al
je 0x473ee2
lea eax, [esi + ebx]
add esi, 4
mov eax, dword [eax]
mov dword [esp + 0x34], eax
jmp 0x474024
lea ecx, [esp + 0x34]
call fcn.0044cb12
test al, al
je 0x473f08
mov eax, dword [esi + ebx]
lea ecx, [esi + ebx]
mov dword [esp + 0x34], eax
mov eax, dword [ecx + 4]
add esi, 8
mov dword [esp + 0x38], eax
jmp 0x474024
lea ecx, [esp + 0x34]
call fcn.0044cafc
test al, al
je 0x473f27
fld qword [esi + ebx]
lea eax, [esi + ebx]
fstp qword [esp + 0x34]
add esi, 8
jmp 0x474024
lea ecx, [esp + 0x34]
call fcn.0040e98b
test al, al
je 0x474024
lea eax, [esp + 0x98]
push eax
push ebx
call fcn.00445fad
mov ebx, eax
mov eax, dword [esp + 0x90]
push ebx
cmp eax, 0x31
jne 0x473f93
lea ecx, [esp + 0x114]
call fcn.00405039
mov eax, dword [esp + 0x2c]
push dword [esp + 0x110]
mov ecx, dword [eax + 4]
mov edx, dword [ecx]
call dword [edx + 4]
lea ecx, [esp + 0x110]
mov esi, eax
call fcn.0040e281
push 1
lea ecx, [esp + 0x38]
call fcn.0040dcfe
mov dword [esp + 0x34], esi
jmp 0x47400d
cmp eax, 0x30
jne 0x473fd0
lea ecx, [esp + 0x124]
call fcn.00405039
lea eax, [esp + 0x120]
push eax
call fcn.004463e5
lea ecx, [esp + 0x120]
mov esi, eax
call fcn.0040e281
push 0
lea ecx, [esp + 0x38]
call fcn.0040dcfe
mov dword [esp + 0x34], esi
jmp 0x47400d
cmp eax, 0x37
jne 0x474004
mov esi, dword [esp + 0x30]
mov ecx, esi
call fcn.00445ece
test eax, eax
je 0x4740f4
push ebx
call fcn.0042309e
mov esi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x98]
add esp, 4
jmp 0x473ea5
lea ecx, [esp + 0x38]
call fcn.0044ca8f
push ebx
call fcn.0042309e
mov esi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x98]
add esp, 4
lea eax, [esp + 0x34]
push eax
mov ecx, edi
call fcn.0040db70
cmp dword [esp + 0x90], 0x7f
jne 0x473ea5
mov ecx, dword [edi + 8]
cmp ecx, 2
jbe 0x47407f
mov eax, dword [edi + 4]
mov eax, dword [eax + ecx*4 - 8]
cmp word [eax + 8], 0x7f
je 0x47407f
inc dword [esp + 0x24]
mov eax, 0x3b
mov word [esp + 0x90], ax
push 0xffffffffffffffff
lea eax, [esp + 0x94]
push eax
mov eax, dword [esp + 0x34]
mov ecx, eax
push dword [eax + 0x10]
call fcn.00445e5c
jmp 0x474086
mov ecx, edi
call fcn.004463c0
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, dword [esp + 0x30]
jle 0x473ea5
push 5
lea ecx, [esp + 0x38]
call fcn.0040dcfe
mov eax, dword [esp + 0x24]
mov ecx, dword [edi + 4]
mov dword [esp + 0x34], eax
mov ecx, dword [ecx]
lea eax, [esp + 0x34]
push eax
call fcn.0044c9ef
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x9c]
push eax
lea ecx, [ecx + 0x50]
call fcn.00463787
push ebx
call fcn.004257ea
add esp, 4
mov bl, 1
lea ecx, [esp + 0xc4]
call fcn.0040f1e0
lea ecx, [esp + 0x34]
call fcn.0044c9d9
jmp 0x40fbc6
mov eax, dword [esp + 0x18]
push 0x49fc00
push str.Bad_directive_syntax_error
push eax
push dword [ebp + 8]
mov ecx, esi
call fcn.00446011
push ebx
call fcn.0042309e
add esp, 4
push dword [esp + 0x94]
call fcn.004257ea
add esp, 4
xor bl, bl
jmp 0x4740da
dec eax
mov dword [ecx], eax
lea ecx, [esp + 0x68]
call fcn.0041276a
xor ecx, ecx
mov eax, 8
mul esi
seto cl
mov dword [esp + 0x70], 8
neg ecx
or ecx, eax
push ecx
call fcn.004229b1
mov ebx, dword [esp + 0x60]
add esp, 4
mov dword [esp + 0x68], eax
jmp 0x40f5d6
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x54]
call fcn.0044956b
mov ebx, dword [esp + 0x5c]
jmp 0x40f91c
dec eax
mov dword [ecx], eax
lea ecx, [esp + 0x40]
call fcn.0041276a
mov eax, 0x10
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], eax
call fcn.0042302a
mov ecx, dword [esp + 0x50]
mov esi, eax
add esp, 4
mov dword [esp + 0x24], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x14], ecx
jmp 0x40f64b
lea ecx, [esp + 0x50]
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
call fcn.004029e6
mov ebx, dword [esp + 0x5c]
jmp 0x40f665
dec eax
mov dword [ecx], eax
lea ecx, [esp + 0x40]
call fcn.0041276a
mov edi, dword [esp + 0x44]
lea eax, [edi + 2]
push eax
call fcn.00412931
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], eax
call fcn.0042302a
add esp, 4
lea ecx, [edi + 1]
push ecx
push dword [esp + 0x44]
mov esi, eax
push esi
mov dword [esp + 0x30], esi
call fcn.004229c0
mov ecx, dword [esp + 0x58]
add esp, 0xc
mov dword [esp + 0x40], esi
mov dword [esp + 0x14], ecx
jmp 0x40f6d6
cmp eax, 0x2000000
jae 0x474275
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
test eax, eax
jns 0x474240
fadd qword [0x4b8a00]
fstp qword [esp + 0x18]
fld qword [esp + 0x18]
fmul qword [0x4b48d8]
fnstcw word [esp + 0x14]
movzx eax, word [esp + 0x14]
or eax, 0xc00
mov dword [esp + 0x18], eax
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov eax, dword [esp + 0x18]
fldcw word [esp + 0x14]
jmp 0x474302
cmp eax, 0x8000000
jae 0x4742c0
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
test eax, eax
jns 0x47428e
fadd qword [0x4b8a00]
fstp qword [esp + 0x18]
fld qword [esp + 0x18]
fmul qword [0x4b48d0]
fnstcw word [esp + 0x14]
movzx eax, word [esp + 0x14]
or eax, 0xc00
mov dword [esp + 0x18], eax
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov eax, dword [esp + 0x18]
fldcw word [esp + 0x14]
jmp 0x474302
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
test eax, eax
jns 0x4742d2
fadd qword [0x4b8a00]
fstp qword [esp + 0x18]
fld qword [esp + 0x18]
fmul qword [0x4b48c8]
fnstcw word [esp + 0x14]
movzx eax, word [esp + 0x14]
or eax, 0xc00
mov dword [esp + 0x18], eax
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov eax, dword [esp + 0x18]
fldcw word [esp + 0x14]
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x14], ecx
jmp 0x40f6f8
lea ecx, [esp + 0x50]
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
call fcn.004029e6
mov ebx, dword [esp + 0x5c]
jmp 0x40f760
push 0
lea eax, [esp + 0xb4]
push eax
push 0x10000
push dword [esp + 0x60]
push dword [esp + 0x60]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40f782
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x40f782
mov dword [esp + 0x58], eax
xor ebx, ebx
jmp 0x40f76c
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
lea ecx, [esp + 0x5c]
call fcn.00402b18
mov ebx, dword [esp + 0x5c]
jmp 0x40f79a
lea ecx, [esp + 0x68]
call fcn.0040e3ef
mov ebx, dword [esp + 0x5c]
lea ecx, [esp + 0x40]
call fcn.004125d5
mov al, 1
jmp 0x40f915
dec eax
mov dword [ecx], eax
lea ecx, [esp + 0x68]
call fcn.0041276a
lea eax, [esi + 1]
push eax
call fcn.0040e544
xor ecx, ecx
mov dword [esp + 0x70], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042302a
mov ebx, dword [esp + 0x60]
add esp, 4
jmp 0x40f8a1
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x54]
call fcn.0044946d
mov ebx, dword [esp + 0x5c]
jmp 0x40f91c
lea ecx, [esp + 0x68]
add esi, 0xfffff002
call fcn.00405249
mov edi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
sub edi, esi
lea eax, [edi*2 - 0x1ffa]
push eax
lea eax, [ecx + 0x1ffc]
lea eax, [eax + esi*2]
push eax
lea eax, [ecx + 0x1ffc]
push eax
call fcn.004229c0
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x78], edi
mov edi, dword [esp + 0x94]
add esp, 0xc
jmp 0x40f934
mov dword [esp + 0xac], 0
jmp 0x40fa95
mov ebx, dword [esp + 0x5c]
xor al, al
mov byte [esp + 0x11], al
jmp 0x40fb72
push ecx
mov ecx, dword [esp + 0x30]
push str.Unterminated_string
push dword [esp + 0x38]
push dword [ebp + 0x10]
call fcn.00446011
xor bl, bl
jmp 0x40fb8e