Function at 0x404380
Capabilities:
Parse pe header

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x1c
mov edx, dword [eax + 0xc]
movzx eax, byte [edx]
cmp al, 0x4c
je 0x4046b0
cmp al, 0x54
je 0x4046c0
cmp al, 0x73
je 0x4043f8
cmp al, 0x66
je 0x404458
lea ecx, [eax - 0x30]
cmp cl, 9
jbe 0x4043c7
cmp al, 0x6f
jne 0x4044f0
cmp byte [edx + 1], 0x6e
jne 0x40440c
add edx, 2
mov dword [ebx + 0xc], edx
xor ecx, ecx
xor edx, edx
mov eax, ebx
call sym._d_unqualified_name
mov esi, eax
test eax, eax
je 0x4046a0
mov eax, dword [ebx + 0xc]
cmp byte [eax], 0x49
je 0x404600
add esp, 0x1c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [edx + 1]
cmp al, 0x72
je 0x4045b0
cmp al, 0x70
je 0x404868
mov eax, ebx
call sym._d_operator_name
mov esi, eax
test eax, eax
je 0x4046a0
mov eax, dword [eax]
cmp eax, 0x33
je 0x404550
cmp eax, 0x34
je 0x404710
cmp eax, 0x35
jne 0x4046a0
mov eax, dword [ebx + 0xc]
cmp byte [eax], 0x5f
je 0x404800
mov eax, ebx
call sym._d_expression_1
jmp 0x404590
cmp byte [edx + 1], 0x70
jne 0x40440c
lea eax, [edx + 2]
mov dword [ebx + 0xc], eax
movzx eax, byte [edx + 2]
cmp al, 0x54
je 0x404858
cmp al, 0x5f
je 0x4047f0
cmp al, 0x6e
je 0x4046a0
mov eax, ebx
call sym._d_number
mov ecx, eax
add ecx, 1
js 0x4046a0
mov edx, dword [ebx + 0xc]
cmp byte [edx], 0x5f
jne 0x4046a0
add edx, 1
mov dword [ebx + 0xc], edx
cmp ecx, 0x7fffffff
je 0x4046a0
lea edx, [eax + 2]
mov eax, dword [ebx + 0x14]
cmp eax, dword [ebx + 0x18]
jge 0x4046a0
mov ecx, dword [ebx + 0x10]
lea esi, [eax + eax*4]
add eax, 1
lea esi, [ecx + esi*4]
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [ebx + 0x14], eax
mov dword [esi], 6
mov dword [esi + 0xc], edx
jmp 0x4043e8
cmp al, 0x69
je 0x4044fc
cmp al, 0x74
jne 0x4046d0
cmp byte [edx + 1], 0x6c
jne 0x40440c
add edx, 2
xor esi, esi
mov dword [ebx + 0xc], edx
cmp al, 0x74
je 0x404918
cmp byte [edx], 0
je 0x4046a0
cmp byte [edx + 1], 0
je 0x4046a0
mov edx, 0x45
mov eax, ebx
call sym._d_exprlist
mov ecx, esi
mov edx, 0x32
mov dword [esp], eax
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
mov edx, dword [esi + 0xc]
mov edi, dword [edx]
mov eax, dword [edx + 8]
sub eax, 2
add dword [ebx + 0x2c], eax
movzx eax, byte [edi]
cmp eax, 0x73
jne 0x404628
cmp byte [edi + 1], 0x74
jne 0x404628
cmp byte [edi + 2], 0
jne 0x404628
mov eax, ebx
call sym._d_type
lea esi, cs:[esi]
lea esi, [esi]
mov dword [esp], eax
mov ecx, esi
mov edx, 0x38
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
lea eax, [edx + 2]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0x38]
test eax, eax
je 0x4045dc
movzx eax, byte [edx + 2]
cmp al, 0x55
jg 0x404ab8
cmp al, 0x42
jg 0x404a39
sub eax, 0x30
cmp al, 9
jbe 0x404a4a
mov eax, ebx
call sym._d_type
mov edx, eax
xor ecx, ecx
mov eax, ebx
call sym._d_unqualified_name
mov esi, eax
mov eax, dword [ebx + 0xc]
cmp byte [eax], 0x49
jne 0x4043e8
lea esi, [esi]
add eax, 1
mov dword [ebx + 0xc], eax
mov eax, ebx
call sym._d_template_args_1
mov ecx, esi
mov edx, 4
mov dword [esp], eax
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
mov ebp, dword [edx + 0xc]
cmp ebp, 2
je 0x404750
jg 0x404898
test ebp, ebp
je 0x40472d
cmp ebp, 1
jne 0x4046a0
movzx edx, byte [edi]
cmp dl, 0x6d
je 0x404820
cmp dl, 0x70
je 0x404820
xor ebp, ebp
cmp eax, 0x73
jne 0x404848
cmp byte [edi + 1], 0x50
jne 0x404848
cmp byte [edi + 2], 0
jne 0x404848
mov eax, ebx
call sym._d_template_args_1
test ebp, ebp
je 0x404590
mov dword [esp], eax
mov ecx, eax
mov edx, 0x3a
mov eax, ebx
call sym._d_make_comp
jmp 0x404590
xor esi, esi
jmp 0x4043e8
add esp, 0x1c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
jmp sym._d_expr_primary
add esp, 0x1c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
jmp sym._d_template_param
cmp al, 0x75
jne 0x40440c
add edx, 1
mov eax, ebx
mov dword [ebx + 0xc], edx
call sym._d_source_name
mov esi, eax
mov eax, ebx
call sym._d_template_args_1
mov ecx, esi
mov edx, 0x40
mov dword [esp], eax
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
mov eax, dword [esi + 0xc]
cmp eax, 1
je 0x404446
cmp eax, 3
je 0x4046a0
test eax, eax
jne 0x4046a0
mov dword [esp], 0
mov ecx, esi
mov edx, 0x37
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
cmp byte [edi + 1], 0x63
movzx edx, byte [edi]
je 0x404a73
cmp dl, 0x66
je 0x404adf
cmp eax, 0x64
jne 0x404ac5
cmp byte [edi + 1], 0x69
jne 0x404ac5
cmp byte [edi + 2], 0
jne 0x404ac5
xor ecx, ecx
xor edx, edx
mov eax, ebx
call sym._d_unqualified_name
mov ebp, eax
movzx eax, byte [edi]
cmp eax, 0x63
jne 0x4049c0
cmp byte [edi + 1], 0x6c
jne 0x4049c0
cmp byte [edi + 2], 0
jne 0x4049c0
mov edx, 0x45
mov eax, ebx
call sym._d_exprlist
mov edi, eax
mov dword [esp], edi
mov ecx, ebp
mov edx, 0x3a
mov eax, ebx
call sym._d_make_comp
mov ecx, esi
mov edx, 0x39
mov dword [esp], eax
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
add edx, 3
mov dword [ebx + 0xc], edx
mov edx, 1
jmp 0x4044b3
add eax, 1
mov edx, 0x45
mov dword [ebx + 0xc], eax
mov eax, ebx
call sym._d_exprlist
jmp 0x404590
cmp byte [edi + 1], dl
jne 0x40465c
mov edx, dword [ebx + 0xc]
cmp byte [edx], 0x5f
jne 0x40465e
add edx, 1
mov dword [ebx + 0xc], edx
movzx eax, byte [edi]
jmp 0x40465c
mov eax, ebx
call sym._d_expression_1
jmp 0x404682
add edx, 3
mov dword [ebx + 0xc], edx
xor edx, edx
jmp 0x4044b3
add edx, 2
mov eax, ebx
mov dword [ebx + 0xc], edx
call sym._d_expression_1
mov dword [esp], 0
mov edx, 0x4d
mov ecx, eax
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
cmp ebp, 3
jne 0x4046a0
cmp eax, 0x71
jne 0x404930
cmp byte [edi + 1], 0x75
jne 0x404930
cmp byte [edi + 2], 0
jne 0x404930
mov eax, ebx
call sym._d_expression_1
mov edi, eax
mov eax, ebx
call sym._d_expression_1
mov ebp, eax
mov eax, ebx
call sym._d_expression_1
test eax, eax
je 0x4046a0
mov dword [esp], eax
mov ecx, ebp
mov edx, 0x3d
mov eax, ebx
call sym._d_make_comp
mov ecx, edi
mov edx, 0x3c
mov dword [esp], eax
mov eax, ebx
call sym._d_make_comp
mov ecx, esi
mov edx, 0x3b
mov dword [esp], eax
mov eax, ebx
call sym._d_make_comp
mov esi, eax
jmp 0x4043e8
mov eax, ebx
call sym._d_type
mov edx, dword [ebx + 0xc]
mov esi, eax
jmp 0x404516
cmp eax, 0x64
jne 0x404945
cmp byte [edi + 1], 0x58
jne 0x404945
cmp byte [edi + 2], 0
je 0x4048ba
movzx eax, byte [edi]
cmp al, 0x66
je 0x404aed
cmp al, 0x6e
jne 0x4046a0
movzx eax, byte [edi + 1]
cmp al, 0x77
je 0x404968
cmp al, 0x61
jne 0x4046a0
mov edx, 0x5f
mov eax, ebx
call sym._d_exprlist
mov edi, eax
mov eax, ebx
call sym._d_type
mov ebp, eax
mov eax, dword [ebx + 0xc]
movzx edx, byte [eax]
cmp dl, 0x45
je 0x404b1a
cmp dl, 0x70
je 0x404af9
cmp dl, 0x69
jne 0x4046a0
cmp byte [eax + 1], 0x6c
jne 0x4046a0
mov eax, ebx
call sym._d_expression_1
jmp 0x4048db
cmp eax, 0x64
jne 0x404a95
cmp byte [edi + 1], 0x74
jne 0x404a95
cmp byte [edi + 2], 0
jne 0x404a95
mov eax, dword [ebx + 0xc]
movzx edx, byte [eax]
cmp dl, 0x67
je 0x404ad3
cmp dl, 0x73
jne 0x4049fb
cmp byte [eax + 1], 0x72
je 0x404aaa
xor ecx, ecx
xor edx, edx
mov eax, ebx
call sym._d_unqualified_name
mov edi, eax
mov eax, dword [ebx + 0xc]
cmp byte [eax], 0x49
jne 0x4047be
add eax, 1
mov dword [ebx + 0xc], eax
mov eax, ebx
call sym._d_template_args_1
mov ecx, edi
mov edx, 4
mov dword [esp], eax
mov eax, ebx
call sym._d_make_comp
mov edi, eax
jmp 0x4047be
sub eax, 0x43
mov edx, 0x40201
bt edx, eax
jae 0x4045dc
mov dword [ebx + 0x38], 0xffffffff
xor edx, edx
mov eax, ebx
call sym._d_prefix
mov edx, eax
mov eax, dword [ebx + 0xc]
cmp byte [eax], 0x45
jne 0x4045e5
add eax, 1
mov dword [ebx + 0xc], eax
jmp 0x4045e5
lea ecx, [edx - 0x72]
cmp cl, 1
jbe 0x404a87
lea ecx, [edx - 0x63]
cmp cl, 1
ja 0x40475d
mov eax, ebx
call sym._d_type
mov ebp, eax
jmp 0x404790
cmp eax, 0x70
jne 0x404aaa
cmp byte [edi + 1], 0x74
jne 0x404aaa
cmp byte [edi + 2], 0
je 0x4049dd
mov eax, ebx
call sym._d_expression_1
mov edi, eax
jmp 0x4047be
sub eax, 0x61
cmp al, 0x19
ja 0x4045dc
jmp 0x404a4a
mov eax, ebx
call sym._d_expression_1
mov ebp, eax
jmp 0x404790
cmp byte [eax + 1], 0x73
jne 0x4049fb
jmp 0x404aaa
mov eax, ebx
call sym._d_operator_name
mov ebp, eax
jmp 0x404790
mov eax, ebx
call sym._d_operator_name
jmp 0x4048c1
cmp byte [eax + 1], 0x69
jne 0x4046a0
add eax, 2
mov edx, 0x45
mov dword [ebx + 0xc], eax
mov eax, ebx
call sym._d_exprlist
jmp 0x4048db
add eax, 1
mov dword [ebx + 0xc], eax
xor eax, eax
jmp 0x4048db