Function at 0x425871
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
or dword [ebp - 0xc], 0xffffffff
push ebx
push esi
push edi
push 0x238e
xor ebx, ebx
or esi, 0xffffffff
push 0x640
mov dword [ebp - 0x30], ebx
call fcn.00401224
mov edi, eax
mov dword [ebp - 0x3c], edi
test edi, edi
je 0x4262f2
push dword [ebp + 0xc]
lea eax, [edi + 0x410]
mov dword [ebp - 0x34], eax
add eax, 0x50
mov dword [ebp - 8], eax
add eax, 0x50
mov dword [ebp - 0x14], eax
add eax, 0x50
mov dword [ebp - 0x10], eax
call fcn.00403c19
mov dword [ebp - 0x24], eax
cmp eax, esi
jne 0x4258f0
push dword [ebp + 0xc]
push 2
call fcn.004047a7
push eax
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push ebx
push edi
push dword [ebp + 8]
call fcn.004031cc
jmp 0x4262ef
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
push 0x238f
lea eax, [esi + 0x64]
imul eax, eax, 3
push eax
call fcn.00401224
mov dword [ebp - 0x30], eax
test eax, eax
je 0x4262ef
push esi
lea ebx, [eax + 0x64]
push eax
add ebx, esi
mov esi, dword [ebp - 0x24]
push esi
call fcn.00403bef
test eax, eax
jns 0x425950
push dword [ebp + 0xc]
push 4
call fcn.004047a7
push eax
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
xor ebx, ebx
push ebx
push edi
push dword [ebp + 8]
call fcn.004031cc
jmp 0x4262f2
mov ecx, dword [ebp - 0x30]
push esi
mov byte [eax + ecx], 0
call fcn.00403bb4
push dword [ebp + 0x10]
or dword [ebp - 0x24], 0xffffffff
call fcn.00403bd1
mov ecx, eax
mov dword [ebp - 0xc], ecx
cmp ecx, 0xffffffff
jne 0x42598f
push dword [ebp + 0x10]
push 3
call fcn.004047a7
push eax
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
xor ebx, ebx
jmp 0x4258e1
mov edx, dword [ebp - 0x10]
xor eax, eax
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x28], eax
mov byte [edx + 0xf0], al
mov byte [edx + 0xa0], al
mov byte [edx + 0x50], al
mov edx, dword [ebp - 8]
mov byte [ebx], al
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 4], eax
mov dword [ebp + 0x10], edi
mov byte [edx + 0x50], al
xor edx, edx
inc edx
cld
mov esi, dword [ebp + 0x10]
lodsb al, byte [esi]
cmp al, 0x20
je 0x4259ca
cmp al, 9
je 0x4259ca
cmp al, 0xd
je 0x4259db
cmp al, 0xa
jne 0x4259f6
cmp dword [ebp - 0x20], 0
jne 0x4259e7
cmp dword [ebp - 0x18], 0
je 0x4259f6
push edx
push ebx
push ecx
call fcn.00407fa5
xor eax, eax
mov byte [ebx], al
mov dword [ebp - 0x18], eax
push edi
call fcn.00406c0a
mov dword [ebp + 0x10], eax
cmp byte [eax], 0
je 0x4262d5
cld
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp - 8]
mov ecx, 0x50
dec ecx
lodsb al, byte [esi]
cmp al, 0
je 0x425a41
cmp al, 0x24
je 0x425a3a
cmp al, 0x5f
je 0x425a3a
cmp al, 0x7a
ja 0x425a41
cmp al, 0x61
jae 0x425a3a
cmp al, 0x5a
ja 0x425a41
cmp al, 0x41
jae 0x425a3a
cmp al, 0x39
ja 0x425a41
cmp al, 0x30
jb 0x425a41
jcxz 0x425a15
dec ecx
stosb byte es:[edi], al
jmp 0x425a15
mov al, 0
stosb byte es:[edi], al
dec esi
mov eax, esi
mov esi, dword [ebp - 8]
mov edi, eax
mov dword [ebp + 0x10], edi
cmp byte [esi], 0
je 0x425c18
cmp byte [ebx], 0
jne 0x425b18
push str.switch
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
mov esi, dword [ebp - 0x10]
test eax, eax
jne 0x425a94
mov ecx, dword [ebp - 0x1c]
mov al, byte [ebp - 4]
inc ecx
inc al
mov dword [ebp - 0x1c], ecx
mov byte [ecx + esi + 0xa0], al
xor eax, eax
mov byte [ecx + esi + 0xf0], al
mov byte [ecx + esi + 0x50], al
mov edx, dword [ebp - 8]
push edx
call fcn.00425841
test eax, eax
je 0x425ab3
mov eax, dword [ebp - 0x1c]
cmp byte [eax + esi + 0x50], 0
je 0x425ab3
dec dword [ebp - 4]
mov byte [eax + esi + 0x50], 0
cmp byte [ebp + 0xb], 0x7b
je 0x425ad1
push dword [ebp - 8]
call fcn.00425841
test eax, eax
je 0x425ad1
push 0x4284ec
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
cmp dword [ebp - 0x20], 0
je 0x425ae4
cmp byte [edi], 0x3a
je 0x425ae4
mov esi, dword [ebp - 4]
add esi, 2
jmp 0x425ae7
mov esi, dword [ebp - 4]
push ebx
call fcn.00404c27
push eax
push esi
push 0
call fcn.00426c71
push dword [ebp - 8]
call fcn.00425841
mov esi, dword [ebp - 0x14]
test eax, eax
je 0x425b28
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 4], eax
mov byte [ecx + esi + 0xa0], al
jmp 0x425b28
mov esi, dword [ebp - 0x14]
cmp byte [esi], 0
je 0x425b28
push 0x20
push ebx
call fcn.00401000
push dword [ebp - 8]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
cmp dword [ebp - 0x20], 0
je 0x425b72
xor edx, edx
inc edx
push edx
push ebx
call fcn.00406c0a
push eax
call fcn.00406126
cmp byte [eax], 0
jne 0x425ba3
cmp byte [edi], 0x3a
je 0x425ba3
push ebx
call fcn.00404c27
push eax
push 0x18
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0
call fcn.00426cb7
mov edx, dword [ebp - 8]
mov byte [edx], 0
jmp 0x425ba6
cmp dword [ebp - 0x18], 0
je 0x425ba3
push 0x429884
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
jne 0x425ba3
cmp byte [edi], 0x28
je 0x425ba3
push ebx
call fcn.00404c27
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push ebx
call esi
push eax
push ebx
call esi
jmp 0x425b62
mov edx, dword [ebp - 8]
push 0x429790
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
mov ecx, dword [ebp - 0x2c]
test eax, eax
push 1
pop eax
push str._asm
push dword [ebp - 8]
cmove ecx, eax
mov dword [ebp - 0x2c], ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
mov ecx, dword [ebp - 0x20]
test eax, eax
push 1
pop eax
cmove ecx, eax
push ebx
mov dword [ebp - 0x20], ecx
call fcn.00406c0a
mov esi, eax
push str.pragma
push esi
call fcn.004024c5
test eax, eax
jne 0x425c0f
inc eax
push eax
push eax
push esi
call fcn.00406126
push eax
call fcn.00406126
cmp byte [eax], 0
jne 0x425c0f
push 0x20
push ebx
call fcn.00401000
mov byte [ebp + 0xf], 0
jmp 0x4262bb
mov al, byte [edi]
lea esi, [edi + 1]
mov dl, byte [esi]
mov byte [ebp + 0xf], al
movsx eax, al
mov dword [ebp - 0x38], esi
cmp eax, 0x2f
jg 0x425f23
je 0x425d97
sub eax, 0x22
je 0x425d8f
sub eax, 1
je 0x425d6e
push 4
pop ecx
sub eax, ecx
je 0x425d4d
sub eax, 1
je 0x425ce4
sub eax, 1
je 0x425c88
sub eax, 3
jne 0x426261
push 0x2c
push ebx
call fcn.00401000
cmp dword [ebp - 0x20], 0
jne 0x425c81
push 0x20
push ebx
call fcn.00401000
mov edi, esi
jmp 0x4262b8
push 0x29
push ebx
call fcn.00401000
sub dword [ebp - 0x28], 1
mov edi, esi
mov dword [ebp + 0x10], edi
jne 0x4262bb
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0
je 0x425cd4
cld
mov esi, dword [ebp + 0x10]
lodsb al, byte [esi]
cmp al, 0
je 0x425cb4
cmp al, 0x20
jbe 0x425cab
cmp al, 0x5f
je 0x425ccc
cmp al, 0x24
je 0x425ccc
cmp al, 0x41
jl 0x425cc4
cmp al, 0x5a
jle 0x425ccc
cmp al, 0x61
jl 0x425cd4
cmp al, 0x7a
jg 0x425cd4
push 0x20
push ebx
call fcn.00401000
mov ecx, dword [ebp - 0x14]
xor eax, eax
mov dword [ebp - 0x2c], eax
mov byte [ecx + 0x50], al
jmp 0x4262bb
mov ecx, dword [ebp - 0x28]
mov eax, ecx
mov edi, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x28], ecx
test eax, eax
jne 0x425cfe
push edi
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x429784
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x425d3e
push 0x429790
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x425d3e
push str.while
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x425d3e
push str.switch
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
jne 0x425d46
push 0x20
push ebx
call fcn.00401000
push 0x28
jmp 0x425c7b
push edi
call fcn.00426c13
mov esi, eax
mov eax, esi
sub eax, edi
inc eax
push eax
push edi
push ebx
call fcn.00404c27
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x425c81
cmp byte [ebx], 0
jne 0x426271
push ebx
push dword [ebp - 4]
xor eax, eax
inc eax
push 0
mov dword [ebp - 0x18], eax
call fcn.00426c71
push 0x23
jmp 0x425c7b
push edi
call fcn.00426c42
jmp 0x425d53
cmp dl, 0x2a
jne 0x425e8a
push edi
call fcn.00426bad
mov esi, eax
sub esi, edi
cmp dword [ebp + 0x14], 0
mov dword [ebp + 8], esi
jne 0x4262b6
push esi
push 0xa
push edi
call fcn.0040684e
test eax, eax
jle 0x425deb
lea eax, [esi + 1]
push eax
push edi
push ebx
call fcn.00404c27
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
xor eax, eax
inc eax
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00407fa5
mov byte [ebx], 0
jmp 0x4262b6
lea eax, [edi + esi]
mov dword [ebp + 0x10], eax
cld
mov esi, dword [ebp + 0x10]
lodsb al, byte [esi]
cmp al, 0x20
je 0x425df5
cmp al, 9
je 0x425df5
cmp al, 0xd
je 0x425e20
cmp al, 0xa
je 0x425e20
mov esi, dword [ebp + 8]
lea eax, [esi + 1]
push eax
push edi
push ebx
call fcn.00404c27
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x4262b6
cmp byte [ebx], 0
push ebx
je 0x425e3f
call fcn.00404c27
push eax
push 0x50
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0
call fcn.00426cb7
jmp 0x425e49
push dword [ebp - 4]
push 0
call fcn.00426c71
push 0x2f
push ebx
call fcn.00401000
push 0x2f
push ebx
call fcn.00401000
mov esi, dword [ebp + 8]
lea eax, [esi - 3]
push eax
lea eax, [edi + 2]
push eax
push ebx
call fcn.00404c27
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
xor eax, eax
inc eax
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00407fa5
xor eax, eax
mov byte [ebx], al
mov dword [ebp - 0x18], eax
jmp 0x4262b6
cmp dl, 0x2f
jne 0x425ed3
push edi
call fcn.00426bd5
mov esi, eax
sub esi, edi
cmp dword [ebp + 0x14], 0
jne 0x4262b6
cmp byte [ebx], 0
push ebx
je 0x425ec2
call fcn.00404c27
push eax
push 0x50
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0
call fcn.00426cb7
jmp 0x425ecc
push dword [ebp - 4]
push 0
call fcn.00426c71
lea eax, [esi + 1]
push eax
push edi
jmp 0x425e64
cmp byte [ebp + 0xb], 0x29
je 0x425f1c
mov eax, dword [ebp - 0x14]
cmp byte [eax], 0
jne 0x425f1c
xor dh, dh
jmp 0x425eff
cmp dl, 0x2f
jne 0x425eef
cmp dh, 0x5c
jne 0x425f10
xor ecx, ecx
movzx eax, dl
cmp dh, 0x5c
cmovne ecx, eax
inc esi
mov dh, cl
mov dl, byte [esi]
test dl, dl
jne 0x425ee5
jmp 0x425d55
cmp al, 0x7a
ja 0x425d55
inc esi
mov al, byte [esi]
cmp al, 0x61
jae 0x425f08
jmp 0x425d55
push 0x2f
jmp 0x425c7b
sub eax, 0x3a
je 0x4261cc
sub eax, 1
je 0x426179
sub eax, 0x21
je 0x426140
sub eax, 0x1f
je 0x42603f
dec eax
sub eax, 1
jne 0x426261
cmp dword [ebp - 0x18], eax
je 0x425f5d
push 0x7d
jmp 0x425c7b
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x1c]
mov ecx, dword [ebp - 4]
movzx eax, byte [edi + edx + 0x50]
cmp eax, ecx
jne 0x425f7d
cmp byte [edi + edx + 0xf0], 0
jne 0x425f7d
dec ecx
mov dword [ebp - 4], ecx
and dword [ebp - 0x20], 0
cmp byte [ebx], 0
je 0x425f96
xor eax, eax
inc eax
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00407fa5
mov ecx, dword [ebp - 4]
push ebx
push ecx
push 0
call fcn.00426c71
push 0x7d
push ebx
call fcn.00401000
push esi
call fcn.00406c0a
mov edi, eax
mov dword [ebp + 0x10], edi
mov cl, byte [edi]
mov byte [ebp + 0xb], cl
cmp cl, 0x3b
jne 0x425fc0
push 0x3b
jmp 0x425fc7
cmp cl, 0x2c
jne 0x425fd4
push 0x2c
push ebx
call fcn.00401000
mov cl, byte [ebp + 0xb]
inc edi
mov dword [ebp + 0x10], edi
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
movzx eax, byte [esi + eax + 0x50]
cmp eax, edx
mov eax, dword [ebp - 0x10]
jne 0x425ffd
cmp byte [esi + eax + 0xf0], 0
je 0x425ffd
mov byte [esi + eax + 0xf0], 0
jmp 0x426015
movzx eax, byte [esi + eax + 0xa0]
cmp eax, edx
jne 0x42600d
dec esi
mov dword [ebp - 0x1c], esi
test edx, edx
jle 0x426017
dec edx
mov dword [ebp - 4], edx
test edx, edx
je 0x426022
cmp cl, 0x2f
je 0x4262bb
xor eax, eax
inc eax
test edx, edx
push 4
pop ecx
cmove eax, ecx
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00407fa5
mov byte [ebx], 0
jmp 0x4262bb
cmp dword [ebp - 0x18], 0
je 0x42604c
push 0x7b
jmp 0x425c7b
mov dword [ebp + 8], esi
cld
mov esi, dword [ebp + 8]
lodsb al, byte [esi]
cmp al, 0
je 0x42605c
cmp al, 0x20
jbe 0x426053
mov edi, dword [ebp - 0x14]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpA]
push 0x429794
push edi
mov byte [ebp + 0xb], al
call esi
test eax, eax
jne 0x4260b5
push 0x20
push ebx
call fcn.00401000
push 0x20
push ebx
call fcn.00401000
push 0x7b
push ebx
call fcn.00401000
cmp byte [ebp + 0xb], 0x2f
je 0x4260a2
xor eax, eax
inc eax
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00407fa5
mov byte [ebx], 0
inc dword [ebp - 4]
mov edi, dword [ebp - 0x38]
push edi
call fcn.00406c0a
mov edi, eax
jmp 0x4262b8
push str.else
push edi
call esi
test eax, eax
je 0x426084
push str._asm
push edi
call esi
test eax, eax
je 0x426084
push str.return
push edi
call esi
test eax, eax
je 0x426084
cmp byte [ebx], 0
mov esi, dword [ebp - 0xc]
je 0x4260ec
xor eax, eax
inc eax
push eax
push ebx
push esi
call fcn.00407fa5
push edi
call fcn.00425841
test eax, eax
je 0x42610b
mov eax, dword [ebp - 0x10]
xor edx, edx
mov ecx, dword [ebp - 0x1c]
inc edx
mov byte [ecx + eax + 0xf0], dl
mov eax, dword [ebp - 4]
jmp 0x426112
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
push ebx
push eax
push 0
call fcn.00426c71
push 0x7b
push ebx
call fcn.00401000
cmp byte [ebp + 0xb], 0x2f
je 0x4260a5
xor eax, eax
inc eax
push eax
push ebx
push esi
call fcn.00407fa5
mov byte [ebx], 0
jmp 0x4260a5
cmp dl, 0xd
je 0x42614e
cmp dl, 0xa
jne 0x426261
push 0x5c
push ebx
call fcn.00401000
xor eax, eax
inc eax
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00407fa5
mov eax, dword [ebp - 4]
xor ecx, ecx
push ebx
inc eax
mov byte [ebx], cl
push eax
push ecx
call fcn.00426c71
push esi
jmp 0x4260a9
push 0x3b
push ebx
call fcn.00401000
mov edi, esi
mov dword [ebp + 0x10], edi
cld
mov esi, dword [ebp + 0x10]
lodsb al, byte [esi]
cmp al, 0
je 0x426193
cmp al, 0x20
jbe 0x42618a
cmp dword [ebp - 0x18], 0
jne 0x4261af
cmp dword [ebp - 0x2c], 0
je 0x4261bc
cmp al, 0x29
je 0x4262bb
cmp al, 0x3b
je 0x4262bb
push 0x20
push ebx
call fcn.00401000
jmp 0x4262bb
cmp al, 0x2f
je 0x4262bb
xor eax, eax
inc eax
jmp 0x42602d
push ebx
call fcn.00406c0a
mov dword [ebp + 8], eax
cld
mov esi, dword [ebp + 8]
mov edi, dword [ebp - 0x34]
mov ecx, 0x50
dec ecx
lodsb al, byte [esi]
cmp al, 0
je 0x42620e
cmp al, 0x24
je 0x426207
cmp al, 0x5f
je 0x426207
cmp al, 0x7a
ja 0x42620e
cmp al, 0x61
jae 0x426207
cmp al, 0x5a
ja 0x42620e
cmp al, 0x41
jae 0x426207
cmp al, 0x39
ja 0x42620e
cmp al, 0x30
jb 0x42620e
jcxz 0x4261e2
dec ecx
stosb byte es:[edi], al
jmp 0x4261e2
mov al, 0
stosb byte es:[edi], al
dec esi
mov eax, esi
mov edi, dword [ebp - 0x34]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpA]
push str.case
push edi
call esi
test eax, eax
je 0x426233
push edi
push dword [ebp - 0x14]
call esi
test eax, eax
jne 0x42625e
mov edi, dword [ebp - 0x38]
mov dword [ebp + 8], edi
cld
mov esi, dword [ebp + 8]
lodsb al, byte [esi]
cmp al, 0
je 0x426246
cmp al, 0x20
jbe 0x42623d
cmp al, 0x2f
je 0x42625e
cmp al, 0x3b
je 0x42625e
push 0x3a
push ebx
call fcn.00401000
mov dword [ebp + 0x10], edi
jmp 0x4261c4
mov edi, dword [ebp + 0x10]
cmp byte [ebx], 0
jne 0x426271
push ebx
push dword [ebp - 4]
push 0
call fcn.00426c71
mov al, byte [ebp + 0xf]
xor ecx, ecx
inc ecx
mov esi, ecx
cmp al, 0x26
je 0x426281
cmp al, 0x7c
jne 0x426295
xor esi, esi
inc esi
cmp byte [edi + esi], al
je 0x426283
cmp esi, ecx
jle 0x426295
push 0x20
push ebx
call fcn.00401000
lea eax, [esi + 1]
push eax
push edi
push ebx
call fcn.00404c27
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
xor eax, eax
inc eax
cmp esi, eax
jle 0x4262b6
push 0x20
push ebx
call fcn.00401000
add edi, esi
mov dword [ebp + 0x10], edi
push dword [ebp - 8]
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov al, byte [ebp + 0xf]
mov ecx, dword [ebp - 0xc]
mov byte [ebp + 0xb], al
jmp 0x4259c3
cmp byte [ebx], 0
je 0x4262e7
xor eax, eax
inc eax
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00407fa5
mov edi, dword [ebp - 0x3c]
xor eax, eax
lea ebx, [eax + 1]
mov esi, dword [ebp - 0x24]
push esi
call fcn.00403bb4
push dword [ebp - 0xc]
call fcn.00403bb4
push edi
call fcn.00403dae
push dword [ebp - 0x30]
call fcn.00403dae
pop edi
pop esi
mov eax, ebx
pop ebx
leave
ret 0x10