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

Disassembly:
sub esp, 0x58
mov eax, dword [0x4a631c]
push ebx
push ebp
xor ebx, ebx
mov dword [esp + 0x10], ebx
mov dword [0x4a6324], ebx
push esi
push edi
mov edi, ebx
test eax, eax
je 0x431b61
cmp dword [esp + 0x7c], ebx
jne 0x431b61
push eax
push ebx
push dword [0x4a5a70]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [0x4a631c], ebx
mov eax, dword [0x4a6320]
test eax, eax
je 0x431b7e
push eax
push ebx
push dword [0x4a5a70]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [0x4a6320], ebx
and dword [esp + 0x80], 1
mov ebp, 0x104
je 0x431baf
mov eax, 0x7d000
push eax
push 8
push dword [0x4a5a70]
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
mov dword [0x4a631c], esi
jmp 0x431bca
push ebp
push 8
push dword [0x4a5a70]
mov dword [esp + 0x1c], ebp
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
mov dword [0x4a6320], esi
test esi, esi
je 0x431d6e
mov eax, dword [esp + 0x74]
test eax, eax
jne 0x431be3
mov eax, 0x48900e
mov dword [esp + 0x74], eax
push eax
call sub.MSVCRT.dll_strlen
pop ecx
add eax, 3
push eax
push 8
push dword [0x4a5a70]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [esp + 0x14], eax
test eax, eax
je 0x431d6e
push dword [esp + 0x74]
push eax
call sub.MSVCRT.dll_strcpy
mov eax, dword [esp + 0x1c]
pop ecx
pop ecx
mov ecx, eax
cmp byte [eax], bl
je 0x431c2a
cmp byte [ecx], 0x7c
jne 0x431c25
mov byte [ecx], bl
inc ecx
cmp byte [ecx], bl
jne 0x431c1e
cmp dword [esp + 0x70], ebx
je 0x431cbd
push dword [esp + 0x70]
call sub.MSVCRT.dll_strlen
pop ecx
add eax, 2
push eax
push 8
push dword [0x4a5a70]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push dword [esp + 0x70]
mov edi, eax
push edi
call sub.MSVCRT.dll_strcpy
push edi
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [edi + eax]
jmp 0x431c6f
cmp ecx, edi
jbe 0x431c94
dec ecx
cmp byte [ecx], 0x5c
jne 0x431c6a
cmp ecx, edi
jbe 0x431c94
mov eax, dword [esp + 0x10]
dec eax
mov byte [ecx], bl
push eax
lea eax, [ecx + 1]
push eax
push esi
call sub.MSVCRT.dll_strncpy
mov eax, dword [esp + 0x1c]
mov byte [esi + eax - 1], bl
jmp 0x431cae
mov eax, dword [esp + 0x10]
dec eax
push eax
push dword [esp + 0x74]
push esi
call sub.MSVCRT.dll_strncpy
mov eax, dword [esp + 0x1c]
mov byte [esi + eax - 1], bl
mov byte [edi], bl
add esp, 0xc
push esi
call fcn.0043a81d
test eax, eax
jne 0x431cbd
mov byte [esi], bl
push 0x4c
lea eax, [esp + 0x20]
push ebx
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
mov dword [esp + 0x1c], 0x4c
call fcn.0043230c
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x78]
inc eax
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], 0x8080c
cmp dword [esp + 0x80], ebx
je 0x431d20
mov dword [esp + 0x50], 0x80a0c
push 1
call fcn.004323c3
cmp dword [esp + 0x7c], 1
lea eax, [esp + 0x1c]
push eax
jne 0x431d3b
call dword [sym.imp.COMDLG32.DLL_GetSaveFileNameA]
jmp 0x431d41
call dword [sym.imp.COMDLG32.DLL_GetOpenFileNameA]
push ebx
mov dword [esp + 0x1c], eax
call fcn.004323c3
push dword [esp + 0x14]
push ebx
push dword [0x4a5a70]
call dword [sym.imp.KERNEL32.dll_HeapFree]
test edi, edi
je 0x431d6e
push edi
push ebx
push dword [0x4a5a70]
call dword [sym.imp.KERNEL32.dll_HeapFree]
push dword [esp + 0x84]
push ebp
call fcn.00444b10
mov edi, eax
mov byte [edi], bl
cmp dword [esp + 0x18], ebx
je 0x431e32
mov ecx, dword [esp + 0x34]
mov dword [0x4a6324], ecx
push esi
cmp dword [esp + 0x84], ebx
je 0x431e21
call sub.MSVCRT.dll_strlen
inc eax
pop ecx
mov dword [0x4a6318], eax
push esi
cmp byte [eax + esi], bl
jne 0x431dc3
push edi
call sub.MSVCRT.dll_strcpy
mov byte [esi], bl
mov dword [0x4a6318], ebx
jmp 0x431e27
push 0x4a6328
call sub.MSVCRT.dll_strcpy
push 0x4a6328
call sub.MSVCRT.dll_strlen
mov ecx, 0x4a6328
add esp, 0xc
cmp byte [eax + ecx - 1], 0x5c
je 0x431dec
mov word [eax + ecx], 0x5c
push ecx
push edi
call sub.MSVCRT.dll_strcpy
mov eax, dword [0x4a6318]
add eax, esi
push eax
push edi
call sub.MSVCRT.dll_strcat
mov eax, dword [0x4a6318]
add eax, esi
push eax
call sub.MSVCRT.dll_strlen
mov ecx, dword [0x4a6318]
add esp, 0x14
inc ecx
add eax, ecx
mov dword [0x4a6318], eax
jmp 0x431e29
push edi
call sub.MSVCRT.dll_strcpy
pop ecx
pop ecx
push edi
call sub.MSVCRT.dll_strlen
pop ecx
mov ebx, eax
sub ebp, ebx
push ebp
call fcn.00444bb0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret