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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov ebx, dword [esp + 0x98]
test ebx, ebx
je 0x452540
mov eax, dword [esp + 0x94]
mov dword [esp], eax
call sym._htab_hash_string
mov dword [esp + 0xc], 1
mov dword [esp + 8], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xa8]
mov dword [esp], eax
call sym._htab_find_slot_with_hash
mov edx, dword [esp + 0x98]
mov dword [esp + 0x3c], eax
mov eax, dword [eax]
test eax, eax
jne 0x451eae
jmp 0x451ec0
mov eax, dword [eax]
test eax, eax
je 0x451ec0
cmp edx, dword [eax + 4]
jne 0x451ea8
mov ebp, dword [eax + 0xc]
add esp, 0x7c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 4], 0x68
mov dword [esp], 1
call sym._xcalloc
mov dword [eax + 0x58], 0xffffffff
mov ebp, eax
mov eax, dword [esp + 0x98]
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 0x94]
mov dword [esp], eax
call sym._xstrdup
cmp dword [esp + 0xa0], 2
mov dword [ebp], eax
mov edi, eax
je 0x45208f
mov eax, dword [esp + 0x90]
mov edx, dword [eax]
xor eax, eax
test edx, edx
je 0x451f25
mov eax, dword [edx + 0x2c]
movzx eax, byte [eax + 0x62]
shr al, 3
and eax, 1
movzx edx, byte [ebp + 0x62]
and eax, 1
shl eax, 3
and edx, 0xfffffff7
or eax, edx
cmp dword [esp + 0xa0], 1
mov byte [ebp + 0x62], al
jne 0x452093
mov byte [esp + 0x29], 0
mov byte [esp + 0x2a], 0
mov eax, dword [esp + 0x90]
xor esi, esi
mov eax, dword [eax + 0xa0]
mov dword [ebp + 0x10], eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xa0], ebp
mov eax, dword [esp + 0x90]
mov edx, dword [eax + 0xb0]
mov eax, dword [edx]
cmp eax, 0x7f
je 0x4526c9
mov ecx, eax
lea ebx, [eax + 1]
shl ecx, 4
add ecx, 8
mov dword [edx], ebx
mov ebx, dword [esp + 0x3c]
shl eax, 4
add eax, edx
add edx, ecx
cmp byte [esp + 0x2a], 0
mov edi, dword [ebx]
mov dword [eax + 0x14], ebp
mov dword [eax + 8], edi
mov edi, dword [esp + 0x98]
mov dword [eax + 0xc], edi
mov edi, dword [esp + 0xa4]
mov dword [eax + 0x10], edi
mov dword [ebx], edx
je 0x452020
mov eax, dword [esp + 0x90]
mov edx, dword [eax + 0x78]
cmp edx, dword [esp + 0x98]
je 0x452020
cmp edx, esi
je 0x452020
mov ebx, dword [eax + 0xb0]
mov eax, dword [ebx]
cmp eax, 0x7f
je 0x45290e
mov edi, eax
lea ecx, [eax + 1]
shl edi, 4
add edi, 8
mov dword [esp + 0x14], edi
mov dword [ebx], ecx
shl eax, 4
mov ecx, dword [esp + 0x3c]
add eax, ebx
add ebx, dword [esp + 0x14]
mov edi, dword [ecx]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0xa4]
mov dword [eax + 0x14], ebp
mov dword [eax + 8], edi
mov dword [eax + 0x10], edx
mov dword [ecx], ebx
cmp byte [esp + 0x29], 0
je 0x451eb6
mov eax, dword [esp + 0x90]
mov edx, dword [eax + 0x74]
cmp edx, esi
je 0x451eb6
cmp edx, dword [esp + 0x98]
je 0x451eb6
mov ecx, dword [eax + 0xb0]
mov eax, dword [ecx]
cmp eax, 0x7f
je 0x452956
mov ebx, eax
lea esi, [eax + 1]
shl ebx, 4
add ebx, 8
mov dword [ecx], esi
shl eax, 4
mov esi, dword [esp + 0x3c]
add eax, ecx
add ecx, ebx
mov edi, dword [esi]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0xa4]
mov dword [eax + 0x14], ebp
mov dword [eax + 8], edi
mov dword [eax + 0x10], edx
mov dword [esi], ecx
jmp 0x451eb6
or byte [ebp + 0x62], 8
mov eax, dword [esp + 0x90]
mov esi, dword [ebp + 0x20]
mov byte [esp + 0x2b], 0
mov byte [esp + 0x29], 0
add eax, 0xb8
mov byte [esp + 0x2a], 0
mov dword [esp + 0x2c], eax
mov eax, ebp
mov ebp, edi
mov edi, esi
mov esi, eax
mov eax, dword [esp + 0x90]
cmp byte [eax + 0x2a9], 0
jne 0x4521b6
lea esi, [esi]
mov eax, dword [edi + 0x18]
test eax, eax
je 0x452530
mov dword [esp + 4], edi
mov dword [esp], ebp
call eax
mov ebx, eax
test ebx, ebx
je 0x452398
mov eax, dword [esp + 0x90]
cmp byte [eax + 0x301], 0
jne 0x45210f
mov eax, dword [esi + 0x20]
cmp byte [eax + 0xc], 0
jne 0x452145
mov dword [esp], ebx
call sym._lrealpath
mov edi, eax
test eax, eax
je 0x452510
mov dword [esp], eax
call sym._strlen
mov dword [esp], ebx
mov ebp, eax
call sym._strlen
cmp ebp, eax
jae 0x452510
mov dword [esp], ebx
mov ebx, edi
call sym._free
mov dword [esp], ebx
call sym._htab_hash_string
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov edi, eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xb4]
mov dword [esp], eax
call sym._htab_find_with_hash
test eax, eax
je 0x4523b0
mov dword [esi + 0x5c], 2
mov eax, dword [esi + 0x20]
mov edi, dword [eax]
mov dword [esi + 0x20], edi
test edi, edi
je 0x45261f
mov eax, dword [esp + 0x90]
cmp edi, dword [eax + 0x78]
je 0x452520
cmp edi, dword [eax + 0x74]
je 0x452210
mov eax, dword [esp + 0x90]
mov ebp, dword [esi]
cmp byte [eax + 0x2a9], 0
je 0x4520d8
mov eax, dword [edi + 0x14]
mov dword [esp + 0x18], esi
test eax, eax
je 0x452382
mov eax, dword [eax]
xor ebx, ebx
test eax, eax
jne 0x4521e5
jmp 0x452260
mov eax, dword [edi + 0x14]
add ebx, 2
mov eax, dword [eax + ebx*4]
test eax, eax
je 0x452260
mov dword [esp + 4], ebp
mov dword [esp], eax
call sym._filename_cmp
test eax, eax
jne 0x4521d8
mov eax, dword [edi + 0x14]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + ebx*4 + 4]
mov dword [esp], eax
call sym._xstrdup
mov ebx, eax
jmp 0x4520f6
mov byte [esp + 0x29], 1
mov eax, dword [esp + 0x3c]
mov ebx, dword [eax]
test ebx, ebx
jne 0x452232
jmp 0x4521a0
mov ebx, dword [ebx]
test ebx, ebx
je 0x4521a0
cmp edi, dword [ebx + 4]
jne 0x452228
mov ebp, esi
mov esi, edi
mov eax, dword [ebp]
mov dword [esp], eax
call sym._free
mov dword [esp], ebp
call sym._free
mov ebp, dword [ebx + 0xc]
jmp 0x451f6e
movzx eax, byte [ebp]
cmp al, 0x2f
je 0x45270b
cmp al, 0x5c
je 0x45270b
test al, al
je 0x452282
cmp byte [ebp + 1], 0x3a
je 0x45270b
mov dword [esp + 4], 0x2f
mov dword [esp], ebp
call sym._strchr
mov dword [esp + 4], 0x5c
mov dword [esp], ebp
mov esi, eax
call sym._strchr
test esi, esi
mov edx, eax
sete al
cmp esi, edx
seta cl
or al, cl
je 0x4522bb
test edx, edx
mov esi, edx
sete al
cmp ebp, esi
je 0x45270b
test al, al
jne 0x45270b
mov edx, dword [edi + 8]
mov eax, esi
sub eax, ebp
add edx, eax
mov dword [esp + 0x20], eax
lea eax, [edx + 1]
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], eax
lea eax, [edx + 3]
mov dword [esp], eax
call sym._xmalloc
mov ebx, eax
mov eax, dword [edi + 8]
lea ecx, [ebx + eax]
mov dword [esp + 0x14], ecx
mov ecx, dword [edi + 4]
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], ebx
call sym._memcpy
mov eax, dword [edi + 8]
test eax, eax
je 0x45233d
mov ecx, dword [edi + 4]
movzx eax, byte [ecx + eax - 1]
cmp al, 0x2f
je 0x45233d
cmp al, 0x5c
je 0x45233d
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
mov byte [eax], 0x2f
lea ecx, [edx + 2]
add eax, 1
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], ebp
lea ebp, [esi + 1]
add eax, 1
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
mov dword [esp], eax
call sym._memcpy
mov eax, dword [esp + 0x1c]
mov edx, ebx
mov byte [ebx + eax], 0
mov eax, dword [esp + 0x90]
movzx ecx, byte [edi + 0xc]
call sym.make_cpp_dir_cpp_reader__char_const__int_
mov edi, eax
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x4521c5
mov eax, edi
call sym.read_name_map_cpp_dir_
mov eax, dword [edi + 0x14]
jmp 0x4521c5
mov dword [esi + 0x5c], 2
mov dword [esi + 4], 0
jmp 0x45217b
mov eax, dword [esi]
mov dword [esi + 4], ebx
cmp byte [eax], 0
je 0x4523f6
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 0x238]
test ecx, ecx
je 0x4523f6
mov eax, dword [eax + 0xa0]
test eax, eax
je 0x45257a
test byte [eax + 0x62], 8
jne 0x45256f
mov ecx, dword [esp + 0x90]
cmp dword [ecx + 0xa4], eax
je 0x45257a
mov eax, esi
call sym.open_file__cpp_file_
test al, al
jne 0x4526c2
cmp dword [esi + 0x5c], 2
jne 0x452775
mov dword [esp], ebx
call sym._strlen
mov ebp, eax
mov eax, dword [esp + 0x90]
lea ecx, [ebp + 1]
mov edx, dword [eax + 0xc4]
mov eax, dword [eax + 0xc8]
mov dword [esp + 0x14], eax
sub eax, edx
cmp eax, ecx
jb 0x452796
mov dword [esp + 8], ebp
mov dword [esp], edx
mov dword [esp + 4], ebx
call sym._memcpy
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x90]
mov edx, dword [eax + 0xc4]
add edx, ebp
lea eax, [edx + 1]
mov dword [ecx + 0xc4], eax
mov byte [edx], 0
mov ebp, dword [ecx + 0xc0]
mov eax, dword [ecx + 0xc4]
cmp ebp, eax
je 0x4527b8
mov ecx, dword [esp + 0x90]
mov edx, dword [ecx + 0xd0]
mov ecx, dword [ecx + 0xbc]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x90]
add eax, edx
not edx
and eax, edx
mov edx, dword [ecx + 0xc8]
mov ecx, eax
sub ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ecx
mov ecx, edx
sub ecx, dword [esp + 0x14]
cmp dword [esp + 0x18], ecx
cmovbe edx, eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xc4], edx
mov dword [eax + 0xc0], edx
mov dword [esp], ebx
call sym._free
mov eax, dword [esp + 0x90]
mov dword [esp + 8], edi
mov dword [esp + 0xc], 1
mov dword [esp + 4], ebp
mov eax, dword [eax + 0xb4]
mov dword [esp], eax
call sym._htab_find_slot_with_hash
mov dword [eax], ebp
mov eax, dword [esi]
mov dword [esi + 4], eax
jmp 0x45217b
mov dword [esp], edi
call sym._free
jmp 0x452145
mov byte [esp + 0x2a], 1
jmp 0x452215
mov edx, edi
mov eax, ebp
call sym.append_file_to_dir_char_const__cpp_dir_
mov ebx, eax
jmp 0x4520ee
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xc], str.NULL_directory_in_find_file
mov dword [esp + 4], 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x90]
mov dword [esp], eax
call sym.cpp_error_at_cpp_reader__cpp_diagnostic_level__unsigned_int__char_const__..._
jmp 0x451e56
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x4523d9
mov dword [esp], ebx
call sym._strlen
lea edx, [eax + 5]
mov dword [esp + 0x14], eax
mov dword [esp], edx
mov dword [esp + 0x18], edx
call sym._xmalloc
mov ecx, dword [esp + 0x14]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov ebp, eax
mov dword [esp + 8], ecx
call sym._memcpy
mov ecx, dword [esp + 0x14]
mov eax, dword [str..gch]
mov dword [ebp + ecx], eax
movzx eax, byte [0x55c3f0]
mov byte [ebp + ecx + 4], al
lea eax, [esp + 0x40]
mov dword [esp + 4], eax
mov dword [esp], ebp
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat32i64]
test eax, eax
jne 0x452612
movzx eax, word [esp + 0x46]
and ax, 0xf000
cmp ax, 0x4000
je 0x4527c4
mov eax, dword [esp + 0x90]
mov edx, esi
mov ecx, ebp
call sym.validate_pch_cpp_reader___cpp_file__char_const_
mov edx, eax
test dl, dl
je 0x45260d
mov eax, ebp
mov ebp, esi
mov dword [esi + 8], eax
jmp 0x451f4f
mov byte [esp + 0x2b], 1
mov dword [esp], ebp
call sym._free
jmp 0x4523f6
mov eax, dword [esp + 0x90]
mov ebp, esi
mov eax, dword [eax + 0x240]
test eax, eax
je 0x452677
mov ecx, dword [esp + 0x94]
lea edx, [esi + 0x20]
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x90]
mov dword [esp], ecx
call eax
mov dword [esi + 4], eax
test eax, eax
je 0x452671
mov eax, esi
call sym.open_file__cpp_file_
test al, al
jne 0x4528b0
mov eax, dword [esi + 4]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp]
mov dword [ebp + 4], eax
cmp byte [esp + 0x2b], 0
jne 0x452719
cmp dword [esp + 0xa0], 2
je 0x45299b
cmp dword [esp + 0xa0], 3
je 0x451f4f
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x9c]
mov edx, ebp
mov dword [esp], eax
mov eax, dword [esp + 0x90]
call sym.open_file_failed_cpp_reader___cpp_file__int__unsigned_int_
jmp 0x451f4f
mov ebp, esi
jmp 0x451f4f
mov dword [esp], 0x7f8
mov ebx, 1
call sym._xmalloc
mov ecx, 8
mov edx, eax
mov dword [eax], 0
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xb0]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xb0], edx
xor eax, eax
jmp 0x451f91
mov esi, dword [esp + 0x18]
mov edi, dword [esi + 0x20]
mov ebp, dword [esi]
jmp 0x4520d8
mov eax, dword [esp + 0x90]
mov dword [esp + 8], str.one_or_more_PCH_files_were_found__but_they_were_invalid
mov dword [esp + 4], 3
mov dword [esp], eax
call sym.cpp_error_cpp_reader__cpp_diagnostic_level__char_const__..._
mov eax, dword [esp + 0x90]
mov dword [esp], eax
call sym.cpp_get_options_cpp_reader_
cmp byte [eax + 0x4c], 0
jne 0x452682
mov eax, dword [esp + 0x90]
mov dword [esp + 8], str.use__Winvalid_pch_for_more_information
mov dword [esp + 4], 5
mov dword [esp], eax
call sym.cpp_error_cpp_reader__cpp_diagnostic_level__char_const__..._
jmp 0x452682
mov eax, dword [esp + 0xa4]
xor ecx, ecx
mov edx, esi
mov ebp, esi
mov dword [esp], eax
mov eax, dword [esp + 0x90]
call sym.open_file_failed_cpp_reader___cpp_file__int__unsigned_int_
jmp 0x451f4f
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym.__obstack_newchunk
mov eax, dword [esp + 0x90]
mov edx, dword [eax + 0xc4]
jmp 0x45243d
or byte [ecx + 0xe0], 2
jmp 0x452483
mov dword [esp], ebp
call sym._opendir
mov dword [esp + 0x1c], eax
test eax, eax
je 0x45260d
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], edi
mov byte [ebp + eax + 4], 0x2f
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], eax
lea esi, [esi]
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
call sym._readdir
mov ebx, eax
test eax, eax
je 0x4528ff
lea edi, [ebx + 8]
mov dword [esp], edi
call sym._strlen
cmp byte [ebx + 8], 0x2e
jne 0x452825
cmp byte [edi + 1], 0
je 0x4527f8
cmp byte [ebx + 8], 0x2e
jne 0x452837
cmp byte [edi + 1], 0x2e
jne 0x452837
cmp byte [edi + 2], 0
je 0x4527f8
lea ebx, [eax + 1]
mov eax, dword [esp + 0x18]
add eax, ebx
cmp eax, dword [esp + 0x14]
ja 0x452894
mov eax, dword [esp + 0x18]
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
add eax, ebp
mov dword [esp], eax
call sym._memcpy
mov eax, dword [esp + 0x90]
mov ecx, ebp
mov edx, esi
call sym.validate_pch_cpp_reader___cpp_file__char_const_
test al, al
je 0x4527f8
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov edx, eax
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x14], dl
mov dword [esp], eax
call sym._closedir
movzx edx, byte [esp + 0x14]
jmp 0x4525fd
mov eax, dword [esp + 0x14]
mov dword [esp], ebp
lea eax, [eax + ebx + 0x40]
mov dword [esp + 4], eax
mov dword [esp + 0x14], eax
call sym._xrealloc
mov ebp, eax
jmp 0x452846
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xa0]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xa0], esi
mov eax, dword [esp + 0x3c]
mov edx, dword [eax]
test edx, edx
jne 0x451eb6
mov dword [eax], esi
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xa8]
mov dword [esp], eax
call sym._htab_clear_slot
jmp 0x451eb6
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
xor edx, edx
jmp 0x45287a
mov dword [esp], 0x7f8
call sym._xmalloc
mov dword [esp + 0x14], 8
mov ecx, 1
mov ebx, eax
mov dword [eax], 0
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xb0]
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xb0], ebx
mov edx, dword [eax + 0x78]
xor eax, eax
jmp 0x451ffa
mov dword [esp], 0x7f8
mov ebx, 8
mov esi, 1
call sym._xmalloc
mov ecx, eax
mov dword [eax], 0
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xb0]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x90]
mov dword [eax + 0xb0], ecx
mov edx, dword [eax + 0x74]
xor eax, eax
jmp 0x452066
mov eax, dword [ebp]
mov dword [esp], eax
call sym._free
mov dword [esp], ebp
call sym._free
mov eax, dword [esp + 0x3c]
mov ebp, dword [eax]
test ebp, ebp
je 0x4529bf
xor ebp, ebp
jmp 0x451eb6
lea edx, [esp + 0x3c]
mov dword [eax], edx
jmp 0x4528dd