Function at 0x4013a0
Capabilities:
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20c
mov eax, dword [0x41b004]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push 0x104
push 0x41cdfc
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x41cdfc
call dword [sym.imp.KERNEL32.dll_lstrlenA]
dec eax
mov cl, 0x5c
cmp byte [eax + 0x41cdfc], cl
je 0x4013f0
lea ecx, [ecx]
mov byte [eax + 0x41cdfc], 0
dec eax
cmp byte [eax + 0x41cdfc], cl
jne 0x4013e0
push esi
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
push 0
push 0x1a
push 0x41d004
push 0
mov byte [eax + 0x41cdfc], 0
call esi
test eax, eax
jns 0x401445
push 0
push 0x23
push 0x41d004
push 0
call esi
test eax, eax
jns 0x401445
push 0x20
push 0x417ca8
push str.AppData
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040aabb
mov esp, ebp
pop ebp
ret
mov eax, dword [0x41cd8c]
mov esi, dword [sym.imp.USER32.dll_LoadStringA]
push edi
push 0x104
push 0x41d128
push 2
push eax
call esi
mov ecx, dword [0x41cd8c]
push 0x104
push 0x41d330
push 3
push ecx
call esi
mov edx, dword [0x41cd8c]
push 0x104
push 0x41d538
push 4
push edx
call esi
mov eax, dword [0x41cd8c]
push 0x104
push 0x41d22c
push 5
push eax
call esi
mov ecx, dword [0x41cd8c]
push 0x104
push 0x41d63c
push 6
push ecx
call esi
mov edx, dword [0x41cd8c]
push 0x104
push 0x41d740
push 7
push edx
call esi
mov eax, dword [0x41cd8c]
push 0x104
push 0x41d844
push 1
push eax
call esi
mov edx, dword [0x41cd8c]
push 0x104
lea ecx, [ebp - 0x108]
push ecx
push 8
push edx
call esi
xor edi, edi
push ebx
jmp 0x401500
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [ebp - 0x108]
push ecx
mov ebx, edi
xor esi, esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test edi, edi
je 0x401551
cmp byte [ebp - 0x108], 0
je 0x40154d
jmp 0x401530
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401582
inc esi
cmp al, 0x2c
jne 0x401543
dec ebx
je 0x401551
cmp byte [ebp + esi - 0x108], 0
jne 0x401530
test ebx, ebx
jne 0x401582
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401582
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401582
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401570
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov dword [edi*4 + 0x41d118], eax
inc edi
add esp, 4
cmp edi, 4
jl 0x401500
push 0x419010
push str.Kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4015f7
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
test eax, eax
je 0x4015f7
cmp dword [ebp - 0x20c], 0
je 0x4015f7
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
push 0
push 0x2a
push 0x41e26c
push 0
call esi
test eax, eax
jns 0x401622
jmp 0x4015fd
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
push 0
push 0x26
push 0x41e26c
push 0
call esi
test eax, eax
jns 0x401622
push 0x104
push 0
push 0x41e26c
call fcn.0040fab0
add esp, 0xc
push 0
push 5
lea ecx, [ebp - 0x108]
push ecx
push 0
call esi
test eax, eax
js 0x40168a
cmp byte [0x41d538], 0
push 0x41d22c
je 0x401669
push 0x41d538
push 0x41d128
lea edx, [ebp - 0x108]
push edx
push str._s_s_s_s_save
push 0x41e370
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x18
jmp 0x40169e
push 0x41d128
lea eax, [ebp - 0x108]
push eax
push str._s_s_s_save
push 0x41e370
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
jmp 0x40169e
push 0x104
push 0
push 0x41e370
call fcn.0040fab0
add esp, 0xc
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x41e26c
call ebx
inc eax
push eax
push 0x41e26c
push 0x41d434
call fcn.00410720
add esp, 0xc
push 0x41e370
call ebx
inc eax
push eax
push 0x41e370
push 0x41e168
call fcn.00410720
mov ecx, dword [0x41cd8c]
mov esi, dword [sym.imp.USER32.dll_LoadStringA]
add esp, 0xc
push 0x104
push 0x41d948
push 0x10
push ecx
call esi
mov edx, dword [0x41cd8c]
push 0x104
push 0x41da4c
push 0x11
push edx
call esi
mov eax, dword [0x41cd8c]
push 0x104
push 0x41db50
push 0x12
push eax
call esi
mov ecx, dword [0x41cd8c]
push 0x104
push 0x41dc54
push 0x13
push ecx
call esi
mov edx, dword [0x41cd8c]
push 0x104
push 0x41dd58
push 0x14
push edx
call esi
mov eax, dword [0x41cd8c]
push 0x104
push 0x41de5c
push 0x15
push eax
call esi
mov ecx, dword [0x41cd8c]
push 0x104
push 0x41df60
push 0x16
push ecx
call esi
mov edx, dword [0x41cd8c]
push 0x104
push 0x41e064
push 0x17
push edx
call esi
mov ecx, dword [0x41cd8c]
push 0x104
lea eax, [ebp - 0x108]
push eax
push 9
push ecx
call esi
lea edx, [ebp - 0x108]
push edx
call ebx
lea eax, [ebp - 0x108]
push eax
call ebx
mov cl, byte [ebp - 0x108]
mov byte [ebp - 0x208], 0
test cl, cl
je 0x4017e2
xor eax, eax
cmp cl, 0x2c
je 0x4017e2
mov byte [ebp + eax - 0x208], cl
mov cl, byte [ebp + eax - 0x107]
inc eax
mov byte [ebp + eax - 0x208], 0
test cl, cl
jne 0x4017c2
lea ecx, [ebp - 0x208]
push ecx
call fcn.0040aba0
add esp, 4
lea edx, [ebp - 0x108]
push edx
mov dword [0x41cd94], eax
call ebx
lea eax, [ebp - 0x108]
push eax
mov edi, 1
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401872
jmp 0x401820
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401872
inc esi
cmp al, 0x2c
jne 0x401833
dec edi
je 0x401841
cmp byte [ebp + esi - 0x108], 0
jne 0x401820
test edi, edi
jne 0x401872
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401872
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401872
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401860
lea ecx, [ebp - 0x208]
push ecx
call fcn.0040aba0
add esp, 4
push 0x104
lea edx, [ebp - 0x108]
push edx
mov dword [0x41cd98], eax
mov eax, dword [0x41cd8c]
push 0xa
push eax
call dword [sym.imp.USER32.dll_LoadStringA]
lea ecx, [ebp - 0x108]
push ecx
call ebx
lea edx, [ebp - 0x108]
push edx
call ebx
mov cl, byte [ebp - 0x108]
mov byte [ebp - 0x208], 0
test cl, cl
je 0x4018e5
xor eax, eax
cmp cl, 0x2c
je 0x4018e5
mov byte [ebp + eax - 0x208], cl
mov cl, byte [ebp + eax - 0x107]
inc eax
mov byte [ebp + eax - 0x208], 0
test cl, cl
jne 0x4018c5
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
add esp, 4
lea ecx, [ebp - 0x108]
push ecx
mov dword [0x41cd9c], eax
call ebx
lea edx, [ebp - 0x108]
push edx
mov edi, 1
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401972
jmp 0x401920
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401972
inc esi
cmp al, 0x2c
jne 0x401933
dec edi
je 0x401941
cmp byte [ebp + esi - 0x108], 0
jne 0x401920
test edi, edi
jne 0x401972
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401972
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401972
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401960
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
add esp, 4
lea ecx, [ebp - 0x108]
push ecx
mov dword [0x41cda0], eax
call ebx
lea edx, [ebp - 0x108]
push edx
mov edi, 2
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401a02
jmp 0x4019b0
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401a02
inc esi
cmp al, 0x2c
jne 0x4019c3
dec edi
je 0x4019d1
cmp byte [ebp + esi - 0x108], 0
jne 0x4019b0
test edi, edi
jne 0x401a02
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401a02
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401a02
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x4019f0
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
add esp, 4
lea ecx, [ebp - 0x108]
push ecx
mov dword [0x41cda4], eax
call ebx
lea edx, [ebp - 0x108]
push edx
mov edi, 3
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401a92
jmp 0x401a40
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401a92
inc esi
cmp al, 0x2c
jne 0x401a53
dec edi
je 0x401a61
cmp byte [ebp + esi - 0x108], 0
jne 0x401a40
test edi, edi
jne 0x401a92
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401a92
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401a92
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401a80
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
mov edx, dword [0x41cda4]
mov ecx, eax
mov dword [0x41cdac], edx
mov eax, 0x66666667
imul ecx
add esp, 4
sar edx, 1
mov eax, edx
push 0x104
mov dword [0x41cda8], ecx
lea ecx, [ebp - 0x108]
shr eax, 0x1f
push ecx
add eax, edx
mov edx, dword [0x41cd8c]
push 0xb
push edx
mov dword [0x41cdb0], eax
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
call ebx
mov cl, byte [ebp - 0x108]
mov byte [ebp - 0x208], 0
test cl, cl
je 0x401b30
xor eax, eax
lea ebx, [ebx]
cmp cl, 0x2c
je 0x401b30
mov byte [ebp + eax - 0x208], cl
mov cl, byte [ebp + eax - 0x107]
inc eax
mov byte [ebp + eax - 0x208], 0
test cl, cl
jne 0x401b10
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov dword [0x41cdb4], eax
add esp, 4
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
mov edi, 1
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401bc2
jmp 0x401b70
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401bc2
inc esi
cmp al, 0x2c
jne 0x401b83
dec edi
je 0x401b91
cmp byte [ebp + esi - 0x108], 0
jne 0x401b70
test edi, edi
jne 0x401bc2
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401bc2
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401bc2
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401bb0
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov dword [0x41cdb8], eax
add esp, 4
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
mov edi, 2
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401c52
jmp 0x401c00
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401c52
inc esi
cmp al, 0x2c
jne 0x401c13
dec edi
je 0x401c21
cmp byte [ebp + esi - 0x108], 0
jne 0x401c00
test edi, edi
jne 0x401c52
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401c52
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401c52
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401c40
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov dword [0x41cdbc], eax
add esp, 4
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
mov edi, 3
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401ce2
jmp 0x401c90
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401ce2
inc esi
cmp al, 0x2c
jne 0x401ca3
dec edi
je 0x401cb1
cmp byte [ebp + esi - 0x108], 0
jne 0x401c90
test edi, edi
jne 0x401ce2
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401ce2
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401ce2
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401cd0
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov ecx, eax
mov eax, dword [0x41cdbc]
mov dword [0x41cde4], eax
mov eax, 0x55555556
imul ecx
mov eax, dword [0x41cd8c]
mov dword [0x41cdc0], ecx
mov ecx, edx
add esp, 4
shr ecx, 0x1f
add ecx, edx
push 0x104
lea edx, [ebp - 0x108]
push edx
push 0xc
push eax
mov dword [0x41cde8], ecx
call dword [sym.imp.USER32.dll_LoadStringA]
lea ecx, [ebp - 0x108]
push ecx
call ebx
lea edx, [ebp - 0x108]
push edx
call ebx
mov cl, byte [ebp - 0x108]
mov byte [ebp - 0x208], 0
test cl, cl
je 0x401d76
xor eax, eax
cmp cl, 0x2c
je 0x401d76
mov byte [ebp + eax - 0x208], cl
mov cl, byte [ebp + eax - 0x107]
inc eax
mov byte [ebp + eax - 0x208], 0
test cl, cl
jne 0x401d56
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
add esp, 4
lea ecx, [ebp - 0x108]
push ecx
mov dword [0x41cdc4], eax
call ebx
lea edx, [ebp - 0x108]
push edx
mov edi, 1
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401e02
lea esp, [esp]
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401e02
inc esi
cmp al, 0x2c
jne 0x401dc3
dec edi
je 0x401dd1
cmp byte [ebp + esi - 0x108], 0
jne 0x401db0
test edi, edi
jne 0x401e02
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401e02
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401e02
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401df0
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
add esp, 4
lea ecx, [ebp - 0x108]
push ecx
mov dword [0x41cdc8], eax
call ebx
lea edx, [ebp - 0x108]
push edx
mov edi, 2
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401e92
jmp 0x401e40
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401e92
inc esi
cmp al, 0x2c
jne 0x401e53
dec edi
je 0x401e61
cmp byte [ebp + esi - 0x108], 0
jne 0x401e40
test edi, edi
jne 0x401e92
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401e92
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401e92
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401e80
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
add esp, 4
lea ecx, [ebp - 0x108]
push ecx
mov dword [0x41cdcc], eax
call ebx
lea edx, [ebp - 0x108]
push edx
mov edi, 3
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x401f22
jmp 0x401ed0
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x401f22
inc esi
cmp al, 0x2c
jne 0x401ee3
dec edi
je 0x401ef1
cmp byte [ebp + esi - 0x108], 0
jne 0x401ed0
test edi, edi
jne 0x401f22
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x401f22
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x401f22
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x401f10
lea eax, [ebp - 0x208]
push eax
call fcn.0040aba0
mov edx, dword [0x41cdcc]
mov ecx, eax
mov dword [0x41cdec], edx
mov eax, 0x55555556
imul ecx
add esp, 4
mov eax, edx
push 0x104
mov dword [0x41cdd0], ecx
lea ecx, [ebp - 0x108]
shr eax, 0x1f
push ecx
add eax, edx
mov edx, dword [0x41cd8c]
push 0xd
push edx
mov dword [0x41cdf0], eax
call dword [sym.imp.USER32.dll_LoadStringA]
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
call ebx
mov cl, byte [ebp - 0x108]
mov byte [ebp - 0x208], 0
test cl, cl
je 0x401fb8
xor eax, eax
cmp cl, 0x2c
je 0x401fb8
mov byte [ebp + eax - 0x208], cl
mov cl, byte [ebp + eax - 0x107]
inc eax
mov byte [ebp + eax - 0x208], 0
test cl, cl
jne 0x401f98
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov dword [0x41cdd4], eax
add esp, 4
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
mov edi, 1
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x402042
mov edi, edi
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x402042
inc esi
cmp al, 0x2c
jne 0x402003
dec edi
je 0x402011
cmp byte [ebp + esi - 0x108], 0
jne 0x401ff0
test edi, edi
jne 0x402042
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x402042
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x402042
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x402030
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov dword [0x41cdd8], eax
add esp, 4
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
mov edi, 2
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
je 0x4020d2
jmp 0x402080
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x4020d2
inc esi
cmp al, 0x2c
jne 0x402093
dec edi
je 0x4020a1
cmp byte [ebp + esi - 0x108], 0
jne 0x402080
test edi, edi
jne 0x4020d2
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x4020d2
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x4020d2
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x4020c0
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov dword [0x41cddc], eax
add esp, 4
lea eax, [ebp - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
push ecx
mov edi, 3
xor esi, esi
call ebx
cmp byte [ebp - 0x108], 0
pop ebx
je 0x402162
lea esp, [esp]
mov al, byte [ebp + esi - 0x108]
test al, al
je 0x402162
inc esi
cmp al, 0x2c
jne 0x402123
dec edi
je 0x402131
cmp byte [ebp + esi - 0x108], 0
jne 0x402110
test edi, edi
jne 0x402162
mov al, byte [ebp + esi - 0x108]
lea edx, [ebp + esi - 0x108]
mov byte [ebp - 0x208], 0
test al, al
je 0x402162
lea ecx, [ebp - 0x208]
cmp al, 0x2c
je 0x402162
mov byte [ecx], al
mov al, byte [edx + 1]
inc edx
inc ecx
mov byte [ecx], 0
test al, al
jne 0x402150
lea edx, [ebp - 0x208]
push edx
call fcn.0040aba0
mov ecx, eax
mov eax, dword [0x41cddc]
mov dword [0x41cdf4], eax
mov eax, 0x55555556
imul ecx
mov dword [0x41cde0], ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add esp, 4
mov dword [0x41cdf8], ecx
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
mov eax, 1
pop esi
call fcn.0040aabb
mov esp, ebp
pop ebp
ret