Function at 0x402501
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, eax
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x70
test ecx, ecx
je 0x40252a
mov edx, dword [ecx + 4]
mov esi, ecx
cmp edx, 1
jg 0x40252a
mov eax, dword [eax + 0x11c]
cmp eax, 0x400
jle 0x402539
mov dword [edi + 0x118], 1
jmp 0x403d3b
inc eax
inc edx
mov dword [esp + 0x20], ecx
mov dword [ecx + 4], edx
mov dword [edi + 0x11c], eax
mov eax, dword [edi + 0x12c]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x20]
mov dword [edi + 0x12c], eax
mov eax, dword [edi + 0x118]
mov dword [esp + 0x1c], eax
test eax, eax
jne case.default.0x4037d7
mov eax, dword [ecx]
mov dword [esp + 0x18], eax
cmp eax, 0x5f
ja case.0x40257d.45
jmp dword [eax*4 + 0x47effc]
mov ecx, dword [ecx + 0x10]
mov edx, dword [esi + 0xc]
mov eax, edi
call fcn.0040210c
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, edi
mov edx, str._abi:
call fcn.0040214f
mov ecx, dword [esi + 0x10]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov edx, 0x5d
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov edx, 0x5b
mov eax, edi
mov ebx, esi
call fcn.004020ce
mov ecx, dword [ebx + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
mov ebx, dword [ebx + 0x10]
test ebx, ebx
je 0x40268b
mov edx, 0x47ed46
mov eax, edi
call fcn.0040214f
jmp 0x4025df
mov eax, dword [ecx + 0xc]
cmp dword [eax], 0x28
jne 0x403887
mov eax, dword [eax + 0xc]
mov ebx, dword [eax + 0x10]
cmp ebx, 6
ja 0x40378f
test ebx, ebx
jne 0x40379d
mov edx, 0x28
mov eax, edi
call fcn.004020ce
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
mov edx, 0x29
mov eax, edi
call fcn.004020ce
cmp dword [esi], 0x3f
jne 0x402662
mov edx, 0x2d
mov eax, edi
call fcn.004020ce
cmp ebx, 8
jne 0x402673
mov edx, 0x5b
mov eax, edi
call fcn.004020ce
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp ebx, 8
jne case.default.0x4037d7
mov edx, 0x5d
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, edi
mov edx, 0x40
call fcn.004020ce
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je 0x4026de
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp dword [esi], 0x56
je 0x4026f0
cmp dword [esi + 0xc], 0
mov edx, 0x2e
jne 0x4026f5
jmp 0x4026fc
mov edx, 0x3a
mov eax, edi
call fcn.004020ce
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
mov edx, 0x47ed49
mov eax, edi
call fcn.0040214f
mov ebx, dword [esi + 0x10]
cmp dword [ebx], 0x49
jne 0x40275b
mov edx, str.default_arg
mov eax, edi
call fcn.0040214f
mov eax, dword [ebx + 0x10]
lea edx, [eax + 1]
mov eax, edi
call fcn.0040243a
mov edx, 0x47ed5a
mov eax, edi
call fcn.0040214f
mov ebx, dword [ebx + 0xc]
mov ecx, ebx
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, dword [edi + 0x114]
mov ebx, dword [ecx + 0xc]
lea edx, [esp + 0x30]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [edi + 0x114], eax
xor eax, eax
mov dword [esp + 0x1c], eax
test ebx, ebx
je 0x402798
cmp dword [esp + 0x1c], 4
jne 0x4027a7
mov dword [edi + 0x118], 1
jmp case.default.0x4037d7
mov eax, dword [edi + 0x114]
mov ecx, dword [edi + 0x110]
mov dword [edi + 0x114], edx
add edx, 0x10
mov dword [edx - 0xc], ebx
mov dword [edx - 0x10], eax
xor eax, eax
mov dword [edx - 8], eax
mov eax, dword [ebx]
mov dword [edx - 4], ecx
inc dword [esp + 0x1c]
mov dword [esp + 0x18], eax
call fcn.00401bdc
test eax, eax
jne 0x4027e6
cmp dword [esp + 0x18], 2
jne 0x402842
jmp 0x4027eb
mov ebx, dword [ebx + 0xc]
jmp 0x40278d
mov ebx, dword [ebx + 0x10]
cmp dword [ebx], 0x49
jne 0x4027f6
mov ebx, dword [ebx + 0xc]
mov eax, dword [esp + 0x1c]
shl eax, 4
lea edx, [esp + eax + 0x30]
test ebx, ebx
je 0x402798
mov eax, dword [ebx]
call fcn.00401bdc
test eax, eax
je 0x402842
cmp dword [esp + 0x1c], 4
je 0x402798
movups xmm0, xmmword [edx - 0x10]
lea eax, [edx - 0x10]
mov dword [edx - 0xc], ebx
mov dword [edi + 0x114], edx
add edx, 0x10
movups xmmword [edx - 0x10], xmm0
mov dword [edx - 0x10], eax
xor eax, eax
mov dword [edx - 0x18], eax
mov ebx, dword [ebx + 0xc]
mov dword [edx - 0x14], ecx
inc dword [esp + 0x1c]
jmp 0x402801
cmp dword [ebx], 4
jne 0x402870
lea eax, [esp + 0x28]
mov dword [esp + 0x28], ecx
mov dword [edi + 0x110], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x2c], ebx
cmp dword [eax], 0x5e
jne 0x402870
mov edx, dword [eax + 0xc]
mov dword [ebx + 0x10], edx
mov edx, dword [esi + 0x10]
mov dword [eax + 0xc], edx
mov dword [esi + 0x10], eax
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp dword [ebx], 4
jne 0x40288e
mov eax, dword [esp + 0x28]
mov dword [edi + 0x110], eax
mov ebx, dword [esp + 0x1c]
shl ebx, 4
cmp dword [esp + ebx + 0x28], 0
jne 0x4028b8
mov edx, 0x20
mov eax, edi
call fcn.004020ce
mov ecx, dword [esp + ebx + 0x24]
mov edx, 0x11
mov eax, edi
call fcn.00403d43
sub ebx, 0x10
jne 0x402895
mov eax, dword [esp + 0x14]
mov dword [edi + 0x114], eax
jmp case.default.0x4037d7
mov eax, dword [edi + 0x148]
mov ebx, dword [edi + 0x114]
mov dword [edi + 0x148], ecx
mov edx, 0x11
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [edi + 0x114], eax
mov eax, edi
call fcn.00402501
cmp byte [edi + 0x104], 0x3c
jne 0x40290e
mov edx, 0x20
mov eax, edi
call fcn.004020ce
mov edx, 0x3c
mov eax, edi
call fcn.004020ce
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp byte [edi + 0x104], 0x3e
jne 0x40293e
mov edx, 0x20
mov eax, edi
call fcn.004020ce
mov eax, edi
mov edx, 0x3e
call fcn.004020ce
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x114], ebx
mov dword [edi + 0x148], eax
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov eax, dword [edi + 0x120]
lea edx, [ecx + 1]
cmp eax, edx
jle 0x4029b8
mov eax, dword [edi + 0x110]
mov edx, ecx
mov eax, dword [eax + 4]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40299b
test edx, edx
je 0x40298b
mov eax, dword [eax + 0x10]
dec edx
jmp 0x40297d
test eax, eax
je 0x40299b
cmp dword [eax], 0x5d
jne 0x4029aa
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x4029aa
mov dword [edi + 0x118], 1
jmp case.default.0x4037d7
mov edx, dword [eax]
mov eax, edi
call fcn.0040246b
jmp case.default.0x4037d7
test eax, eax
je 0x4029df
mov eax, edi
mov ecx, 5
mov edx, str.auto:
call fcn.0040210c
mov eax, dword [esi + 0xc]
lea edx, [eax + 1]
mov eax, edi
call fcn.0040243a
jmp case.default.0x4037d7
mov edx, esi
mov eax, edi
call fcn.004022ed
test eax, eax
je 0x40299b
cmp dword [eax], 0x30
jne 0x402a00
mov edx, dword [edi + 0x124]
call fcn.004022cf
test eax, eax
je 0x40299b
mov ebx, dword [edi + 0x110]
mov ecx, eax
mov eax, edi
mov edx, dword [ebx]
mov dword [edi + 0x110], edx
mov edx, 0x11
call fcn.00402501
mov dword [edi + 0x110], ebx
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.template_parameter_object_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, 0x7e
call fcn.004020ce
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.initializer_for_module
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.vtable_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.VTT_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.construction_vtable_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, edi
mov edx, 0x47edc9
call fcn.0040214f
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.typeinfo_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.typeinfo_name_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.typeinfo_fn_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.non_virtual_thunk_to
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.virtual_thunk_to
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.covariant_return_thunk_to
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.java_Class_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.guard_variable_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.TLS_init_function_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.TLS_wrapper_function_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.reference_temporary_
call fcn.0040214f
mov ecx, dword [esi + 0x10]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, edi
mov edx, 0x47eeae
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.hidden_alias_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.transaction_clone_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.non_transaction_clone_for
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0x10]
mov edx, dword [esi + 0xc]
mov eax, edi
call fcn.0040210c
jmp case.default.0x4037d7
mov ecx, dword [edi + 0x114]
test ecx, ecx
je 0x402e50
cmp dword [ecx + 8], 0
jne 0x402d42
mov eax, dword [ecx + 4]
mov eax, dword [eax]
lea edx, [eax - 0x19]
cmp edx, 2
ja 0x402e54
cmp dword [esp + 0x18], eax
jne 0x402d42
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov ecx, dword [ecx]
jmp 0x402d09
cmp dword [edi + 0x120], 0
mov ebx, dword [ecx + 0xc]
jne 0x402e3b
xor ecx, ecx
cmp dword [ebx], 5
mov dword [esp + 0x1c], ecx
jne 0x402e3b
mov eax, dword [edi + 0x134]
xor edx, edx
cmp edx, eax
jge 0x402dbb
mov ecx, dword [edi + 0x130]
lea ecx, [ecx + edx*8]
cmp ebx, dword [ecx]
je 0x402d81
inc edx
jmp 0x402d6d
lea eax, [esp + 0x20]
mov edx, dword [eax]
cmp ebx, edx
je 0x402df6
cmp esi, edx
jne 0x402d97
lea edx, [esp + 0x20]
cmp eax, edx
jne 0x402df6
mov eax, dword [eax + 4]
test eax, eax
jne 0x402d85
mov eax, dword [edi + 0x110]
mov dword [esp + 0x1c], 1
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 4]
mov dword [edi + 0x110], eax
jmp 0x402dfc
cmp eax, dword [edi + 0x138]
jge 0x403cfa
mov edx, dword [edi + 0x130]
lea edx, [edx + eax*8]
inc eax
mov dword [edi + 0x134], eax
lea eax, [edx + 4]
mov dword [esp + 0x1c], eax
mov dword [edx], ebx
mov edx, dword [edi + 0x110]
test edx, edx
jne 0x403d06
mov eax, dword [esp + 0x1c]
xor edx, edx
mov dword [eax], edx
xor eax, eax
mov dword [esp + 0x1c], eax
mov edx, ebx
mov eax, edi
call fcn.004022ed
mov ebx, eax
test eax, eax
je 0x402e21
cmp dword [eax], 0x30
jne 0x402e3b
mov edx, dword [edi + 0x124]
call fcn.004022cf
mov ebx, eax
test eax, eax
jne 0x402e3b
cmp dword [esp + 0x1c], 0
je 0x40299b
mov eax, dword [esp + 0x14]
mov dword [edi + 0x110], eax
jmp 0x40299b
mov eax, dword [ebx]
cmp eax, 0x24
je 0x402e5c
cmp dword [esp + 0x18], eax
je 0x402e5c
cmp eax, 0x25
jne case.0x40257d.28
mov ecx, dword [ebx + 0xc]
mov ebx, esi
jmp 0x402e5e
xor eax, eax
mov dword [esp + 0x1c], eax
mov ebx, esi
xor ecx, ecx
mov eax, dword [edi + 0x114]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
mov dword [edi + 0x114], eax
xor eax, eax
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x110]
mov dword [esp + 0x3c], eax
test ecx, ecx
jne 0x402e8d
mov ecx, dword [ebx + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp dword [esp + 0x38], 0
jne 0x402eae
mov ecx, ebx
mov edx, 0x11
mov eax, edi
call fcn.00403d43
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x1c], 0
mov dword [edi + 0x114], eax
je case.default.0x4037d7
mov eax, dword [esp + 0x14]
mov dword [edi + 0x110], eax
jmp case.default.0x4037d7
mov eax, dword [ecx + 0xc]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, edi
call fcn.0040210c
jmp case.default.0x4037d7
mov eax, dword [ecx + 0xc]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, edi
call fcn.0040210c
movsx edx, word [esi + 0x10]
mov eax, edi
call fcn.0040243a
cmp byte [esi + 0x12], 0
je case.default.0x4037d7
lea edx, [esi + 0x12]
mov ecx, 1
mov eax, edi
call fcn.0040210c
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je 0x402f8e
mov eax, dword [edi + 0x114]
mov dword [esp + 0x34], esi
mov edx, 0x11
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
mov dword [edi + 0x114], eax
xor eax, eax
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x110]
mov dword [esp + 0x3c], eax
mov eax, edi
call fcn.00402501
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x38], 0
mov dword [edi + 0x114], eax
jne case.default.0x4037d7
mov edx, 0x20
mov eax, edi
call fcn.004020ce
mov eax, dword [edi + 0x114]
mov ecx, esi
mov edx, 0x11
mov dword [esp], eax
mov eax, edi
call fcn.00403e8c
jmp case.default.0x4037d7
mov eax, dword [edi + 0x114]
mov dword [esp + 0x34], ecx
mov ebx, 1
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
mov dword [edi + 0x114], eax
xor eax, eax
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x110]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x403039
mov edx, dword [eax + 4]
mov edx, dword [edx]
sub edx, 0x19
cmp edx, 2
ja 0x403039
cmp dword [eax + 8], 0
jne 0x403035
cmp ebx, 3
jbe 0x40300a
mov dword [edi + 0x118], 1
jmp case.default.0x4037d7
movups xmm0, xmmword [eax]
mov ecx, dword [edi + 0x114]
mov edx, ebx
inc ebx
shl edx, 4
movups xmmword [esp + edx + 0x30], xmm0
mov dword [esp + edx + 0x30], ecx
lea ecx, [esp + 0x30]
add edx, ecx
mov dword [edi + 0x114], edx
mov dword [eax + 8], 1
mov eax, dword [eax]
jmp 0x402fdf
mov ecx, dword [esi + 0x10]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x38], 0
mov dword [edi + 0x114], eax
jne case.default.0x4037d7
cmp ebx, 1
jbe 0x40307a
dec ebx
mov edx, 0x11
mov eax, ebx
shl eax, 4
mov ecx, dword [esp + eax + 0x34]
mov eax, edi
call fcn.00403d43
jmp 0x40305d
mov eax, dword [edi + 0x114]
mov ecx, esi
mov edx, 0x11
mov dword [esp], eax
mov eax, edi
call fcn.004040f2
jmp case.default.0x4037d7
mov eax, dword [edi + 0x114]
xor ebx, ebx
mov dword [esp + 0x34], ecx
mov edx, 0x11
mov dword [esp + 0x38], ebx
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
mov dword [edi + 0x114], eax
mov eax, dword [edi + 0x110]
mov dword [esp + 0x3c], eax
mov eax, edi
call fcn.00402501
cmp dword [esp + 0x38], 0
jne 0x4030e2
mov ecx, esi
mov edx, 0x11
mov eax, edi
call fcn.00403d43
mov eax, dword [esp + 0x30]
mov dword [edi + 0x114], eax
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je 0x403104
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp dword [esi + 0x10], 0
je case.default.0x4037d7
cmp dword [edi + 0x100], 0xfd
jbe 0x403121
mov eax, edi
call fcn.00402090
mov edx, 0x47ed46
mov eax, edi
call fcn.0040214f
mov eax, dword [edi + 0x128]
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov ebx, dword [edi + 0x100]
mov dword [esp + 0x1c], eax
mov eax, edi
call fcn.00402501
mov eax, dword [esp + 0x1c]
cmp eax, dword [edi + 0x128]
jne case.default.0x4037d7
cmp ebx, dword [edi + 0x100]
jne case.default.0x4037d7
sub ebx, 2
mov dword [edi + 0x100], ebx
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov ebx, dword [esi + 0x10]
test ecx, ecx
je 0x40318c
mov edx, 0x11
mov eax, edi
call fcn.00402501
mov eax, edi
mov edx, 0x7b
call fcn.004020ce
mov eax, edi
mov ecx, ebx
mov edx, 0x11
call fcn.00402501
mov edx, 0x7d
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov ebx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x47eef8
mov ecx, dword [ebx + 8]
mov dword [esp + 0x1c], ecx
call fcn.0040214f
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x1c]
mov al, byte [eax]
sub eax, 0x61
cmp al, 0x19
ja 0x4031ed
mov edx, 0x20
mov eax, edi
call fcn.004020ce
mov ecx, dword [esp + 0x1c]
mov edx, dword [ebx + 4]
cmp byte [edx + ecx - 1], 0x20
jne 0x4031f8
dec ecx
mov eax, edi
call fcn.0040210c
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.operator
call fcn.0040214f
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.operator
call fcn.0040214f
mov eax, dword [edi + 0x148]
mov ecx, dword [esi + 0xc]
test eax, eax
je 0x403255
mov edx, dword [edi + 0x110]
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], edx
lea edx, [esp + 0x30]
mov dword [edi + 0x110], edx
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp dword [edi + 0x148], 0
je case.default.0x4037d7
mov eax, dword [esp + 0x30]
mov dword [edi + 0x110], eax
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.004041b1
jmp case.default.0x4037d7
mov eax, dword [ecx + 0xc]
mov ebx, dword [ecx + 0x10]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
cmp eax, 0x33
jne 0x40339f
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov dword [esp + 4], 0x47ef0b
mov dword [esp], eax
mov dword [esp + 0x1c], eax
call sub.msvcrt.dll_strcmp
mov edx, eax
mov eax, dword [ebx]
test edx, edx
jne 0x4032e4
cmp eax, 3
jne 0x4032e4
mov eax, dword [ebx + 0xc]
cmp dword [eax], 1
jne 0x40330d
mov edx, dword [ebx + 0x10]
cmp dword [edx], 0x2a
jne 0x40330d
mov ebx, eax
jmp 0x40330d
cmp eax, 0x3a
jne 0x40330d
mov ecx, dword [ebx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.004041ce
mov ecx, dword [esp + 0x18]
mov edx, 0x11
mov eax, edi
call fcn.004041b1
jmp case.default.0x4037d7
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], 0x47ef0e
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x403341
mov edx, ebx
mov eax, edi
call fcn.0040230f
call fcn.00402135
mov edx, eax
mov eax, edi
call fcn.0040243a
jmp case.default.0x4037d7
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], 0x47ef11
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
mov ecx, eax
test eax, eax
jne 0x4033aa
test ebx, ebx
je 0x403391
cmp dword [ebx], 0x30
jne 0x403391
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x403391
cmp dword [eax], 0x4d
jne 0x40338b
mov edx, dword [eax + 0xc]
mov eax, edi
mov dword [esp + 0x1c], ecx
call fcn.0040230f
call fcn.00402135
mov ecx, dword [esp + 0x1c]
add ecx, eax
jmp 0x40338c
inc ecx
mov ebx, dword [ebx + 0x10]
jmp 0x40335b
mov edx, ecx
mov eax, edi
call fcn.0040243a
jmp case.default.0x4037d7
cmp eax, 0x35
je 0x4033c6
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x18]
mov edx, 0x11
mov eax, edi
call fcn.004041b1
cmp dword [esp + 0x1c], 0
jne 0x4033f6
jmp 0x40347c
mov eax, edi
mov edx, 0x28
call fcn.004020ce
mov eax, dword [esp + 0x18]
mov edx, 0x11
mov ecx, dword [eax + 0xc]
mov eax, edi
call fcn.00402501
mov edx, 0x29
mov eax, edi
call fcn.004020ce
jmp 0x40347c
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], 0x47ef14
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x403421
mov ecx, ebx
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], 0x47ef17
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x403451
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], 0x47ef1a
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x40347c
mov eax, edi
mov edx, 0x28
call fcn.004020ce
mov eax, edi
mov ecx, ebx
mov edx, 0x11
call fcn.00402501
mov edx, 0x29
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov ecx, ebx
mov edx, 0x11
mov eax, edi
call fcn.004041ce
jmp case.default.0x4037d7
mov eax, dword [ecx + 0x10]
cmp dword [eax], 0x3a
jne 0x40299b
mov ecx, dword [ecx + 0xc]
mov eax, dword [ecx + 0xc]
call fcn.004024dd
test eax, eax
je 0x403503
mov eax, edi
mov edx, 0x11
call fcn.004041b1
mov eax, edi
mov edx, 0x3c
call fcn.004020ce
mov eax, dword [esi + 0x10]
mov edx, 0x11
mov ecx, dword [eax + 0xc]
mov eax, edi
call fcn.00402501
mov eax, edi
mov edx, 0x47ef1d
call fcn.0040214f
mov eax, dword [esi + 0x10]
mov edx, 0x11
mov ecx, dword [eax + 0x10]
mov eax, edi
call fcn.00402501
mov edx, 0x29
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov ecx, esi
mov edx, 0x11
mov eax, edi
call fcn.00404234
test eax, eax
jne case.default.0x4037d7
mov ecx, esi
mov edx, 0x11
mov eax, edi
call fcn.00404368
test eax, eax
jne case.default.0x4037d7
mov eax, dword [esi + 0xc]
cmp dword [eax], 0x33
jne 0x403554
mov eax, dword [eax + 0xc]
cmp dword [eax + 8], 1
jne 0x403554
mov eax, dword [eax + 4]
cmp byte [eax], 0x3e
jne 0x403554
mov edx, 0x28
mov eax, edi
call fcn.004020ce
mov dword [esp + 4], 0x47ef20
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
mov edx, dword [esi + 0x10]
mov ecx, dword [edx + 0xc]
test eax, eax
jne 0x403590
cmp dword [ecx], 3
jne 0x403590
mov eax, dword [ecx + 0x10]
cmp dword [eax], 0x2a
je 0x40358d
mov dword [edi + 0x118], 1
mov ecx, dword [ecx + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.004041ce
mov ebx, dword [esi + 0xc]
mov eax, dword [ebx + 0xc]
mov edx, dword [eax]
mov dword [esp + 4], 0x47ef23
mov dword [esp], edx
mov dword [esp + 0x1c], edx
call sub.msvcrt.dll_strcmp
mov edx, dword [esp + 0x1c]
test eax, eax
jne 0x4035ec
mov eax, edi
mov edx, 0x5b
call fcn.004020ce
mov eax, dword [esi + 0x10]
mov edx, 0x11
mov ecx, dword [eax + 0x10]
mov eax, edi
call fcn.00402501
mov edx, 0x5d
mov eax, edi
call fcn.004020ce
jmp 0x403620
mov dword [esp + 4], 0x47ef20
mov dword [esp], edx
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x40360e
mov ecx, ebx
mov edx, 0x11
mov eax, edi
call fcn.004041b1
mov eax, dword [esi + 0x10]
mov edx, 0x11
mov ecx, dword [eax + 0x10]
mov eax, edi
call fcn.004041ce
mov eax, dword [esi + 0xc]
cmp dword [eax], 0x33
jne case.default.0x4037d7
mov eax, dword [eax + 0xc]
cmp dword [eax + 8], 1
jne case.default.0x4037d7
mov eax, dword [eax + 4]
cmp byte [eax], 0x3e
jne case.default.0x4037d7
mov edx, 0x29
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov dword [edi + 0x118], 1
jmp case.default.0x4037d7
mov eax, dword [ecx + 0x10]
cmp dword [eax], 0x3c
jne 0x40299b
mov eax, dword [eax + 0x10]
cmp dword [eax], 0x3d
jne 0x40299b
mov edx, 0x11
mov eax, edi
call fcn.00404234
test eax, eax
jne case.default.0x4037d7
mov ecx, esi
mov edx, 0x11
mov eax, edi
call fcn.00404368
test eax, eax
jne case.default.0x4037d7
mov eax, dword [esi + 0x10]
mov ebx, dword [esi + 0xc]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp + 4], 0x47ef26
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0xc]
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
mov ecx, dword [esp + 0x14]
test eax, eax
jne 0x40372d
mov eax, edi
mov edx, 0x11
call fcn.004041ce
mov ecx, ebx
mov eax, edi
mov edx, 0x11
call fcn.004041b1
mov ecx, dword [esp + 0x18]
mov eax, edi
mov edx, 0x11
call fcn.004041ce
mov eax, edi
mov edx, 0x47ef29
call fcn.0040214f
mov ecx, dword [esp + 0x1c]
mov edx, 0x11
mov eax, edi
call fcn.004041ce
jmp case.default.0x4037d7
mov edx, str.new
mov eax, edi
mov dword [esp + 0x14], ecx
call fcn.0040214f
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0xc], 0
je 0x40375f
mov edx, 0x11
mov eax, edi
call fcn.004041ce
mov edx, 0x20
mov eax, edi
call fcn.004020ce
mov ecx, dword [esp + 0x18]
mov edx, 0x11
mov eax, edi
call fcn.00402501
cmp dword [esp + 0x1c], 0
je case.default.0x4037d7
mov ecx, dword [esp + 0x1c]
mov edx, 0x11
mov eax, edi
call fcn.004041ce
jmp case.default.0x4037d7
cmp ebx, 7
je 0x403833
jmp 0x40262a
mov eax, dword [ecx + 0x10]
cmp dword [eax], 0
jne 0x40262a
cmp dword [esp + 0x18], 0x3f
jne 0x4037bc
mov edx, 0x2d
mov eax, edi
call fcn.004020ce
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
sub ebx, 2
call fcn.00402501
cmp ebx, 4
ja case.default.0x4037d7
jmp dword [ebx*4 + 0x47f17c]
mov edx, 0x75
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov edx, 0x6c
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov edx, 0x47ef32
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov edx, 0x47ef35
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov edx, 0x47ef38
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov eax, dword [ecx + 0x10]
cmp dword [eax], 0
jne 0x40262a
cmp dword [eax + 0x10], 1
jne 0x40262a
cmp dword [esp + 0x18], 0x3e
jne 0x40262a
mov eax, dword [eax + 0xc]
mov al, byte [eax]
cmp al, 0x30
je 0x403876
cmp al, 0x31
jne 0x40262a
mov edx, 0x47ef42
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov edx, 0x47ef3c
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
xor ebx, ebx
jmp 0x40262a
mov ecx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, edi
mov edx, 0x28
call fcn.004020ce
mov ecx, dword [esi + 0x10]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov edx, 0x29
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov edx, dword [ecx + 0xc]
mov eax, edi
call fcn.0040243a
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.java_resource
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
movsx edx, byte [ecx + 0xc]
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.decltype__
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov edx, 0x29
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov eax, dword [ecx + 0xc]
mov ebx, dword [edi + 0x120]
mov dword [esp + 0x1c], eax
test ebx, ebx
je 0x403989
mov ecx, dword [esp + 0x1c]
mov eax, edi
mov edx, 0x11
call fcn.004041ce
mov edx, 0x47ef61
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov edx, dword [esp + 0x1c]
mov eax, edi
call fcn.0040230f
test eax, eax
je 0x403968
call fcn.00402135
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], ebx
je case.default.0x4037d7
test ebx, ebx
je 0x4039bb
mov edx, 0x47ed46
mov eax, edi
call fcn.0040214f
mov dword [edi + 0x124], ebx
mov ecx, dword [esp + 0x1c]
mov edx, 0x11
mov eax, edi
inc ebx
call fcn.00402501
jmp 0x4039a1
mov ebx, dword [ecx + 0xc]
test ebx, ebx
jne 0x4039ec
mov edx, 0x47ef65
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.parm
call fcn.0040214f
mov edx, ebx
mov eax, edi
call fcn.0040243a
mov edx, 0x7d
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.global_constructors_keyed_to
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.global_destructors_keyed_to
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
jmp case.default.0x4037d7
mov edx, str.lambda
mov eax, edi
call fcn.0040214f
mov eax, dword [esi + 0xc]
xor edx, edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x120]
cmp dword [esp + 0x1c], 0
mov dword [edi + 0x120], edx
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x110]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
mov dword [edi + 0x110], eax
je 0x403b31
mov eax, dword [esp + 0x1c]
cmp dword [eax], 0x59
jne 0x403b31
mov dword [esp + 0x34], eax
mov edx, 0x3c
mov eax, edi
call fcn.004020ce
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 0xc]
test ebx, ebx
je 0x403b1a
mov eax, dword [edi + 0x120]
lea edx, [eax + 1]
mov dword [edi + 0x120], edx
test eax, eax
je 0x403ae1
mov edx, 0x47ed46
mov eax, edi
call fcn.0040214f
mov ecx, ebx
mov edx, 0x11
mov eax, edi
call fcn.00402501
mov edx, 0x20
mov eax, edi
call fcn.004020ce
cmp dword [ebx], 0x5d
jne 0x403b03
mov ebx, dword [ebx + 0xc]
mov eax, dword [edi + 0x120]
mov edx, dword [ebx]
lea ecx, [eax - 1]
mov eax, edi
call fcn.0040246b
mov ebx, dword [ebx + 0x10]
jmp 0x403abe
mov eax, edi
mov edx, 0x3e
call fcn.004020ce
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x1c], eax
inc dword [edi + 0x120]
mov eax, edi
mov edx, 0x28
call fcn.004020ce
mov ecx, dword [esp + 0x1c]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, dword [esp + 0x18]
mov edx, 0x47efb4
mov dword [edi + 0x120], eax
mov eax, dword [esp + 0x30]
mov dword [edi + 0x110], eax
mov eax, edi
call fcn.0040214f
mov eax, dword [esi + 0x10]
lea edx, [eax + 1]
mov eax, edi
call fcn.0040243a
mov edx, 0x7d
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.unnamed_type
call fcn.0040214f
mov eax, dword [esi + 0xc]
lea edx, [eax + 1]
mov eax, edi
call fcn.0040243a
mov edx, 0x7d
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov eax, edi
mov edx, str.__clone
call fcn.0040214f
mov ecx, dword [esi + 0x10]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov edx, 0x5d
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov edx, str._friend_
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov eax, edi
mov edx, 0x3c
call fcn.004020ce
xor eax, eax
mov ebx, dword [esi + 0xc]
mov dword [esp + 0x1c], eax
test ebx, ebx
je 0x403c59
cmp dword [esp + 0x1c], 0
je 0x403c42
mov edx, 0x47ed46
mov eax, edi
call fcn.0040214f
mov ecx, ebx
mov edx, 0x11
mov eax, edi
call fcn.00402501
inc dword [esp + 0x1c]
mov ebx, dword [ebx + 0x10]
jmp 0x403c2b
mov edx, 0x3e
mov eax, edi
call fcn.004020ce
jmp case.default.0x4037d7
mov edx, str.typename
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov eax, edi
mov edx, str.template
call fcn.0040214f
mov ecx, dword [esi + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov edx, str._class
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov eax, edi
mov edx, 0x11
call fcn.00402501
mov edx, 0x47ef61
mov eax, edi
call fcn.0040214f
jmp case.default.0x4037d7
mov ecx, dword [ecx + 0xc]
mov edx, 0x11
mov eax, edi
call fcn.00402501
mov edx, str._requires
mov eax, edi
call fcn.0040214f
mov ecx, dword [esi + 0x10]
mov edx, 0x11
mov eax, edi
call fcn.00402501
mov eax, dword [esp + 0x24]
mov dword [edi + 0x12c], eax
dec dword [esi + 4]
dec dword [edi + 0x11c]
jmp 0x403d3b
mov dword [edi + 0x118], 1
jmp case.default.0x4037d7
mov eax, dword [edi + 0x140]
cmp eax, dword [edi + 0x144]
jge 0x403cfa
mov ecx, dword [edi + 0x13c]
lea ecx, [ecx + eax*8]
inc eax
mov dword [edi + 0x140], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], ecx
mov dword [eax], ecx
mov edx, dword [edx]
jmp 0x402de6
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret