Function at 0x403005
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb4
push esi
push edi
push ebx
mov esi, 0x6e
mov eax, esi
imul eax, eax, 0x19822b73
mov edi, eax
cmp esi, 0x6e
jge 0x403037
mov eax, edi
add eax, esi
push eax
mov edx, esi
sub edx, edx
add edx, esi
push edx
call dword [sym.imp.GDI32.dll_CreatePen]
cmp edi, 0xf5eeab6a
je 0x403042
push edi
call ebx
mov ecx, edi
xor ecx, esi
sub ecx, 0xf5eeab04
push ecx
mov eax, edi
xor eax, esi
sub eax, 0xf5eeab04
push eax
push 0
mov ecx, esi
imul ecx, edi
add ecx, 0x53725874
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov edi, eax
test edi, edi
je 0x40307b
call dword [sym.imp.MSVCRT.dll__except_handler3]
mov ecx, edi
and ecx, ecx
sub esi, ecx
mov edx, edi
sub edx, esi
add edx, 0x6e
push edx
mov ecx, edi
add ecx, esi
sub ecx, 0x6e
push ecx
push 0
mov eax, esi
xor eax, edi
sub eax, 0x6e
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov esi, eax
test esi, esi
je 0x4030b1
call dword [sym.imp.MSVCRT.dll__except_handler3]
mov edx, edi
xor edx, esi
add edx, 0x4e9729db
mov ecx, 0x4ed2a9d7
xor ecx, edx
mov dword [ebp - 4], ecx
mov edx, esi
sub edx, 1
mov esi, edx
mov edx, edi
sub edx, esi
sub edx, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + edx*4]
mov dword [ebp - 8], eax
mov eax, edi
mov byte [ebp - 0xc], al
movzx eax, byte [ebp - 0xc]
imul eax, edi
mov ecx, dword [ebp - 8]
add ecx, eax
mov dword [ebp - 0x10], ecx
mov eax, edi
mov byte [ebp - 0xc], al
mov ecx, edi
movzx eax, byte [ebp - 0xc]
and ecx, eax
push ecx
movzx eax, byte [ebp - 0xc]
or eax, edi
push eax
push 0
mov edx, edi
sub edx, esi
sub edx, 1
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov edi, eax
test edi, edi
je 0x403125
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx edx, byte [ebp - 0xc]
xor edx, esi
sub edx, 0xffff11bf
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x403dec
mov byte [ebp - 0x18], 0x71
movzx edx, byte [ebp - 0x18]
imul edx, edx
mov word [ebp - 0x1c], dx
cmp byte [ebp - 0x18], 0x71
je 0x403168
movzx edx, word [ebp - 0x1c]
or edx, 0xb0
movzx ecx, byte [ebp - 0x18]
sub edx, ecx
push edx
call dword [ebp - 0x20]
movzx eax, word [ebp - 0x1c]
movzx edx, byte [ebp - 0x18]
imul eax, edx
add eax, 0xffe9fbaf
push eax
movzx edx, word [ebp - 0x1c]
movzx eax, byte [ebp - 0x18]
imul edx, eax
add edx, 0xffe9fbaf
push edx
push 0
movzx ecx, byte [ebp - 0x18]
movzx eax, word [ebp - 0x1c]
or ecx, eax
add ecx, 0xffffce0f
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0x18], al
mov cl, byte [ebp - 0x18]
test cl, cl
je 0x4031b8
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx eax, word [ebp - 0x1c]
shl eax, 0x18
mov byte [ebp - 0x24], al
cmp byte [ebp - 0x24], 0
jge 0x4031ce
call dword [sym.imp.GDI32.dll_GetBkMode]
movzx eax, byte [ebp - 0x24]
movzx edx, word [ebp - 0x1c]
xor eax, edx
sub eax, 0x31e1
push eax
movzx ecx, byte [ebp - 0x18]
movzx edx, word [ebp - 0x1c]
add ecx, edx
add ecx, 0xffffce1f
push ecx
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x1c], ax
mov cx, word [ebp - 0x1c]
test cx, cx
je 0x403210
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx eax, word [ebp - 0x1c]
add eax, 1
mov word [ebp - 0x1c], ax
cmp byte [ebp - 0x18], 0
jge 0x40322a
movzx eax, byte [ebp - 0x18]
jmp 0x403f2c
movzx ecx, word [ebp - 0x1c]
and ecx, 0xb
mov byte [ebp - 0x24], cl
cmp word [ebp - 0x1c], 1
jle 0x403246
movzx ecx, byte [ebp - 0x24]
mov eax, ecx
jmp 0x403f2c
cmp dword [ebp - 0x14], 8
jge 0x40340a
mov word [ebp - 0x28], 0x1465
movzx edx, word [ebp - 0x28]
mov dword [ebp - 0x2c], edx
cmp dword [ebp - 0x2c], 0x1465
jle 0x403273
mov ecx, dword [ebp - 0x2c]
imul ecx, ecx
push ecx
call dword [sym.imp.USER32.dll_RegisterClassExA]
movzx eax, word [ebp - 0x28]
imul eax, dword [ebp - 0x2c]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x2c]
shl eax, 0x18
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x34]
or ecx, dword [ebp - 0x2c]
add ecx, 0x9affeb9b
mov eax, dword [ebp - 8]
movzx edx, byte [eax + ecx]
mov eax, dword [ebp - 0x10]
mov byte [eax], dl
mov eax, dword [ebp - 0x2c]
and eax, 0xbb
add eax, dword [ebp - 0x2c]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0x1486
jge 0x4032db
mov ecx, dword [ebp - 0x30]
imul ecx, ecx, 0x7da06d4d
push ecx
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x2c]
push eax
movzx ecx, word [ebp - 0x28]
sub ecx, dword [ebp - 0x30]
add ecx, 0x4c0371b7
push ecx
call dword [sym.imp.MSVCRT.dll_wcscat]
movzx eax, word [ebp - 0x28]
xor eax, dword [ebp - 0x34]
add eax, 0x9affeb9c
mov edx, dword [ebp - 0x10]
add edx, eax
mov dword [ebp - 0x10], edx
mov edx, dword [ebp - 0x38]
and edx, dword [ebp - 0x30]
mov dword [ebp - 0x38], edx
cmp dword [ebp - 0x34], 0x65000000
jge 0x40331c
mov eax, dword [ebp - 0x30]
imul eax, eax, 0x628c
push eax
movzx eax, word [ebp - 0x28]
or eax, dword [ebp - 0x2c]
xor eax, dword [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp dword [ebp - 0x30], 0x19fefd9
jle 0x403343
push dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
or eax, 0x679b7836
movzx ecx, word [ebp - 0x28]
imul ecx, eax
push ecx
movzx eax, word [ebp - 0x28]
sub eax, dword [ebp - 0x34]
push eax
call dword [ebp - 0x3c]
cmp word [ebp - 0x28], 0x1465
jge 0x403353
mov eax, dword [ebp - 0x30]
jmp 0x403f2c
movzx eax, word [ebp - 0x28]
or eax, dword [ebp - 0x2c]
add eax, 0xffffeb9b
push eax
mov edx, dword [ebp - 0x30]
and edx, dword [ebp - 0x38]
sub edx, 0x480
push edx
push 0
mov edx, dword [ebp - 0x2c]
or edx, dword [ebp - 0x30]
sub edx, 0x19ffffd
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x403396
call dword [sym.imp.MSVCRT.dll__except_handler3]
mov eax, dword [ebp - 0x38]
add eax, dword [ebp - 0x34]
add eax, 0xfffffb81
mov ecx, dword [ebp - 8]
add ecx, eax
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 0x2c]
mov word [ebp - 0x40], ax
movzx edx, word [ebp - 0x40]
add edx, dword [ebp - 0x30]
sub edx, 0x1a0043d
mov ecx, dword [ebp - 0x14]
sub ecx, edx
mov dword [ebp - 0x14], ecx
movzx edx, word [ebp - 0x40]
mov word [ebp - 0x28], dx
cmp word [ebp - 0x40], 0x1465
je 0x4033f3
mov ecx, dword [ebp - 0x30]
movzx edx, word [ebp - 0x40]
and ecx, edx
mov eax, dword [ebp - 0x38]
imul eax, ecx
push eax
movzx ecx, word [ebp - 0x40]
push ecx
push dword [ebp - 0x30]
call dword [sym.imp.GDI32.dll_BitBlt]
cmp word [ebp - 0x40], 0x1465
je 0x403405
mov edx, dword [ebp - 0x2c]
mov eax, edx
jmp 0x403f2c
jmp 0x403dda
mov word [ebp - 0x44], 0x1c91
movzx edx, word [ebp - 0x44]
mov byte [ebp - 0x48], dl
push 0
movzx eax, word [ebp - 0x44]
movzx ecx, byte [ebp - 0x48]
and eax, ecx
sub eax, 0x91
push eax
push 0
movzx edx, byte [ebp - 0x48]
movzx ecx, word [ebp - 0x44]
and edx, ecx
sub edx, 0x91
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0x48], al
mov al, byte [ebp - 0x48]
test al, al
je 0x403456
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx edx, byte [ebp - 0x48]
add edx, edx
mov word [ebp - 0x4c], dx
movzx edx, byte [ebp - 0x48]
movzx eax, word [ebp - 0x44]
xor edx, eax
sub edx, 0x1c91
push edx
movzx ecx, word [ebp - 0x44]
movzx eax, word [ebp - 0x4c]
sub ecx, eax
sub ecx, 0x1c91
push ecx
push 0
movzx edx, byte [ebp - 0x48]
movzx eax, word [ebp - 0x44]
and edx, eax
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x44], ax
mov dx, word [ebp - 0x44]
test dx, dx
je 0x4034ac
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx eax, word [ebp - 0x44]
add eax, 0xc2
movzx edx, byte [ebp - 0x48]
add eax, edx
mov word [ebp - 0x50], ax
cmp word [ebp - 0x44], 0
jge 0x4034da
movzx eax, word [ebp - 0x44]
xor eax, eax
add eax, 0x2a1e
push eax
movzx eax, word [ebp - 0x4c]
push eax
call dword [ebp - 0x54]
movzx ecx, word [ebp - 0x50]
xor ecx, ecx
mov word [ebp - 0x50], cx
movzx eax, byte [ebp - 0x48]
movzx ecx, word [ebp - 0x44]
imul eax, ecx
push eax
movzx edx, word [ebp - 0x44]
movzx eax, word [ebp - 0x4c]
imul edx, eax
push edx
push 0
movzx edx, word [ebp - 0x50]
movzx eax, word [ebp - 0x4c]
sub edx, eax
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x44], ax
mov ax, word [ebp - 0x44]
test ax, ax
je 0x403526
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx ecx, word [ebp - 0x4c]
movzx edx, byte [ebp - 0x48]
or ecx, edx
mov edx, dword [ebp - 8]
movzx eax, byte [edx + ecx]
shl eax, 0x18
mov dword [ebp - 0x58], eax
movzx eax, word [ebp - 0x50]
mov ecx, 0x40
xor edx, edx
div ecx
mov word [ebp - 0x44], ax
movzx eax, word [ebp - 0x4c]
movzx ecx, word [ebp - 0x50]
and eax, ecx
push eax
movzx eax, word [ebp - 0x4c]
movzx edx, word [ebp - 0x50]
xor eax, edx
push eax
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x4c], ax
mov dx, word [ebp - 0x4c]
test dx, dx
je 0x403585
call dword [sym.imp.MSVCRT.dll__except_handler3]
mov edx, dword [ebp - 8]
movzx eax, byte [edx]
shl eax, 0x10
mov dword [ebp - 0x5c], eax
movzx ecx, word [ebp - 0x44]
imul ecx, ecx, 0x2d027a99
mov word [ebp - 0x60], cx
mov ecx, dword [ebp - 0x58]
add ecx, dword [ebp - 0x5c]
movzx eax, word [ebp - 0x4c]
movzx edx, word [ebp - 0x50]
or eax, edx
add ecx, eax
mov dword [ebp - 0x58], ecx
movzx eax, word [ebp - 0x4c]
and eax, 0x89
movzx edx, word [ebp - 0x4c]
xor eax, edx
mov byte [ebp - 0x48], al
movzx edx, word [ebp - 0x44]
movzx ecx, byte [ebp - 0x48]
and edx, ecx
mov ecx, dword [ebp - 8]
movzx eax, byte [ecx + edx]
shl eax, 8
mov dword [ebp - 0x5c], eax
movzx eax, word [ebp - 0x44]
and eax, 0x73
movzx edx, word [ebp - 0x50]
imul eax, edx
mov word [ebp - 0x44], ax
cmp byte [ebp - 0x48], 0
jge 0x403600
movzx edx, word [ebp - 0x44]
mov eax, edx
jmp 0x403f2c
movzx ecx, byte [ebp - 0x48]
movzx eax, word [ebp - 0x44]
sub ecx, eax
push ecx
movzx edx, byte [ebp - 0x48]
movzx ecx, word [ebp - 0x4c]
or edx, ecx
push edx
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x44], ax
mov ax, word [ebp - 0x44]
test ax, ax
je 0x403637
call dword [sym.imp.MSVCRT.dll__except_handler3]
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
movzx eax, word [ebp - 0x4c]
sub eax, 1
mov word [ebp - 0x4c], ax
movzx ecx, word [ebp - 0x44]
movzx edx, word [ebp - 0x4c]
imul ecx, edx
push ecx
movzx ecx, word [ebp - 0x44]
movzx edx, word [ebp - 0x4c]
or ecx, edx
add ecx, 0xffff0001
push ecx
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x44], ax
mov dx, word [ebp - 0x44]
test dx, dx
je 0x403689
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx eax, word [ebp - 0x4c]
movzx edx, byte [ebp - 0x48]
xor eax, edx
add eax, 0xffff0001
mov ecx, dword [ebp - 8]
movzx edx, byte [ecx + eax]
mov eax, dword [ebp - 0x58]
add eax, edx
mov dword [ebp - 0x58], eax
movzx edx, word [ebp - 0x60]
shr edx, 3
mov dword [ebp - 0x64], edx
mov cl, byte [ebp - 0x48]
test cl, cl
je 0x4036d9
movzx edx, word [ebp - 0x44]
and edx, 0x533d
movzx eax, word [ebp - 0x44]
add eax, edx
push eax
movzx edx, word [ebp - 0x4c]
push edx
movzx eax, word [ebp - 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
movzx edx, word [ebp - 0x44]
movzx ecx, word [ebp - 0x4c]
imul edx, ecx
mov eax, dword [ebp - 8]
sub eax, edx
mov dword [ebp - 4], eax
movzx ecx, byte [ebp - 0x48]
or ecx, 0x4f3a0000
mov word [ebp - 0x68], cx
cmp word [ebp - 0x60], 0
jle 0x403704
call dword [ebp - 0x6c]
mov cx, word [ebp - 0x50]
test cx, cx
je 0x403717
mov ecx, dword [ebp - 0x64]
mov eax, ecx
jmp 0x403f2c
movzx edx, byte [ebp - 0x48]
movzx eax, word [ebp - 0x68]
xor edx, eax
push edx
movzx ecx, word [ebp - 0x4c]
and ecx, dword [ebp - 0x64]
push ecx
push 0
movzx ecx, word [ebp - 0x44]
movzx edx, word [ebp - 0x60]
xor ecx, edx
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0x48], al
mov cl, byte [ebp - 0x48]
test cl, cl
je 0x403751
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx edx, word [ebp - 0x50]
movzx eax, byte [ebp - 0x48]
xor edx, eax
mov dword [ebp - 0x5c], edx
movzx ecx, word [ebp - 0x44]
movzx eax, byte [ebp - 0x48]
sub ecx, eax
mov word [ebp - 0x70], cx
mov cl, byte [ebp - 0x48]
test cl, cl
je 0x4037a2
mov ecx, dword [ebp - 0x64]
or ecx, 0x60000000
movzx edx, word [ebp - 0x70]
and ecx, edx
push ecx
movzx eax, byte [ebp - 0x48]
push eax
movzx eax, word [ebp - 0x60]
movzx ecx, word [ebp - 0x50]
imul eax, ecx
push eax
movzx edx, word [ebp - 0x50]
and edx, 0x29323968
push edx
call dword [ebp - 0x6c]
mov dx, word [ebp - 0x60]
test dx, dx
je 0x4037b6
movzx edx, word [ebp - 0x70]
mov eax, edx
jmp 0x403f2c
movzx edx, word [ebp - 0x44]
add edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + edx*4]
cmp eax, dword [ebp - 0x58]
jne 0x403990
mov word [ebp - 0x74], 0
movzx eax, word [ebp - 0x74]
imul eax, eax
mov byte [ebp - 0x78], al
movzx edx, word [ebp - 0x74]
movzx ecx, byte [ebp - 0x78]
sub edx, ecx
push edx
movzx eax, word [ebp - 0x74]
movzx ecx, byte [ebp - 0x78]
add eax, ecx
push eax
push 0
movzx ecx, byte [ebp - 0x78]
movzx eax, word [ebp - 0x74]
add ecx, eax
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0x78], al
mov al, byte [ebp - 0x78]
test al, al
je 0x403819
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx edx, byte [ebp - 0x78]
mov byte [ebp - 0x78], dl
cmp byte [ebp - 0x78], 0xff
jne 0x403833
movzx edx, word [ebp - 0x74]
xor edx, edx
push edx
call dword [sym.imp.KERNEL32.dll_GetFileType]
cmp byte [ebp - 0x78], 0
jge 0x403844
movzx edx, byte [ebp - 0x78]
mov eax, edx
jmp 0x403f2c
movzx ecx, word [ebp - 0x74]
movzx edx, byte [ebp - 0x78]
imul ecx, edx
push ecx
movzx ecx, byte [ebp - 0x78]
movzx edx, word [ebp - 0x74]
xor ecx, edx
push ecx
push 0
movzx edx, word [ebp - 0x74]
movzx eax, byte [ebp - 0x78]
imul edx, eax
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0x78], al
mov cl, byte [ebp - 0x78]
test cl, cl
je 0x403883
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx edx, word [ebp - 0x74]
movzx ecx, byte [ebp - 0x78]
imul edx, ecx
add edx, 1
mov eax, dword [ebp - 4]
mov ecx, dword [eax + edx*4]
cmp ecx, dword [ebp - 0x58]
jne 0x403966
mov word [ebp - 0x7c], 0x118e
movzx ecx, word [ebp - 0x7c]
shl ecx, 0x18
mov word [ebp - 0x7c], cx
cmp word [ebp - 0x7c], 0xffff
jne 0x4038cb
movzx eax, word [ebp - 0x7c]
push eax
movzx edx, word [ebp - 0x7c]
add edx, 0x34460000
push edx
call dword [ebp - 0x80]
movzx eax, word [ebp - 0x7c]
mov word [ebp - 0x7c], ax
movzx eax, word [ebp - 0x7c]
xor eax, 0x38fc
mov word [ebp - 0x84], ax
movzx eax, word [ebp - 0x7c]
movzx ecx, word [ebp - 0x84]
and eax, ecx
sub eax, 0xffffffff
mov dword [ebp - 0x5c], eax
movzx eax, word [ebp - 0x7c]
mov ecx, 2
xor edx, edx
div ecx
mov word [ebp - 0x7c], dx
movzx ecx, word [ebp - 0x7c]
movzx edx, word [ebp - 0x84]
add ecx, edx
add ecx, 0xffffc704
push ecx
movzx eax, word [ebp - 0x84]
movzx ecx, word [ebp - 0x7c]
sub eax, ecx
sub eax, 0x38fc
push eax
push 0
movzx eax, word [ebp - 0x7c]
movzx ecx, word [ebp - 0x84]
sub eax, ecx
sub eax, 0xffffc704
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x84], ax
mov cx, word [ebp - 0x84]
test cx, cx
je 0x403966
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx ecx, byte [ebp - 0x78]
imul ecx, ecx, 0x100
movzx edx, word [ebp - 0x74]
sub edx, ecx
mov byte [ebp - 0x88], dl
cmp byte [ebp - 0x88], 0
jle 0x403990
movzx ecx, word [ebp - 0x74]
mov eax, ecx
jmp 0x403f2c
movzx ecx, byte [ebp - 0x48]
mov dword [ebp - 0x64], ecx
cmp word [ebp - 0x68], 0
jle 0x4039ae
movzx edx, word [ebp - 0x68]
xor edx, edx
push edx
movzx edx, word [ebp - 0x70]
add edx, edx
push edx
call ebx
push 0
movzx ecx, word [ebp - 0x50]
or ecx, dword [ebp - 0x64]
push ecx
push 0
mov edx, dword [ebp - 0x64]
movzx ecx, word [ebp - 0x68]
add edx, ecx
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0x48], al
mov al, byte [ebp - 0x48]
test al, al
je 0x4039de
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx edx, word [ebp - 0x44]
movzx ecx, word [ebp - 0x60]
and edx, ecx
cmp dword [ebp - 0x5c], edx
je 0x403bc9
mov word [ebp - 0x8c], 0x3200
movzx ecx, word [ebp - 0x8c]
mov byte [ebp - 0x90], cl
movzx eax, byte [ebp - 0x90]
movzx ecx, word [ebp - 0x8c]
add eax, ecx
add eax, 0xffffce00
push eax
movzx edx, word [ebp - 0x8c]
movzx eax, byte [ebp - 0x90]
add edx, eax
sub edx, 0x3200
push edx
push 0
movzx eax, byte [ebp - 0x90]
movzx ecx, word [ebp - 0x8c]
add eax, ecx
add eax, 0xffffce00
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x8c], ax
mov ax, word [ebp - 0x8c]
test ax, ax
je 0x403a6f
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx ecx, byte [ebp - 0x90]
movzx eax, word [ebp - 0x8c]
sub ecx, eax
mov byte [ebp - 0x90], cl
movzx eax, word [ebp - 0x8c]
movzx ecx, byte [ebp - 0x90]
add eax, ecx
push eax
movzx edx, word [ebp - 0x8c]
movzx eax, byte [ebp - 0x90]
xor edx, eax
push edx
push 0
movzx edx, word [ebp - 0x8c]
movzx eax, byte [ebp - 0x90]
or edx, eax
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x8c], ax
mov dx, word [ebp - 0x8c]
test dx, dx
je 0x403add
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx ecx, byte [ebp - 0x90]
imul ecx, ecx
add ecx, 0x26cc
mov word [ebp - 0x8c], cx
cmp byte [ebp - 0x90], 0
jle 0x403b2d
movzx eax, byte [ebp - 0x90]
and eax, 0x7b6900
movzx ecx, byte [ebp - 0x90]
add eax, ecx
push eax
movzx eax, word [ebp - 0x8c]
xor eax, 0x2800
movzx ecx, word [ebp - 0x8c]
imul ecx, eax
push ecx
call dword [ebp - 0x6c]
cmp word [ebp - 0x8c], 0x26cc
je 0x403b44
movzx eax, byte [ebp - 0x90]
jmp 0x403f2c
movzx ecx, word [ebp - 0x8c]
mov word [ebp - 0x8c], cx
movzx edx, word [ebp - 0x8c]
movzx ecx, byte [ebp - 0x90]
add edx, ecx
sub edx, 0x26c4
mov ecx, dword [ebp - 0x14]
sub ecx, edx
mov dword [ebp - 0x14], ecx
movzx ecx, word [ebp - 0x8c]
add ecx, 0x525a
mov word [ebp - 0x8c], cx
cmp byte [ebp - 0x90], 0
jge 0x403b9b
movzx edx, byte [ebp - 0x90]
mov eax, edx
jmp 0x403f2c
movzx edx, byte [ebp - 0x90]
movzx ecx, word [ebp - 0x8c]
imul edx, ecx
sub edx, 0xfffffff8
mov eax, dword [ebp - 8]
add eax, edx
mov dword [ebp - 8], eax
movzx edx, word [ebp - 0x8c]
mov dword [ebp - 0x94], edx
jmp 0x403dda
mov word [ebp - 0x98], 0x562b
movzx eax, word [ebp - 0x98]
xor eax, 0xd4
movzx ecx, word [ebp - 0x98]
imul ecx, eax
mov byte [ebp - 0x9c], cl
cmp word [ebp - 0x98], 0x562b
je 0x403c05
movzx eax, byte [ebp - 0x9c]
jmp 0x403f2c
movzx ecx, byte [ebp - 0x9c]
mov byte [ebp - 0x9c], cl
push 0
push 0
push 0
movzx eax, byte [ebp - 0x9c]
movzx ecx, word [ebp - 0x98]
sub eax, ecx
add eax, 0x5556
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0x98], ax
mov dx, word [ebp - 0x98]
test dx, dx
je 0x403c51
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx eax, word [ebp - 0x98]
shl eax, 0x10
mov word [ebp - 0xa0], ax
mov edx, dword [ebp - 8]
movzx eax, byte [edx]
mov edx, dword [ebp - 0x10]
mov byte [edx], al
movzx eax, word [ebp - 0x98]
mov dword [ebp - 0xa4], eax
movzx eax, byte [ebp - 0x9c]
movzx ecx, word [ebp - 0xa0]
sub eax, ecx
sub eax, 0xd5
push eax
movzx ecx, word [ebp - 0xa0]
xor ecx, dword [ebp - 0xa4]
push ecx
push 0
movzx edx, byte [ebp - 0x9c]
xor edx, dword [ebp - 0xa4]
add edx, 0xffffff2b
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov dword [ebp - 0xa4], eax
mov edx, dword [ebp - 0xa4]
test edx, edx
je 0x403cd4
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx ecx, word [ebp - 0x98]
movzx eax, byte [ebp - 0x9c]
imul ecx, eax
add ecx, 1
mov edx, dword [ebp - 0x10]
add edx, ecx
mov dword [ebp - 0x10], edx
movzx eax, word [ebp - 0x98]
shr eax, 3
mov dword [ebp - 0xa8], eax
cmp dword [ebp - 0xa8], 0
jge 0x403d2b
mov eax, dword [ebp - 0xa8]
and eax, 0x1500
mov edx, dword [ebp - 0xa8]
add edx, eax
push edx
movzx eax, byte [ebp - 0x9c]
push eax
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
movzx eax, word [ebp - 0xa0]
sub eax, dword [ebp - 0xa8]
push eax
movzx ecx, word [ebp - 0xa0]
add ecx, dword [ebp - 0xa8]
push ecx
push 0
mov ecx, dword [ebp - 0xa4]
movzx edx, byte [ebp - 0x9c]
add ecx, edx
sub ecx, 0xd5
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov word [ebp - 0xa0], ax
mov dx, word [ebp - 0xa0]
test dx, dx
je 0x403d82
call dword [sym.imp.MSVCRT.dll__except_handler3]
movzx edx, word [ebp - 0x98]
add edx, dword [ebp - 0xa8]
sub edx, 0xffffffff
mov ecx, dword [ebp - 8]
add ecx, edx
mov dword [ebp - 8], ecx
movzx ecx, word [ebp - 0xa0]
add ecx, 0x5a91
mov byte [ebp - 0x9c], cl
movzx edx, word [ebp - 0x98]
and edx, dword [ebp - 0xa4]
add edx, 1
mov ecx, dword [ebp - 0x14]
sub ecx, edx
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0xa8]
movzx eax, byte [ebp - 0x9c]
and edx, eax
mov dword [ebp - 0xac], edx
movzx ecx, byte [ebp - 0x24]
shl ecx, 0x18
mov byte [ebp - 0xb0], cl
jmp 0x403134
mov eax, esi
xor eax, 0x5aac0000
movzx ecx, byte [ebp - 0xc]
or eax, ecx
mov esi, eax
cmp esi, 0xa553ffff
jge 0x403e18
push esi
mov edx, esi
movzx ecx, byte [ebp - 0xc]
xor edx, ecx
mov ecx, edi
imul ecx, edx
push ecx
call dword [sym.imp.MSVCRT.dll__umask]
test edi, edi
je 0x403e39
movzx ecx, byte [ebp - 0xc]
push ecx
movzx eax, byte [ebp - 0xc]
or eax, 0xf5
movzx ecx, byte [ebp - 0xc]
sub ecx, eax
push ecx
mov ecx, edi
xor ecx, esi
push ecx
call dword [ebp - 0x6c]
mov eax, edi
and eax, esi
add eax, 0x4e9729db
mov edx, 0x4ed2a9d7
xor edx, eax
mov dword [ebp - 4], edx
mov ecx, edi
shr ecx, 1
mov byte [ebp - 0xb4], cl
cmp byte [ebp - 0xc], 0
jge 0x403e67
movzx ecx, byte [ebp - 0xc]
mov eax, ecx
jmp 0x403f2c
mov ecx, dword [ebp - 4]
mov eax, dword [ecx]
mov dword [ebp - 8], eax
movzx edx, byte [ebp - 0xc]
or edx, 0x500
mov byte [ebp - 0xb4], dl
push 0
push 0
push 0
mov edx, edi
movzx eax, byte [ebp - 0xc]
add edx, eax
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0xc], al
mov dl, byte [ebp - 0xc]
test dl, dl
je 0x403ea8
call dword [sym.imp.MSVCRT.dll__except_handler3]
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 8]
shr eax, 3
mov dword [ebp - 0x14], eax
mov eax, esi
movzx edx, byte [ebp - 0xc]
imul eax, edx
sub eax, 0xa6ed8370
mov ecx, 0x5957fc84
xor ecx, eax
mov dword [ebp - 4], ecx
mov ecx, edi
mov byte [ebp - 0xb4], cl
cmp esi, 0xa553ffff
je 0x403edf
call dword [ebp - 0x80]
push 0
mov edx, edi
movzx ecx, byte [ebp - 0xb4]
and edx, ecx
push edx
push 0
mov edx, edi
imul edx, esi
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
mov byte [ebp - 0xb4], al
mov al, byte [ebp - 0xb4]
test al, al
je 0x403f15
call dword [sym.imp.MSVCRT.dll__except_handler3]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
mov dword [edx], eax
mov ecx, edi
shr ecx, 1
mov edi, ecx
movzx edx, byte [ebp - 0xb4]
mov eax, edx
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret