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

Disassembly:
jmp 0x788e40
sub esp, 0x58
push ebx
mov ebx, dword [esp + 0x60]
push edi
mov edi, ecx
mov al, byte [ebx + 8]
cmp al, 0x38
je 0x788e83
cmp al, 0x39
je 0x788e83
cmp al, 0x50
je 0x788e83
cmp al, 0x54
je 0x788e83
cmp al, 0x3d
je 0x788e83
cmp al, 0x3c
je 0x788e83
lea eax, [esp + 0x68]
mov dword [esp + 0x68], ebx
push eax
push str.This_instruction_shall_not_have_a_TBAA_access_tag_
call fcn.004080d5
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
mov eax, dword [esp + 0x68]
push ebp
push esi
mov ebp, dword [eax + 8]
lea ecx, [ebp*4]
sub eax, ecx
mov dword [esp + 0x6c], eax
mov esi, dword [eax]
push esi
call fcn.00414a79
add esp, 4
test al, al
je 0x7893dd
cmp ebp, 3
jb 0x7893dd
test esi, esi
je 0x788ec6
push esi
call fcn.00414a79
add esp, 4
test al, al
jne 0x788ec8
xor esi, esi
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x24], esi
mov eax, dword [eax + 4]
mov dword [esp + 0x6c], eax
test eax, eax
je 0x788eee
push eax
call fcn.00414a79
add esp, 4
test al, al
je 0x788eee
mov eax, dword [esp + 0x6c]
jmp 0x788ef4
xor eax, eax
mov dword [esp + 0x6c], eax
push eax
mov dword [esp + 0x1c], eax
call fcn.0076e6e0
mov dl, al
add esp, 4
mov byte [esp + 0x14], dl
test dl, dl
je 0x788f7e
cmp ebp, 4
je 0x788f3b
cmp ebp, 5
je 0x788f3b
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
mov ecx, edi
push eax
push str.Access_tag_metadata_must_have_either_4_or_5_operands
call fcn.00415037
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
mov eax, dword [esp + 0x70]
lea ecx, [ebp*4]
sub eax, ecx
add eax, 0xc
push eax
call fcn.00415447
add esp, 4
test eax, eax
jne 0x788fa9
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
mov ecx, edi
push eax
push str.Access_size_field_must_be_a_constant
call fcn.004158fc
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
cmp ebp, 5
jb 0x788fad
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
mov ecx, edi
push eax
push str.Struct_tag_metadata_must_have_either_3_or_4_operands
call fcn.00415037
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
mov dl, byte [esp + 0x14]
movzx ecx, dl
add ecx, 3
lea eax, [ecx + 1]
cmp ebp, eax
jne 0x789042
mov eax, dword [esp + 0x70]
sub ecx, ebp
lea eax, [eax + ecx*4]
push eax
call fcn.00415447
add esp, 4
test eax, eax
jne 0x788ffa
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
mov ecx, edi
push eax
push str.Immutability_tag_on_struct_tag_metadata_must_be_a_constant
call fcn.00415a5f
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
mov ecx, dword [eax + 0x18]
lea ebp, [eax + 0x10]
cmp ecx, 0x40
ja 0x789015
mov eax, dword [ebp]
or eax, dword [ebp + 4]
jne 0x789011
mov al, 1
jmp 0x789029
xor al, al
jmp 0x789029
mov dword [esp + 0x1c], ecx
mov ecx, ebp
call fcn.00412b61
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
sete al
test al, al
jne 0x78903e
cmp ecx, 0x40
ja 0x789091
cmp dword [ebp], 1
jne 0x7890a2
cmp dword [ebp + 4], 0
jne 0x7890a2
mov dl, byte [esp + 0x14]
test esi, esi
je 0x7893ad
mov ebp, dword [esp + 0x6c]
test ebp, ebp
je 0x7893ad
test dl, dl
jne 0x7890c8
push ebp
mov ecx, edi
call fcn.0040f57e
test al, al
jne 0x7890c8
lea eax, [esp + 0x18]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x74]
mov ecx, edi
push eax
lea eax, [esp + 0x74]
push eax
push str.Access_type_node_must_be_a_valid_scalar_type
call fcn.00414dc1
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
mov ecx, ebp
call fcn.00412b61
mov ecx, eax
mov eax, dword [ebp + 8]
dec eax
cmp ecx, eax
je 0x78903e
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
mov ecx, edi
push eax
push str.Immutability_part_of_the_struct_tag_metadata_must_be_either_0_or_1
call fcn.0040c8e2
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
mov ecx, dword [esp + 0x70]
mov eax, 2
sub eax, dword [ecx + 8]
lea eax, [ecx + eax*4]
push eax
call fcn.00415447
add esp, 4
test eax, eax
jne 0x78910a
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
mov ecx, edi
push eax
push str.Offset_must_be_constant_integer
call fcn.00401861
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
add eax, 0x10
lea ecx, [esp + 0x34]
push eax
call fcn.0040ac18
lea eax, [esp + 0x58]
mov byte [esp + 0x6c], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], 4
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
push esi
call fcn.0076c370
add esp, 4
test al, al
jne 0x7892fa
push esi
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x4c]
call fcn.0040608c
call fcn.0040cae0
mov ecx, dword [esp + 0x48]
test al, al
mov eax, dword [esp + 0x50]
je 0x789193
cmp ecx, dword [esp + 0x44]
je 0x78917b
mov eax, dword [esp + 0x4c]
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x24]
cmp eax, edx
jne 0x78918c
mov eax, ecx
push ecx
push eax
jmp 0x7891a5
add eax, 4
push ecx
push eax
jmp 0x7891a5
cmp ecx, dword [esp + 0x44]
je 0x78919d
mov eax, dword [esp + 0x4c]
lea eax, [ecx + eax*4]
push eax
push dword [esp + 0x28]
lea ecx, [esp + 0x24]
call fcn.0040351c
cmp byte [esp + 0x28], 0
mov ecx, edi
je 0x789352
push dword [esp + 0x14]
lea eax, [esp + 0x30]
push esi
push ebx
push eax
call fcn.00401a3c
mov cl, byte [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x18], eax
test cl, cl
jne 0x78931b
cmp esi, ebp
mov ecx, edi
push esi
sete al
or byte [esp + 0x70], al
call fcn.0040f57e
test al, al
jne 0x7891fb
cmp esi, ebp
je 0x7891fb
mov edx, dword [esp + 0x3c]
jmp 0x789240
mov edx, dword [esp + 0x3c]
cmp edx, 0x40
jbe 0x789230
lea ecx, [esp + 0x34]
call fcn.00412b61
mov edx, dword [esp + 0x3c]
mov ecx, eax
mov eax, edx
sub eax, ecx
cmp eax, 0x40
ja 0x789323
cmp edx, 0x40
jbe 0x789230
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jmp 0x789238
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
or ecx, eax
jne 0x789323
mov eax, dword [esp + 0x18]
cmp eax, edx
je 0x7892cb
test eax, eax
jne 0x789289
cmp edx, 0x40
jbe 0x78927d
lea ecx, [esp + 0x34]
call fcn.00412b61
mov edx, dword [esp + 0x3c]
mov ecx, eax
mov eax, edx
sub eax, ecx
cmp eax, 0x40
ja 0x789289
cmp edx, 0x40
jbe 0x78927d
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jmp 0x789285
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
or ecx, eax
je 0x7892cb
mov al, byte [esp + 0x14]
test al, al
je 0x789298
cmp dword [esp + 0x18], 0xffffffff
je 0x7892cf
lea eax, [esp + 0x6c]
mov dword [esp + 0x6c], edx
push eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x20], ebx
push eax
lea eax, [esp + 0x78]
mov ecx, edi
push eax
lea eax, [esp + 0x28]
push eax
push str.Access_bit_width_not_the_same_as_description_bit_width
call fcn.004041d3
mov edx, dword [esp + 0x3c]
xor bl, bl
jmp 0x789378
mov al, byte [esp + 0x14]
test al, al
je 0x7892de
cmp byte [esp + 0x6c], 0
jne 0x789376
push dword [esp + 0x14]
lea eax, [esp + 0x38]
mov ecx, edi
push eax
push esi
push ebx
call fcn.0040f943
mov esi, eax
test esi, esi
jne 0x789140
cmp byte [esp + 0x6c], 0
jne 0x789372
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
mov ecx, edi
push eax
push str.Did_not_see_access_type_in_access_path_
call fcn.004116df
mov edx, dword [esp + 0x3c]
xor bl, bl
jmp 0x789378
lea eax, [esp + 0x34]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x6c], eax
mov ecx, edi
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x24]
push eax
push str.Offset_not_zero_at_the_point_of_scalar_access
call fcn.0040879c
mov edx, dword [esp + 0x3c]
xor bl, bl
jmp 0x789378
lea eax, [esp + 0x70]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x70]
push eax
push str.Cycle_detected_in_struct_path
call fcn.0040d477
mov edx, dword [esp + 0x3c]
xor bl, bl
jmp 0x789378
mov edx, dword [esp + 0x3c]
mov bl, 1
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x44]
je 0x789390
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edx, dword [esp + 0x40]
add esp, 4
cmp edx, 0x40
jbe 0x7893a1
push dword [esp + 0x34]
call fcn.0040dae4
add esp, 4
pop esi
pop ebp
pop edi
mov al, bl
pop ebx
add esp, 0x58
ret 8
lea eax, [esp + 0x18]
mov dword [esp + 0x6c], ebx
push eax
lea eax, [esp + 0x28]
mov ecx, edi
push eax
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0x78]
push eax
push str.Malformed_struct_tag_metadata:_base_and_access_type_should_be_non_null_and_point_to_Metadata_nodes
call fcn.00411608
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8
lea eax, [esp + 0x70]
mov dword [esp + 0x70], ebx
push eax
push str.Old_style_TBAA_is_no_longer_allowed__use_struct_path_TBAA_instead
mov ecx, edi
call fcn.004123eb
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x58
ret 8