Function at 0x40fc50
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [esp + 0x80]
mov al, byte [eax]
mov byte [esp + 0x4f], al
cmp al, 0x2f
je 0x410044
cmp al, 0x5c
je 0x410044
and eax, 0xffffffdf
sub eax, 0x41
cmp al, 0x19
jbe 0x410030
mov ebp, 0xffffffff
xor eax, eax
mov ecx, ebp
mov edi, dword [esp + 0x80]
repne scasb al, byte es:[edi]
not ecx
lea edi, [ecx - 1]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x7c]
and edi, 4
mov dword [esp + 0x3c], edi
je 0x41005c
mov ecx, ebp
mov edi, dword [esp + 0x84]
repne scasb al, byte es:[edi]
mov ebp, ecx
not ebp
mov eax, dword [esp + 0x7c]
and eax, 2
mov dword [esp + 0x40], eax
je 0x41006f
xor eax, eax
mov ecx, 0xffffffff
mov edi, dword [esp + 0x88]
repne scasb al, byte es:[edi]
mov esi, ecx
not esi
mov eax, dword [esp + 0x7c]
and eax, 1
mov dword [esp + 0x44], eax
je 0x410082
xor eax, eax
mov ecx, 0xffffffff
mov edi, dword [esp + 0x8c]
repne scasb al, byte es:[edi]
mov ebx, ecx
not ebx
mov eax, dword [esp + 0x7c]
and eax, 8
mov dword [esp + 0x48], eax
je 0x410054
xor eax, eax
mov ecx, 0xffffffff
mov edi, dword [esp + 0x90]
repne scasb al, byte es:[edi]
mov edx, ecx
not edx
xor eax, eax
mov ecx, 0xffffffff
mov edi, dword [esp + 0x94]
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x78]
lea eax, [eax + edi + 2]
add ebp, eax
add esi, ebp
add ebx, esi
sub edx, ecx
lea eax, [edx + ebx - 2]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov ebp, eax
test eax, eax
je 0x4101ee
mov ebx, dword [esp + 0x78]
test ebx, ebx
jne 0x41008c
mov cl, byte [esp + 0x4f]
mov edx, eax
mov ebx, dword [esp + 0x80]
jmp 0x40fd88
mov cl, byte [ebx]
mov edx, eax
lea eax, [edx + 1]
inc ebx
mov byte [eax - 1], cl
test cl, cl
jne 0x40fd84
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x40fdb6
mov byte [edx], 0x5f
mov ecx, dword [esp + 0x84]
lea esi, [esi]
mov edx, eax
inc eax
inc ecx
mov bl, byte [ecx - 1]
mov byte [eax - 1], bl
test bl, bl
jne 0x40fda8
mov edi, dword [esp + 0x40]
test edi, edi
je 0x40fdd6
mov byte [edx], 0x2e
mov ecx, dword [esp + 0x88]
mov edx, eax
inc eax
inc ecx
mov bl, byte [ecx - 1]
mov byte [eax - 1], bl
test bl, bl
jne 0x40fdc8
mov esi, dword [esp + 0x44]
test esi, esi
je 0x40fdf6
mov byte [edx], 0x2e
mov ecx, dword [esp + 0x8c]
mov edx, eax
inc eax
inc ecx
mov bl, byte [ecx - 1]
mov byte [eax - 1], bl
test bl, bl
jne 0x40fde8
mov ebx, dword [esp + 0x48]
test ebx, ebx
je 0x40fe16
mov byte [edx], 0x40
mov ecx, dword [esp + 0x90]
mov edx, eax
inc eax
inc ecx
mov bl, byte [ecx - 1]
mov byte [eax - 1], bl
test bl, bl
jne 0x40fe08
mov byte [edx], 0x2f
mov edx, dword [esp + 0x94]
inc eax
inc edx
mov cl, byte [edx - 1]
mov byte [eax - 1], cl
test cl, cl
jne 0x40fe20
mov eax, dword [esp + 0x70]
mov esi, dword [eax]
test esi, esi
je 0x4101e5
mov ebx, eax
mov eax, dword [esi]
test eax, eax
je 0x40fe5b
mov dword [esp + 4], ebp
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x41001e
js 0x40fe62
lea ebx, [esi + 0xc]
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x40fe3c
mov eax, dword [esp + 0x98]
test eax, eax
je 0x41001c
mov ecx, dword [esp + 0x78]
test ecx, ecx
jne 0x4100d4
mov byte [esp + 0x44], 0
xor edx, edx
mov esi, 1
mov eax, dword [esp + 0x7c]
and eax, 0xffffaaaa
sar eax, 1
mov ecx, dword [esp + 0x7c]
and ecx, 0x5555
add ecx, eax
mov eax, ecx
and eax, 0xffffcccc
sar eax, 2
and ecx, 0x3333
add eax, ecx
mov ecx, eax
sar ecx, 4
add eax, ecx
and eax, 0xf0f
mov ecx, eax
sar ecx, 8
add ecx, eax
mov eax, esi
shl eax, cl
lea eax, [edx + eax + 5]
shl eax, 2
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 0x3c], eax
test eax, eax
je 0x4101f5
mov eax, dword [esp + 0x3c]
mov dword [eax], ebp
cmp byte [esp + 0x44], 0
je 0x4101b4
mov edi, dword [esp + 0x3c]
mov dword [edi + 4], 1
mov dword [edi + 8], 0
mov eax, dword [ebx]
mov dword [edi + 0xc], eax
mov dword [ebx], edi
mov ebp, dword [esp + 0x7c]
test ebp, ebp
js 0x410121
mov eax, dword [esp + 0x7c]
not eax
mov dword [esp + 0x40], eax
xor ebx, ebx
mov eax, dword [esp + 0x74]
add eax, dword [esp + 0x78]
mov dword [esp + 0x38], eax
jmp 0x40ff3e
dec ebp
cmp ebp, 0xffffffff
je 0x410124
test dword [esp + 0x40], ebp
jne 0x40ff34
mov eax, ebp
and eax, 3
cmp eax, 3
je 0x40ff34
cmp byte [esp + 0x44], 0
je 0x410138
xor esi, esi
test esi, esi
je 0x410007
nop
cmp esi, dword [esp + 0x38]
jae 0x40ff34
mov dword [esp + 4], 0
mov dword [esp], esi
call sub.msvcrt.dll_strchr
lea esi, [eax + 1]
cmp dword [esp + 0x38], esi
jbe 0x40ff34
test esi, esi
je 0x40ff34
inc ebx
xor eax, eax
mov ecx, 0xffffffff
mov edi, esi
repne scasb al, byte es:[edi]
not ecx
mov dword [esp + 0x28], 1
mov eax, dword [esp + 0x94]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ebp
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call fcn.0040fc50
mov edi, dword [esp + 0x3c]
mov dword [edi + ebx*4 + 0xc], eax
test esi, esi
jne 0x40ff64
mov edx, dword [esp + 0x78]
test edx, edx
je 0x40ff34
mov esi, dword [esp + 0x74]
jmp 0x40ff83
xor esi, esi
mov dword [esp], ebp
call fcn.0041ab20
mov eax, esi
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x80]
cmp byte [eax + 1], 0x3a
jne 0x40fc82
lea esi, [esi]
mov dword [esp + 0x78], 0
jmp 0x40fc82
xor edx, edx
jmp 0x40fd2c
xor ebp, ebp
mov eax, dword [esp + 0x7c]
and eax, 2
mov dword [esp + 0x40], eax
jne 0x40fcce
xor esi, esi
mov eax, dword [esp + 0x7c]
and eax, 1
mov dword [esp + 0x44], eax
jne 0x40fcf3
xor ebx, ebx
jmp 0x40fd07
mov edi, eax
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
rep movsb byte es:[edi], byte [esi]
mov ebx, dword [esp + 0x78]
mov esi, eax
xor eax, eax
mov ecx, 0xffffffff
mov edi, esi
repne scasb al, byte es:[edi]
not ecx
lea edx, [ecx - 1]
sub ebx, ecx
je 0x4100bc
add edx, esi
lea esi, [edx + 1]
mov byte [edx], 0x3b
jmp 0x4100a0
mov edx, dword [esp + 0x78]
add edx, ebp
mov byte [edx - 1], 0x2f
mov eax, dword [esp + 0x80]
mov cl, byte [eax]
jmp 0x40fd78
mov eax, dword [esp + 0x78]
mov edi, eax
mov eax, dword [esp + 0x74]
mov ecx, eax
xor esi, esi
mov edx, 0xffffffff
xor eax, eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebp
mov ebx, ecx
mov ebp, edi
lea esi, [esi]
mov ecx, edx
mov edi, ebx
repne scasb al, byte es:[edi]
not ecx
add ebx, ecx
inc esi
sub ebp, ecx
jne 0x4100f8
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
cmp esi, 1
seta al
mov byte [esp + 0x44], al
movzx edx, al
jmp 0x40fe89
xor ebx, ebx
nop
mov eax, dword [esp + 0x3c]
mov dword [eax + ebx*4 + 0x10], 0
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
lea edi, [ebx + 1]
mov dword [esp + 0x28], 1
mov eax, dword [esp + 0x94]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ebp
mov eax, dword [esp + 0x78]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call fcn.0040fc50
mov edx, dword [esp + 0x3c]
mov dword [edx + ebx*4 + 0x10], eax
mov ebx, edi
jmp 0x40ff34
mov eax, dword [esp + 0x7c]
and eax, 3
cmp eax, 3
sete al
movzx eax, al
mov edi, dword [esp + 0x3c]
mov dword [edi + 4], eax
mov dword [edi + 8], 0
mov eax, dword [ebx]
mov dword [edi + 0xc], eax
mov dword [ebx], edi
mov eax, dword [esp + 0x7c]
lea ebp, [eax - 1]
jmp 0x40ff12
mov ebx, dword [esp + 0x70]
jmp 0x40fe62
xor eax, eax
jmp 0x410028
mov dword [esp], ebp
call fcn.0041ab20
xor eax, eax
jmp 0x410028