Function at 0x30003a02
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x254
mov eax, dword [0x3000662c]
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 4], eax
push 0x104
lea eax, [ebp - 0x1b0]
push eax
push ebx
mov dword [0x3000663c], esi
mov dword [ebp - 0x250], ebx
mov dword [ebp - 0x254], ebx
mov dword [ebp - 0x248], ebx
mov byte [ebp - 0x1b0], bl
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [ebp - 0x24c], eax
lea eax, [ebp + eax - 0x1b0]
jmp 0x30003a6d
cmp byte [eax], 0x5c
je 0x30003a77
push eax
lea eax, [ebp - 0x1b0]
push eax
call dword [sym.imp.USER32.dll_CharPrevA]
lea ecx, [ebp - 0x1b0]
cmp eax, ecx
jne 0x30003a5a
mov byte [eax], bl
cmp byte [ebp - 0x1b0], bl
je 0x30003a8e
lea eax, [ebp - 0x1b0]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea eax, [ebp - 0x244]
push eax
mov byte [ebp - 0x1b0], bl
mov dword [ebp - 0x244], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x30003ac0
xor eax, eax
cmp dword [ebp - 0x234], 2
sete al
mov dword [0x30006640], eax
push 0x21
lea eax, [ebp - 0xac]
push eax
push ebx
push esi
mov esi, dword [sym.imp.USER32.dll_LoadStringA]
call esi
test eax, eax
jne 0x30003af1
push 0x10
push 0x30001344
push 0x3000130c
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
jmp 0x30003fa6
push edi
push 0x100
push 0x30006658
xor edi, edi
inc edi
push edi
push dword [ebp + 8]
call esi
test eax, eax
jne 0x30003b23
push 0x10
push 0x30001344
push 0x300012d4
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
jmp 0x30003fa5
mov ecx, dword [ebp + 0x10]
mov al, byte [ecx]
cmp al, bl
je 0x30003c52
mov esi, dword [sym.imp.USER32.dll_CharNextA]
cmp al, 0x2f
jne 0x30003c0c
push ecx
call esi
movsx ecx, byte [eax]
cmp ecx, 0x61
jg 0x30003b7e
je 0x30003b55
sub ecx, 0x41
je 0x30003b55
sub ecx, 0xb
jmp 0x30003b81
cmp dword [0x30006644], ebx
jne 0x30003ebc
cmp dword [0x30006648], ebx
jne 0x30003ebc
mov dword [0x30006648], edi
push eax
call esi
mov dword [ebp + 0x10], eax
jmp 0x30003c45
sub ecx, 0x6c
je 0x30003bc9
dec ecx
je 0x30003e2a
sub ecx, 4
je 0x30003bc1
dec ecx
je 0x30003bb9
dec ecx
jne 0x30003ebc
cmp dword [0x30006644], ebx
jne 0x30003ebc
cmp dword [0x30006648], ebx
jne 0x30003ebc
mov dword [0x30006644], edi
jmp 0x30003b73
mov dword [0x30006650], edi
jmp 0x30003b73
mov dword [0x3000664c], edi
jmp 0x30003b73
cmp dword [ebp - 0x250], ebx
jne 0x30003ebc
push eax
mov dword [ebp - 0x250], edi
call esi
cmp byte [eax], 0x21
mov dword [ebp + 0x10], eax
jne 0x30003bf2
push eax
mov dword [ebp - 0x254], edi
call esi
mov dword [ebp + 0x10], eax
mov al, byte [eax]
cmp al, bl
je 0x30003c52
cmp al, 0x20
je 0x30003c45
cmp al, 0x5c
je 0x30003c45
push 0x104
push 0x30006658
jmp 0x30003c34
cmp al, 0x20
jne 0x30003c16
push ecx
jmp 0x30003b74
cmp dword [ebp - 0x248], ebx
jne 0x30003ebc
push 0x104
lea eax, [ebp - 0x1b0]
mov dword [ebp - 0x248], edi
push eax
lea eax, [ebp + 0x10]
push eax
call fcn.300027f2
test eax, eax
je 0x30003ebc
mov ecx, dword [ebp + 0x10]
mov al, byte [ecx]
cmp al, bl
jne 0x30003b36
cmp dword [0x30006650], ebx
je 0x30003c66
cmp dword [0x3000664c], ebx
je 0x30003ebc
cmp dword [ebp - 0x250], ebx
jne 0x30003c74
mov byte [0x30006658], bl
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
call sub.OCLEAN.dll_InitDetection
lea eax, [ebp - 0x1b0]
push eax
call sub.OCLEAN.dll_SetSourceDir
lea eax, [ebp - 0xac]
push eax
push 0x104
lea eax, [ebp - 0x1b0]
push eax
call fcn.300024a8
push dword [0x3000664c]
lea eax, [ebp - 0x1b0]
push ebx
push eax
call sub.OCLEAN.dll_HfOpenOpc
cmp eax, 0xffffffff
mov dword [0x30006018], eax
je 0x30003b1c
push ebx
push 0x30002527
push 0x10
push dword [0x3000663c]
call dword [sym.imp.KERNEL32.dll_EnumResourceNamesA]
cmp dword [0x30006644], ebx
jne 0x30003ec9
cmp dword [0x30006648], ebx
jne 0x30003ed1
cmp dword [0x3000664c], ebx
jne 0x30003ebc
cmp dword [ebp - 0x254], ebx
jne 0x30003ebc
push 0x20
lea eax, [ebp - 0x28]
push eax
push 0x46
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_LoadStringA]
push ebx
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
lea eax, [ebp - 0x28]
push eax
push 0x20
lea eax, [ebp - 0x6c]
push eax
mov byte [ebp - 0x71], 1
mov byte [ebp - 0x6d], bl
call fcn.30001394
cmp byte [ebp - 0x28], bl
mov esi, dword [sym.imp.GDI32.dll_EnumFontFamiliesExA]
je 0x30003d57
push ebx
lea eax, [ebp - 0x28]
push eax
push 0x3000144d
lea eax, [ebp - 0x88]
push eax
push edi
call esi
cmp dword [0x30006774], ebx
jne 0x30003d98
push 0x20
lea eax, [ebp - 0x28]
push eax
push 0x47
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp - 0x28]
push eax
push 0x20
lea eax, [ebp - 0x6c]
push eax
call fcn.30001394
cmp byte [ebp - 0x28], bl
je 0x30003d98
push ebx
lea eax, [ebp - 0x28]
push eax
push 0x30001477
lea eax, [ebp - 0x88]
push eax
push edi
call esi
push edi
push ebx
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [0x30006774], ebx
jne 0x30003e8b
cmp dword [0x30006778], ebx
je 0x30003e8b
lea eax, [ebp - 0x28]
push eax
push 0x65
push dword [ebp + 8]
call fcn.30001486
push dword [ebp + 8]
mov esi, eax
push 0x300032ed
push ebx
push esi
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DialogBoxIndirectParamA]
cmp eax, 0xffffffff
jne 0x30003e21
push ebx
push ebx
lea eax, [ebp - 0x248]
push eax
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
push 0x40
push 0x300012a8
push dword [ebp - 0x248]
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push dword [ebp - 0x248]
call dword [sym.imp.KERNEL32.dll_LocalFree]
push esi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
jmp 0x30003e9f
push eax
jmp 0x30003e4e
movzx eax, al
push eax
call sub.MSVCRT.dll_isdigit
test eax, eax
pop ecx
je 0x30003e58
mov ecx, dword [ebp - 0x24c]
mov al, byte [edi]
inc dword [ebp - 0x24c]
mov byte [ebp + ecx - 0x4c], al
push edi
call esi
mov edi, eax
mov al, byte [edi]
cmp al, bl
jne 0x30003e2d
mov eax, dword [ebp - 0x24c]
mov byte [ebp + eax - 0x4c], bl
cmp byte [ebp - 0x4c], bl
jne 0x30003e77
push 0x300012a0
push 0x21
lea eax, [ebp - 0x4c]
push eax
call fcn.30001394
lea eax, [ebp - 0x4c]
push eax
push ebx
call sub.OCLEAN.dll_UintDetectAndMigrate
neg eax
sbb eax, eax
inc eax
jmp 0x30003fa5
push dword [ebp + 8]
push 0x300032ed
push ebx
push 0x65
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DialogBoxParamA]
call sub.OCLEAN.dll_FreeAllBuffers
mov eax, dword [0x30006764]
cmp eax, ebx
je 0x30003eb4
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
xor eax, eax
inc eax
jmp 0x30003fa5
push dword [ebp + 8]
call fcn.300039f2
jmp 0x30003b1c
cmp dword [0x30006648], ebx
je 0x30003edf
push ebx
call fcn.300028bc
test eax, eax
je 0x30003b1c
call fcn.30002438
mov eax, dword [0x3000664c]
push eax
push eax
push 0x66
push dword [ebp + 8]
call fcn.30002876
push eax
push ebx
push dword [0x30006644]
push dword [0x30006018]
call sub.OCLEAN.dll_FDetectTargetStates
test eax, eax
jne 0x30003f13
call fcn.30002457
jmp 0x30003f4c
mov eax, dword [0x3000664c]
push 0x30006658
push eax
push eax
push 0x67
push dword [ebp + 8]
call fcn.30002876
push eax
push ebx
push dword [0x30006644]
push dword [0x30006018]
push ebx
push ebx
call sub.OCLEAN.dll_FDetermineCleanupActions
test eax, eax
jne 0x30003f56
call fcn.30002457
call fcn.300021e7
call sub.OCLEAN.dll_FreeAllBuffers
jmp 0x30003b1c
cmp dword [ebp - 0x254], ebx
jne 0x30003f8f
push ebx
call sub.OCLEAN.dll_FEarlyAppDetection
mov eax, dword [0x3000664c]
push edi
push dword [0x30006650]
push eax
push eax
push 0x68
push dword [ebp + 8]
call fcn.30002876
push eax
push ebx
push dword [0x3000663c]
push dword [0x30006644]
call sub.OCLEAN.dll_FExecuteCleanupActions
call fcn.30002457
call fcn.300021e7
call sub.OCLEAN.dll_FDoneWithPszFiles
call sub.OCLEAN.dll_FreeAllBuffers
mov eax, edi
pop edi
mov ecx, dword [ebp - 4]
pop esi
pop ebx
call fcn.300044f8
leave
ret 0x10