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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x1f0
mov esi, edx
mov edi, ecx
mov eax, dword [ecx + 4]
lea ecx, [eax - 0xb]
cmp ecx, 6
jae 0x40c957
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x20]
xor al, 1
movzx eax, al
cmp dword [0x425a70], eax
jne 0x40c95c
jmp 0x40f013
cmp eax, 3
je 0x40c93e
cmp byte [0x425a55], 0
mov dword [esp + 0x3c], edi
mov dword [esp + 0x48], esi
je 0x40d257
mov eax, dword [edi + 4]
add eax, 0xfffffff5
cmp eax, 1
ja 0x40d4ef
mov ecx, edi
call fcn.0041d1c2
test eax, 0x2000
jne 0x40f013
mov eax, dword [edi]
mov dword [esp], edi
lea ecx, [esp + 0xf0]
call dword [eax + 0x18]
sub esp, 4
mov esi, dword [esp + 0xf0]
mov edi, dword [esp + 0xf4]
mov ebx, dword [esp + 0xf8]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax]
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
lea ecx, [esp + 0x50]
call dword [eax + 0x1c]
sub esp, 4
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x78], edi
mov dword [esp + 0x74], esi
xor esi, eax
xor edi, ecx
or edi, esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xec], eax
je 0x40f013
lea ebx, [esp + 0x74]
jmp 0x40ca4d
mov ecx, dword [esp + 0x7c]
mov eax, dword [ecx]
mov dword [esp], ebx
call dword [eax + 0xc]
sub esp, 4
mov eax, dword [esp + 0x74]
xor eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0x78]
xor ecx, dword [esp + 0xe8]
or ecx, eax
je 0x40f013
mov eax, dword [esp + 0x74]
mov dword [esp + 0x4c], eax
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xa8], eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x20]
test al, al
jne 0x40ca90
mov ecx, esi
call fcn.0041d1bc
test eax, eax
je 0x40cb00
mov ecx, esi
call fcn.0041d1bc
movzx eax, word [eax + 2]
cmp eax, 0x200
jne 0x40cb00
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], edi
movsd xmm0, qword [esp + 0x1b8]
movsd qword [esp + 4], xmm0
mov dword [esp], esi
lea ecx, [esp + 0xf0]
call fcn.0041d1aa
sub esp, 0xc
mov eax, dword [esp + 0xf4]
test eax, eax
jne 0x40cad5
mov eax, dword [esp + 0xf8]
movzx eax, word [eax + 0xe]
and eax, 0x70
shl eax, 8
cmp eax, 0x1000
je 0x40ca20
cmp eax, 0x2000
je 0x40ca20
mov al, 1
mov dword [esp + 0x44], eax
jmp 0x40cb08
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], edi
mov dword [esp + 0xf4], edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0xf0], edi
mov ecx, dword [esp + 0xa8]
mov eax, dword [ecx]
movsd xmm0, qword [esp + 0xf0]
movsd qword [esp + 4], xmm0
mov dword [esp], ecx
lea ecx, [esp + 0x80]
call dword [eax + 0x40]
sub esp, 0xc
test byte [esp + 0x8c], 1
jne 0x40cd80
mov eax, dword [esp + 0x88]
mov dword [esp + 0xc8], eax
movsd xmm0, qword [esp + 0x80]
movsd qword [esp + 0xc0], xmm0
mov eax, dword [esi]
mov dword [esp], esi
lea ecx, [esp + 0xf0]
call dword [eax + 0xb4]
sub esp, 4
mov esi, dword [esp + 0xc8]
cmp esi, dword [esp + 0xf8]
jne 0x40cbbd
mov eax, dword [esp + 0xc0]
xor eax, dword [esp + 0xf0]
mov ecx, dword [esp + 0xc4]
xor ecx, dword [esp + 0xf4]
or ecx, eax
je 0x40d200
mov edi, dword [esp + 0xc0]
mov ebx, dword [esp + 0xc4]
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xf0], edi
mov eax, dword [esi]
movsd xmm0, qword [esp + 0xf0]
movsd qword [esp], xmm0
mov ecx, esi
call dword [eax + 0x64]
sub esp, 8
test al, al
jne 0x40cc50
mov dword [esp + 0xf0], edi
mov dword [esp + 0xf4], ebx
mov eax, dword [esi]
movsd xmm0, qword [esp + 0xf0]
movsd qword [esp], xmm0
mov ecx, esi
call dword [eax + 0x68]
sub esp, 8
test al, al
jne 0x40cc50
mov dword [esp + 0xf0], edi
mov dword [esp + 0xf4], ebx
mov eax, dword [esi]
movsd xmm0, qword [esp + 0xf0]
movsd qword [esp], xmm0
mov ecx, esi
call dword [eax + 0x6c]
sub esp, 8
test al, al
je 0x40d200
nop dword [eax]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xf4], eax
mov ecx, dword [esp + 0xa8]
mov eax, dword [ecx]
movsd xmm0, qword [esp + 0xf0]
movsd qword [esp + 4], xmm0
mov dword [esp], ecx
lea ecx, [esp + 0x188]
call dword [eax + 0x28]
sub esp, 0xc
mov ebx, dword [esp + 0x18c]
test ebx, ebx
je 0x40d200
mov esi, dword [esp + 0x188]
cmp ebx, 7
jb 0x40ccdf
mov eax, dword [esi]
mov ecx, 0x69735f5f
xor eax, ecx
mov ecx, dword [esi + 3]
mov edx, 0x74696e69
xor ecx, edx
or ecx, eax
je 0x40d200
mov eax, dword [esi]
mov ecx, 0x74735f5f
xor eax, ecx
mov ecx, dword [esi + 3]
mov edx, 0x6d726574
xor ecx, edx
or ecx, eax
je 0x40d200
movzx eax, byte [esi]
cmp eax, 0x28
je 0x40d200
cmp eax, 0x2e
je 0x40d200
cmp ebx, 5
jb 0x40cecd
movzx eax, word [esi]
cmp eax, 0x5f5f
jne 0x40cd17
movzx eax, word [esi + ebx - 2]
cmp eax, 0x5f5f
je 0x40d23a
cmp ebx, 6
jne 0x40cd40
mov eax, dword [esi]
mov ecx, 0x73725f5f
xor eax, ecx
movzx ecx, word [esi + 4]
xor ecx, 0x6372
or ecx, eax
jne 0x40cd40
cmp byte [0x425a6b], 0
jne 0x40d200
mov eax, dword [esi]
mov edx, 0x66745f5f
xor eax, edx
movzx ecx, byte [esi + 4]
xor ecx, 0x31
or ecx, eax
je 0x40cf11
mov eax, dword [esi]
xor eax, edx
movzx ecx, byte [esi + 4]
xor ecx, 0x39
or ecx, eax
jne 0x40cf20
cmp ebx, 0xe
mov eax, 0xe
jmp 0x40cf19
mov eax, dword [esp + 0x80]
mov dword [esp + 0x80], 0
mov dword [esp + 0x1a0], eax
mov ecx, esi
call fcn.0041d1da
mov word [esp + 0x60], 0x105
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
mov dword [esp + 0xf0], str.for_symbol_with_index
mov word [esp + 0x100], 0x103
mov dword [esp], edi
mov ecx, esi
call fcn.0041d1b6
sub esp, 4
movzx ecx, byte [esp + 0x100]
mov dl, 1
test ecx, ecx
je 0x40ce31
cmp ecx, 1
jne 0x40cdef
mov dword [esp + 0x170], eax
mov cl, 8
jmp 0x40ce31
cmp byte [esp + 0x101], 1
mov edx, dword [esp + 0xf0]
lea edi, [esp + 0xf0]
cmovne edx, edi
mov dword [esp + 0x170], edx
mov edx, dword [esp + 0xf4]
mov dword [esp + 0x174], edx
mov dword [esp + 0x178], eax
movzx ecx, cl
mov eax, 2
cmovne ecx, eax
mov dl, 8
mov byte [esp + 0x180], cl
mov byte [esp + 0x181], dl
mov word [esp + 0xa0], 0x105
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x90], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x38], eax
movups xmm0, xmmword [esp + 0x90]
movups xmmword [esp + 0x28], xmm0
mov eax, dword [esp + 0x180]
mov dword [esp + 0x24], eax
movups xmm0, xmmword [esp + 0x170]
movups xmmword [esp + 0x14], xmm0
mov eax, dword [esp + 0x60]
mov dword [esp + 0x10], eax
movups xmm0, xmmword [esp + 0x50]
movups xmmword [esp], xmm0
lea ecx, [esp + 0x1a0]
call fcn.0040f3e0
mov ecx, dword [esp + 0x1a0]
test ecx, ecx
je 0x40ceba
mov eax, dword [ecx]
call dword [eax + 4]
test byte [esp + 0x8c], 1
je 0x40ca20
jmp 0x40d216
xorps xmm0, xmm0
movaps xmmword [esp + 0xf0], xmm0
mov byte [esp + 0x100], 0
lea eax, [esp + 0x104]
movups xmmword [eax + 0x40], xmm0
movups xmmword [eax + 0x30], xmm0
movups xmmword [eax + 0x20], xmm0
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax], xmm0
mov eax, ebx
add al, bl
mov byte [esp + 0xb0], al
lea eax, [esp + 0xb1]
jmp 0x40cfa8
cmp ebx, 6
mov eax, 6
cmovb eax, ebx
add esi, eax
sub ebx, eax
xorps xmm0, xmm0
movaps xmmword [esp + 0xf0], xmm0
mov byte [esp + 0x100], 0
lea eax, [esp + 0x104]
movups xmmword [eax + 0x40], xmm0
movups xmmword [eax + 0x30], xmm0
movups xmmword [eax + 0x20], xmm0
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax], xmm0
cmp ebx, 0xfffffff0
jae 0x40f01b
cmp ebx, 0xb
jae 0x40cf80
mov eax, ebx
add al, bl
mov byte [esp + 0xb0], al
lea eax, [esp + 0xb1]
test ebx, ebx
mov edi, dword [esp + 0x3c]
jne 0x40cfac
xor ebx, ebx
lea eax, [esp + 0xb1]
jmp 0x40cfc0
mov edi, ebx
or edi, 0xf
lea eax, [edi + 1]
mov dword [esp], eax
call sub.libc.dll_operator_new_unsigned_int_
mov dword [esp + 0xb8], eax
add edi, 2
mov dword [esp + 0xb0], edi
mov dword [esp + 0xb4], ebx
mov edi, dword [esp + 0x3c]
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], eax
mov esi, eax
call sub.msvcrt.dll_memmove
mov eax, esi
mov esi, dword [esp + 0x48]
mov byte [eax + ebx], 0
test byte [esp + 0x104], 1
je 0x40cfe1
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
mov eax, dword [esp + 0xb8]
lea ecx, [esp + 0x104]
mov dword [ecx + 8], eax
movsd xmm0, qword [esp + 0xb0]
movsd qword [ecx], xmm0
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x124], ecx
mov ebx, dword [esp + 0x4c]
mov dword [esp + 0x120], ebx
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x128], eax
cmp byte [esp + 0x44], 0
je 0x40d0af
mov dword [esp + 0x1b0], ebx
mov dword [esp + 0x1b4], ecx
movsd xmm0, qword [esp + 0x1b0]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0xb0]
call fcn.0041d1aa
sub esp, 0xc
mov eax, dword [esp + 0xb4]
test eax, eax
jne 0x40d06f
mov eax, dword [esp + 0xb8]
movzx eax, word [eax + 0xe]
and eax, 0x70
shl eax, 8
cmp eax, 0x3000
je 0x40d093
cmp eax, 0x4000
jne 0x40d0ab
mov eax, 6
mov ecx, str.export
jmp 0x40d09d
mov eax, 9
mov ecx, str.protected
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x130], eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb0], ebx
mov ecx, dword [esp + 0xa8]
mov eax, dword [ecx]
movsd xmm0, qword [esp + 0xb0]
movsd qword [esp + 4], xmm0
mov dword [esp], ecx
lea ecx, [esp + 0x164]
call dword [eax + 0x14]
sub esp, 0xc
movzx ebx, byte [esp + 0x168]
test bl, 1
jne 0x40d109
mov eax, dword [esp + 0x164]
mov dword [esp + 0x134], eax
lea edi, [esp + 0xf0]
jmp 0x40d176
mov eax, dword [esp + 0x164]
mov dword [esp + 0x164], 0
mov dword [esp + 0xdc], eax
mov ecx, edi
call fcn.0041d1da
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
movsd xmm0, qword [esp + 0xb0]
movsd qword [esp + 4], xmm0
mov dword [esp], edx
lea ecx, [esp + 0xdc]
mov edx, eax
call fcn.0040bec0
mov ecx, dword [esp + 0xdc]
test ecx, ecx
lea edi, [esp + 0xf0]
je 0x40d176
mov eax, dword [ecx]
call dword [eax + 4]
test byte [esp + 0x168], 1
je 0x40d19b
mov ecx, dword [esp + 0x164]
mov dword [esp + 0x164], 0
test ecx, ecx
je 0x40d19b
mov eax, dword [ecx]
call dword [eax + 4]
test bl, 1
jne 0x40d1ce
mov ecx, esi
mov edx, edi
call fcn.00412b20
test byte [esp + 0x148], 1
je 0x40d1d8
mov eax, dword [esp + 0x150]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
test byte [esp + 0x104], 1
je 0x40d200
jmp 0x40d1e2
test byte [esp + 0x148], 1
jne 0x40d1b3
test byte [esp + 0x104], 1
je 0x40d200
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
nop word cs:[eax + eax]
mov esi, dword [esp + 0x3c]
lea ebx, [esp + 0x74]
test byte [esp + 0x8c], 1
je 0x40ca20
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x80], 0
test ecx, ecx
je 0x40ca20
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40ca20
lea eax, [ebx - 4]
xor ecx, ecx
movzx edx, byte [esi + ecx + 2]
add dl, 0xd0
cmp dl, 0xa
jae 0x40cd17
inc ecx
cmp eax, ecx
jne 0x40d23f
jmp 0x40d200
cmp byte [ebp + 0xc], 0
je 0x40d4ef
lea eax, [ebp + 0x20]
cmp dword [eax + 4], 0
je 0x40d288
mov ecx, dword [eax]
mov dword [esp + 0x4c], ecx
mov edi, dword [eax + 4]
call fcn.0041d048
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0xc], ecx
je 0x40d2a2
mov byte [ecx], 0xa
inc dword [eax + 0x10]
jmp 0x40d2bb
mov ecx, edi
call fcn.0041d1da
mov dword [esp + 0x4c], eax
mov edi, edx
call fcn.0041d048
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0xc], ecx
jne 0x40d280
mov dword [esp + 4], 1
mov dword [esp], 0x41f8c3
mov ecx, eax
call fcn.0041cfca
sub esp, 8
mov esi, dword [ebp + 0x1c]
call fcn.0041d048
mov ebx, eax
mov edx, dword [ebp + 0x14]
test edx, edx
je 0x40d2f9
cmp byte [ebp + 0x28], 0
je 0x40d2f9
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx + 0x10]
sub ecx, eax
cmp ecx, edx
jae 0x40d315
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
mov ecx, ebx
call fcn.0041cfca
sub esp, 8
mov ebx, eax
mov eax, dword [eax + 0x10]
jmp 0x40d335
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx + 0x10]
sub ecx, eax
cmp ecx, edi
jae 0x40d369
mov dword [esp + 4], edi
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
jmp 0x40d3ed
mov dword [esp + 8], edx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov esi, edx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebx + 0x10]
add eax, esi
mov esi, dword [ebp + 0x1c]
mov dword [ebx + 0x10], eax
cmp dword [ebx + 0xc], eax
je 0x40d38a
mov byte [eax], 0x28
mov eax, dword [ebx + 0x10]
inc eax
mov dword [ebx + 0x10], eax
mov ecx, dword [ebx + 0xc]
sub ecx, eax
cmp ecx, edi
jae 0x40d3b1
mov dword [esp + 4], edi
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
mov ecx, ebx
call fcn.0041cfca
sub esp, 8
mov ebx, eax
mov eax, dword [eax + 0x10]
jmp 0x40d3d1
test edi, edi
je 0x40d3f7
mov dword [esp + 8], edi
mov ecx, dword [esp + 0x4c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
add dword [ebx + 0x10], edi
jmp 0x40d3f7
mov dword [esp + 4], 1
mov dword [esp], 0x41f9c5
mov ecx, ebx
call fcn.0041cfca
sub esp, 8
mov ebx, eax
mov eax, dword [eax + 0x10]
mov ecx, dword [ebx + 0xc]
sub ecx, eax
cmp ecx, edi
jb 0x40d34d
test edi, edi
je 0x40d3d1
mov dword [esp + 8], edi
mov ecx, dword [esp + 0x4c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
add edi, dword [ebx + 0x10]
mov dword [ebx + 0x10], edi
mov eax, edi
cmp dword [ebx + 0xc], eax
je 0x40d3de
mov byte [eax], 0x29
inc dword [ebx + 0x10]
jmp 0x40d3f7
mov dword [esp + 4], 1
mov dword [esp], 0x41f967
mov ecx, ebx
call fcn.0041cfca
sub esp, 8
test esi, esi
mov edi, dword [esp + 0x3c]
je 0x40d4b9
call fcn.0041d048
mov esi, eax
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
sub ecx, eax
cmp ecx, 0x12
ja 0x40d437
mov dword [esp + 4], 0x13
mov dword [esp], str.__for_architecture
mov ecx, esi
call fcn.0041cfca
sub esp, 8
mov esi, eax
mov eax, dword [eax + 0x10]
jmp 0x40d451
movups xmm0, xmmword [str.__for_architecture]
movups xmmword [eax], xmm0
mov dword [eax + 0xf], 0x20657275
mov eax, dword [esi + 0x10]
add eax, 0x13
mov dword [esi + 0x10], eax
mov ecx, dword [esi + 0xc]
sub ecx, eax
mov ebx, dword [ebp + 0x1c]
cmp ecx, ebx
jae 0x40d478
mov dword [esp + 4], ebx
mov eax, dword [ebp + 0x18]
mov dword [esp], eax
mov ecx, esi
call fcn.0041cfca
sub esp, 8
mov esi, eax
mov eax, dword [eax + 0x10]
jmp 0x40d493
mov dword [esp + 8], ebx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 4], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esi + 0x10]
add eax, ebx
mov dword [esi + 0x10], eax
cmp dword [esi + 0xc], eax
je 0x40d4a0
mov byte [eax], 0x29
inc dword [esi + 0x10]
jmp 0x40d4b9
mov dword [esp + 4], 1
mov dword [esp], 0x41f967
mov ecx, esi
call fcn.0041cfca
sub esp, 8
call fcn.0041d048
mov edx, dword [eax + 0xc]
mov ecx, dword [eax + 0x10]
sub edx, ecx
cmp edx, 1
ja 0x40d4e6
mov dword [esp + 4], 2
mov dword [esp], 0x41fa19
mov ecx, eax
call fcn.0041cfca
sub esp, 8
jmp 0x40d4ef
mov word [ecx], 0xa3a
add dword [eax + 0x10], 2
mov eax, dword [edi]
mov dword [esp], edi
lea esi, [esp + 0xf0]
mov ecx, esi
call dword [eax + 0x18]
sub esp, 4
mov eax, dword [edi]
lea ecx, [esp + 0x17c]
mov dword [esp], edi
call dword [eax + 0x1c]
sub esp, 4
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x178], eax
movsd xmm0, qword [esp + 0xf0]
movsd qword [esp + 0x170], xmm0
mov dword [esp + 0xa8], 0
cmp byte [0x425a44], 0
mov eax, dword [edi + 4]
je 0x40d608
add eax, 0xffffffef
cmp eax, 0xfffffffb
ja 0x40d61e
mov dword [esp + 0xf0], str.File_format_has_no_dynamic_symbol_table
mov word [esp + 0x100], 0x103
mov dword [esp], 0x1c
call sub.libc.dll_operator_new_unsigned_int_
mov ebx, edi
mov edi, eax
call fcn.0041d090
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], 3
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 4], xmm0
mov dword [esp], esi
mov ecx, edi
call fcn.0041cfb8
sub esp, 0xc
mov dword [esp + 0x1c0], edi
mov ecx, ebx
call fcn.0041d1da
mov dword [esp + 0x1bc], 0
mov dword [esp + 0x1b8], 0
movsd xmm0, qword [esp + 0x1b8]
movsd qword [esp + 4], xmm0
mov dword [esp], edx
lea ecx, [esp + 0x1c0]
mov edx, eax
call fcn.0040bec0
mov ecx, dword [esp + 0x1c0]
test ecx, ecx
je 0x40f013
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40f013
xor ecx, ecx
mov dword [esp + 0xbc], 0
mov esi, dword [esp + 0x48]
jmp 0x40d89c
mov eax, dword [edi]
mov dword [esp], edi
lea ecx, [esp + 0xf0]
call dword [eax + 0x104]
sub esp, 4
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0xf4]
mov esi, dword [esp + 0x104]
lea ebx, [esp + 0x17c]
mov dword [ebx + 8], esi
movsd xmm0, qword [esp + 0xfc]
movsd qword [ebx], xmm0
mov dword [esp + 0x170], ecx
mov dword [esp + 0x178], eax
mov dword [esp + 0x174], edx
mov edx, dword [edi + 4]
lea eax, [edx - 0x11]
mov ecx, 0
mov dword [esp + 0xbc], 0
cmp eax, 0xfffffffc
mov eax, edx
mov esi, dword [esp + 0x48]
jb 0x40d89c
mov dword [esp], edi
lea ecx, [esp + 0xf0]
call fcn.0041d1c8
sub esp, 4
test byte [esp + 0xfc], 1
jne 0x40d6d6
mov ecx, dword [esp + 0xf0]
mov eax, dword [esp + 0xf4]
mov dword [esp + 0xbc], eax
jmp 0x40d899
call fcn.0041d042
mov ecx, dword [0x425a88]
mov edx, dword [0x425a8c]
mov dword [esp + 0x1b4], edx
mov dword [esp + 0x1b0], ecx
movsd xmm0, qword [esp + 0x1b0]
movsd qword [esp + 4], xmm0
mov dword [esp], eax
mov dword [esp + 0xc], 0
call fcn.0041d0ba
mov esi, eax
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
sub ecx, eax
cmp ecx, 0x1f
ja 0x40d740
mov dword [esp + 4], 0x20
mov dword [esp], str.unable_to_read_symbol_versions:
mov ecx, esi
call fcn.0041cfca
sub esp, 8
mov esi, eax
jmp 0x40d759
movups xmm0, xmmword [0x41fa2c]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [str.unable_to_read_symbol_versions:]
movups xmmword [eax], xmm0
add dword [esi + 0x10], 0x20
xor eax, eax
test byte [esp + 0xfc], 1
je 0x40d777
mov eax, dword [esp + 0xf0]
mov dword [esp + 0xf0], 0
mov dword [esp + 0x1ac], eax
lea eax, [esp + 0x1ac]
mov dword [esp + 4], eax
lea eax, [esp + 0x50]
mov dword [esp], eax
call fcn.0041d0ae
movzx eax, byte [esp + 0x50]
test al, 1
je 0x40d7a8
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
jmp 0x40d7ae
shr eax, 1
lea ecx, [esp + 0x51]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov ecx, esi
call fcn.0041cfca
sub esp, 8
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0xc], ecx
je 0x40d7cf
mov byte [ecx], 0xa
inc dword [eax + 0x10]
jmp 0x40d7e8
mov dword [esp + 4], 1
mov dword [esp], 0x41f8c3
mov ecx, eax
call fcn.0041cfca
sub esp, 8
test byte [esp + 0x50], 1
je 0x40d7fb
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
mov ecx, dword [esp + 0x1ac]
test ecx, ecx
je 0x40d80b
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [esp + 0xf0]
test byte [esp + 0xfc], 1
jne 0x40d854
mov dword [esp + 0xbc], 0
test esi, esi
je 0x40d875
mov edi, dword [esp + 0xf4]
mov eax, esi
cmp edi, esi
jne 0x40d841
jmp 0x40d880
add edi, 0xfffffff0
cmp edi, esi
je 0x40d879
test byte [edi - 0x10], 1
je 0x40d83a
mov eax, dword [edi - 8]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
jmp 0x40d83a
mov dword [esp + 0xf0], 0
mov dword [esp + 0xbc], 0
test esi, esi
je 0x40d875
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
xor ecx, ecx
jmp 0x40d895
mov eax, dword [esp + 0xf0]
mov dword [esp + 0xf4], esi
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
xor ecx, ecx
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x48]
mov eax, dword [edi + 4]
mov dword [esp + 0x160], ecx
add eax, 0xffffffeb
mov ecx, edi
mov dword [esp + 0x15c], eax
cmp eax, 0xfffffffc
mov eax, 0
cmovb ecx, eax
mov dword [esp + 0x4c], ecx
jb 0x40dabc
mov eax, dword [0x425a78]
cmp dword [0x425a74], eax
je 0x40dabc
mov edi, dword [esp + 0x4c]
mov eax, dword [edi]
mov dword [esp], edi
lea ecx, [esp + 0x50]
call dword [eax + 0xb0]
sub esp, 4
mov eax, dword [edi]
lea ecx, [esp + 0xfc]
mov dword [esp], edi
call dword [eax + 0xb4]
sub esp, 4
mov eax, dword [esp + 0x58]
mov dword [esp + 0xf8], eax
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0xf0], xmm0
mov dword [esp + 0x58], eax
movsd qword [esp + 0x50], xmm0
mov eax, dword [esp + 0x104]
mov dword [esp + 0x44], eax
mov dword [esp + 0x98], eax
movsd xmm0, qword [esp + 0xfc]
movsd qword [esp + 0x90], xmm0
mov dword [esp + 0xa8], 1
jmp 0x40d97e
inc dword [esp + 0xa8]
mov ecx, dword [esp + 0x58]
mov eax, dword [ecx]
lea edx, [esp + 0x50]
mov dword [esp], edx
call dword [eax + 0x44]
sub esp, 4
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x58], eax
jne 0x40d9a6
mov eax, dword [esp + 0x50]
xor eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x54]
xor ecx, dword [esp + 0x94]
or ecx, eax
je 0x40ed1e
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], ebx
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x74]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0x80]
call dword [eax + 0x48]
sub esp, 0xc
test byte [esp + 0x88], 1
jne 0x40da00
mov eax, dword [esp + 0x80]
mov dword [esp + 0x40], eax
mov edi, dword [esp + 0x84]
jmp 0x40da25
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x80], 0
xor edi, edi
test ecx, ecx
je 0x40da1d
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x40], 0
mov dword [esp + 0xe4], ebx
mov dword [esp + 0xe8], esi
movsd xmm0, qword [esp + 0xe4]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0x4c]
call fcn.0041d198
sub esp, 8
mov esi, dword [0x425a74]
cmp edx, dword [esi + 4]
jne 0x40d960
test edx, edx
je 0x40da7a
mov ecx, dword [esi]
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x40d960
cmp edi, dword [esi + 0xc]
jne 0x40d960
test edi, edi
je 0x40daa6
mov eax, dword [esi + 8]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x40d960
cmp dword [esp + 0xa8], 0
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x48]
je 0x40ed85
mov eax, dword [esp + 0x15c]
cmp eax, 0xfffffffc
jb 0x40dad5
cmp byte [0x425a4c], 0
jne 0x40ed46
mov eax, dword [esp + 0x178]
mov dword [esp + 0xc8], eax
movsd xmm0, qword [esp + 0x170]
movsd qword [esp + 0xc0], xmm0
lea eax, [esp + 0x17c]
movsd xmm0, qword [eax]
movsd qword [esp + 0x188], xmm0
mov eax, dword [eax + 8]
mov dword [esp + 0x190], eax
mov eax, dword [esp + 0xc0]
xor eax, dword [esp + 0x188]
mov ecx, dword [esp + 0xc4]
xor ecx, dword [esp + 0x18c]
or ecx, eax
je 0x40ed3b
mov eax, dword [sym.imp.libLLVM_17.dll_vtable_for_llvm::raw_string_ostream]
add eax, 8
mov dword [esp + 0x1c8], eax
mov esi, dword [esp + 0x160]
jmp 0x40db90
mov ecx, dword [esp + 0xc8]
mov eax, dword [ecx]
lea edx, [esp + 0xc0]
mov dword [esp], edx
call dword [eax + 0xc]
sub esp, 4
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
xor eax, dword [esp + 0x188]
xor ecx, dword [esp + 0x18c]
add esi, 0x10
or ecx, eax
je 0x40ed3b
mov ebx, dword [esp + 0xc0]
mov eax, dword [esp + 0xc4]
mov edi, dword [esp + 0xc8]
mov dword [esp + 0x40], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf0], ebx
mov eax, dword [edi]
movsd xmm0, qword [esp + 0xf0]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0xdc]
call dword [eax + 0x14]
sub esp, 0xc
test byte [esp + 0xe0], 1
jne 0x40dcb0
mov dword [esp + 0x44], ebx
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 4]
add eax, 0xffffffef
cmp eax, 0xfffffffc
jb 0x40dc1d
mov eax, dword [ecx]
call dword [eax + 0x110]
cmp ax, 0x28
je 0x40dc40
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
call dword [eax + 0x110]
movzx eax, ax
cmp eax, 0xb7
je 0x40dc40
cmp byte [0x425a9c], 0
jne 0x40dc40
mov ebx, 3
test byte [esp + 0xdc], 0x80
jne 0x40eac0
nop dword [eax]
cmp byte [0x425a5c], 0
je 0x40dc5c
mov ebx, 3
test byte [esp + 0xdc], 0x20
jne 0x40eac0
cmp dword [esp + 0xa8], 0
je 0x40dd85
mov ebx, dword [esp + 0x4c]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x20]
test al, al
je 0x40dd26
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 4], xmm0
mov dword [esp], ebx
lea ecx, [esp + 0xf0]
call fcn.0041d180
jmp 0x40dd51
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xdc], 0
mov dword [esp + 0x1a8], eax
mov ecx, dword [esp + 0x3c]
call fcn.0041d1da
mov dword [esp + 0x1a4], 0
mov dword [esp + 0x1a0], 0
movsd xmm0, qword [esp + 0x1a0]
movsd qword [esp + 4], xmm0
mov dword [esp], edx
lea ecx, [esp + 0x1a8]
mov edx, eax
call fcn.0040bec0
mov ecx, dword [esp + 0x1a8]
mov ebx, 1
test ecx, ecx
je 0x40eac0
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40eac0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 4], xmm0
mov dword [esp], ebx
lea ecx, [esp + 0xf0]
call fcn.0041d16e
sub esp, 0xc
movzx eax, byte [esp + 0xf4]
not al
test al, 0xe
movzx eax, byte [esp + 0xf5]
mov ecx, 0
cmovne eax, ecx
movzx eax, al
mov ebx, 3
cmp dword [esp + 0xa8], eax
jne 0x40eac0
xorps xmm0, xmm0
movaps xmmword [esp + 0xf0], xmm0
mov byte [esp + 0x100], 0
lea eax, [esp + 0x104]
movups xmmword [eax + 0x40], xmm0
movups xmmword [eax + 0x30], xmm0
movups xmmword [eax + 0x20], xmm0
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax], xmm0
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 4]
lea ecx, [eax - 0xd]
cmp ecx, 3
mov ebx, dword [esp + 0x44]
ja 0x40de58
mov dword [esp + 0x50], ebx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp], xmm0
mov ecx, edi
call dword [eax + 0xe0]
sub esp, 8
mov dword [esp + 0xfc], edx
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 4]
lea ecx, [eax - 0xd]
cmp ecx, 0xfffffffe
jb 0x40de5d
mov dword [esp + 0x1e4], ebx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1e8], eax
movsd xmm0, qword [esp + 0x1e4]
movsd qword [esp], xmm0
mov ebx, dword [esp + 0x3c]
mov ecx, ebx
call fcn.0041d1b0
sub esp, 8
mov dword [esp + 0xfc], edx
mov dword [esp + 0xf8], eax
mov eax, dword [ebx + 4]
mov ebx, dword [esp + 0x44]
cmp byte [0x425a54], 0
je 0x40de66
jmp 0x40dec6
cmp ecx, 0xfffffffe
jae 0x40de0a
cmp byte [0x425a54], 0
jne 0x40dec6
lea ecx, [eax - 0x17]
cmp ecx, 0xfffffff3
jb 0x40dec6
mov eax, dword [esp + 0x40]
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], ebx
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x90]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0x50]
call dword [eax + 0x2c]
sub esp, 0xc
test byte [esp + 0x58], 1
jne 0x40e142
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 4]
mov dword [esp + 0xd4], esi
add eax, 0xfffffff3
cmp eax, 3
ja 0x40def0
mov dword [esp + 0x50], ebx
mov esi, dword [esp + 0x40]
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], edi
lea ecx, [esp + 0x50]
call fcn.00415e30
jmp 0x40defb
xor edx, edx
mov eax, 0x41f877
mov esi, dword [esp + 0x40]
mov dword [esp + 0x11c], edx
mov dword [esp + 0x118], eax
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ebx
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0x164]
call dword [eax + 0x14]
sub esp, 0xc
mov ebx, dword [esp + 0x164]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 4]
lea ecx, [eax - 0x11]
cmp ecx, 0xfffffffc
mov dword [esp + 0xd8], edi
jae 0x40dffe
mov esi, dword [esp + 0xd4]
test bl, 1
jne 0x40e0e3
lea ecx, [eax - 0xd]
cmp ecx, 3
ja 0x40dfa1
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp], xmm0
mov ecx, edi
call dword [eax + 0xec]
sub esp, 8
mov dl, 0x69
cmp al, 0xa
je 0x40e737
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 4]
lea ecx, [eax - 0x11]
test bl, 4
je 0x40e1bb
cmp ecx, 4
jb 0x40e1bb
add eax, 0xfffffff3
mov dl, 0x57
cmp eax, 3
ja 0x40e737
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp], xmm0
call dword [eax + 0xec]
sub esp, 8
cmp al, 1
sete dl
xor dl, 0x57
jmp 0x40e737
mov ecx, str.ABS
test bl, 8
mov esi, dword [esp + 0xd4]
jne 0x40e0c8
mov ecx, str.COM
test bl, 0x10
jne 0x40e0c8
mov ecx, str.UND
test bl, 1
jne 0x40e0c8
mov dword [esp + 0xac], ebx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x80], eax
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x80]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ebx, [esp + 0x90]
mov ecx, ebx
call dword [eax + 0x40]
sub esp, 0xc
test byte [esp + 0x9c], 1
jne 0x40e298
mov eax, dword [esp + 0x98]
mov dword [esp + 0x58], eax
movsd xmm0, qword [esp + 0x90]
movsd qword [esp + 0x50], xmm0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
mov dword [esp], ecx
mov ecx, ebx
call dword [eax + 0xb4]
sub esp, 4
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x98]
je 0x40e452
mov ebx, dword [esp + 0xac]
jmp 0x40e477
mov dword [esp + 0x110], ecx
mov dword [esp + 0x114], 5
test bl, 1
je 0x40df60
mov dl, 0x55
test bl, 4
je 0x40e737
lea ecx, [eax - 0x11]
cmp ecx, 4
jb 0x40e737
add eax, 0xfffffff3
mov dl, 0x77
cmp eax, 3
ja 0x40e737
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
mov ecx, dword [esp + 0xd8]
mov eax, dword [ecx]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp], xmm0
call dword [eax + 0xec]
sub esp, 8
cmp al, 1
sete dl
xor dl, 0x77
jmp 0x40e737
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], 0
mov dword [esp + 0x80], eax
lea eax, [esp + 0x74]
mov dword [esp + 8], eax
lea eax, [esp + 0x80]
mov dword [esp + 4], eax
lea eax, [esp + 0x90]
mov dword [esp], eax
call fcn.00410450
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x40e187
mov eax, dword [ecx]
call dword [eax + 4]
test byte [esp + 0x58], 1
je 0x40e1a3
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x50], 0
test ecx, ecx
je 0x40e1a3
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, 2
test byte [esp + 0x148], 1
jne 0x40ea8b
jmp 0x40ea9a
mov dl, 0x43
test bl, 0x10
jne 0x40e737
mov dl, 0x61
test bl, 8
jne 0x40e724
cmp eax, 0xa
je 0x40e2da
cmp eax, 3
mov edi, dword [esp + 0xd8]
jne 0x40e411
mov dword [esp + 0xac], ebx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0x80]
call dword [eax + 0x14]
sub esp, 0xc
mov ebx, dword [esp + 0x80]
mov dl, 0x74
test ebx, 0x800
jne 0x40e71d
mov ecx, dword [esp + 0x3c]
call fcn.0041d120
mov word [esp + 0xa0], 0x105
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], edx
lea eax, [esp + 0x90]
mov dword [esp], eax
lea ecx, [esp + 0x50]
call fcn.0041d054
sub esp, 4
mov eax, dword [esp + 0x68]
mov ecx, eax
and ecx, 0xfffffff7
mov dl, 1
cmp ecx, 3
je 0x40e6f4
cmp eax, 0x1f
ja 0x40e6f2
mov ecx, 0xe0000080
bt ecx, eax
setb dl
jmp 0x40e6f4
mov eax, dword [esp + 0x90]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x74]
mov dword [esp + 8], eax
lea eax, [esp + 0x80]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00410450
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x40e54b
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40e54b
mov dword [esp + 0xac], ebx
mov eax, dword [esp + 0x44]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0xec], eax
lea eax, [esp + 0xe4]
mov dword [esp], eax
mov ecx, dword [esp + 0x3c]
call fcn.0041d12c
sub esp, 4
mov dword [esp + 0x198], edx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xd4], eax
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe8]
mov ebx, dword [esp + 0xec]
mov dword [esp + 0x158], ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0xd0], eax
mov dword [esp + 0x50], eax
mov eax, dword [ebx]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 4], xmm0
mov dword [esp], ebx
lea ecx, [esp + 0x90]
call dword [eax + 0x28]
sub esp, 0xc
test byte [esp + 0x98], 1
jne 0x40e552
mov ecx, dword [esp + 0x94]
cmp ecx, 6
jb 0x40e3eb
mov edi, dword [esp + 0x90]
mov edx, dword [edi]
mov eax, 0x6265642e
xor edx, eax
mov dword [esp + 0x1c4], edi
movzx eax, word [edi + 4]
xor eax, 0x6775
or eax, edx
je 0x40eb5e
cmp ecx, 7
jb 0x40e3eb
mov edx, dword [esp + 0x1c4]
mov eax, dword [edx]
mov ecx, 0x6478732e
xor eax, ecx
mov ecx, dword [edx + 3]
mov edx, 0x61746164
xor ecx, edx
mov dl, 0x4e
or ecx, eax
je 0x40e59c
mov eax, dword [esp + 0xd4]
test eax, eax
je 0x40e615
movzx eax, word [eax + 0xc]
cmp eax, 0xfeff
jbe 0x40e61f
xor ecx, ecx
cwde
jmp 0x40ecb7
lea edx, [eax - 0xd]
cmp edx, 0xfffffffe
jae 0x40e5d2
cmp eax, 2
jne 0x40e5f1
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 8]
movzx eax, word [eax + 0x12]
and eax, 3
mov dl, 0x3f
cmp ax, 3
je 0x40e724
movzx ecx, ax
shl ecx, 3
mov edx, 0x726474
shr edx, cl
jmp 0x40e724
mov ecx, dword [esp + 0x50]
xor ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x54]
xor edx, dword [esp + 0x94]
or edx, ecx
mov ebx, dword [esp + 0xac]
je 0x40e54b
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0x80], xmm0
mov edx, dword [eax]
movsd xmm0, qword [esp + 0x80]
movsd qword [esp + 4], xmm0
mov dword [esp], eax
lea ecx, [esp + 0x90]
call dword [edx + 0x48]
sub esp, 0xc
test byte [esp + 0x98], 1
jne 0x40e4e2
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x114], ecx
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 4]
test bl, 1
je 0x40df60
jmp 0x40e0e3
mov eax, dword [esp + 0x90]
mov dword [esp + 0x90], 0
mov dword [esp + 0x74], eax
lea eax, [esp + 0xe4]
mov dword [esp + 8], eax
lea eax, [esp + 0x74]
mov dword [esp + 4], eax
lea eax, [esp + 0x80]
mov dword [esp], eax
call fcn.00410450
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x40e527
mov eax, dword [ecx]
call dword [eax + 4]
test byte [esp + 0x98], 1
je 0x40e54b
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x90], 0
test ecx, ecx
jne 0x40e2d0
mov dl, 0x3f
jmp 0x40e737
mov eax, dword [esp + 0x90]
mov dword [esp + 0x90], 0
mov dword [esp + 0x80], eax
lea eax, [esp + 0x74]
mov dword [esp + 8], eax
lea eax, [esp + 0x80]
mov dword [esp + 4], eax
lea eax, [esp + 0x50]
mov dword [esp], eax
call fcn.00410450
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x40e59a
mov eax, dword [ecx]
call dword [eax + 4]
mov dl, 0x3f
test byte [esp + 0x98], 1
je 0x40e71d
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x90], 0
test ecx, ecx
je 0x40e71d
mov eax, dword [ecx]
mov ebx, edx
call dword [eax + 4]
mov edx, ebx
jmp 0x40e71d
mov dword [esp + 4], edi
mov eax, dword [esp + 0x40]
mov dword [esp], eax
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
call fcn.00415fc0
mov edx, eax
jmp 0x40e724
cmp ecx, 3
ja 0x40eaff
mov eax, dword [esp + 0x40]
mov dword [esp], eax
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
call fcn.00416210
mov edx, eax
jmp 0x40e724
mov eax, dword [esp + 0x198]
mov eax, dword [eax + 0xc]
test eax, eax
jle 0x40eb57
mov eax, dword [esp + 0x158]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x80], eax
mov eax, dword [ebx]
movsd xmm0, qword [esp + 0x80]
movsd qword [esp + 4], xmm0
mov dword [esp], ebx
lea ecx, [esp + 0x50]
call dword [eax + 0x40]
sub esp, 0xc
test byte [esp + 0x5c], 1
jne 0x40eb65
mov eax, dword [esp + 0x58]
mov dword [esp + 0x88], eax
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0x80], xmm0
lea eax, [esp + 0x80]
mov dword [esp], eax
mov ebx, dword [esp + 0x3c]
mov ecx, ebx
call fcn.0041d132
sub esp, 4
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x158], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
lea ecx, [esp + 0x74]
call fcn.0041d138
sub esp, 8
test byte [esp + 0x7c], 1
jne 0x40ec3b
cmp dword [esp + 0x78], 6
jb 0x40e6eb
mov eax, dword [esp + 0x74]
mov ecx, dword [eax]
mov edx, 0x6164692e
xor ecx, edx
movzx eax, word [eax + 4]
xor eax, 0x6174
or eax, ecx
je 0x40ec54
xor ebx, ebx
jmp 0x40ec59
xor edx, edx
test byte [esp + 0x50], 1
je 0x40e70b
mov eax, dword [esp + 0x58]
mov dword [esp], eax
mov edi, edx
call sub.libc.dll_operator_delete_void_
mov edx, edi
shr ebx, 0xa
and bl, dl
mov edx, 0x64
mov eax, 0x73
cmovne edx, eax
mov ebx, dword [esp + 0xac]
test bl, 2
je 0x40e737
movsx eax, dl
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_toupper]
mov edx, eax
mov byte [esp + 0x100], dl
xorps xmm0, xmm0
movups xmmword [esp + 0x54], xmm0
mov byte [esp + 0x64], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 1
mov eax, dword [esp + 0x1c8]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x104]
mov dword [esp + 0x70], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
lea ebx, [esp + 0x50]
mov ecx, ebx
call fcn.0041cfc4
sub esp, 0xc
mov eax, dword [esp + 0x40]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x90], eax
mov edi, dword [esp + 0xd8]
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x90]
movsd qword [esp + 8], xmm0
mov dword [esp + 4], ebx
mov dword [esp], edi
lea ecx, [esp + 0x74]
call dword [eax + 0x10]
sub esp, 0x10
mov eax, dword [esp + 0x74]
test eax, eax
je 0x40e8d2
cmp dword [esp + 0x15c], 0xfffffffc
jae 0x40e842
mov dword [esp + 0x19c], eax
mov dword [esp + 0x74], 0
mov ecx, dword [esp + 0x3c]
call fcn.0041d1da
mov dword [esp + 0x1e0], 0
mov dword [esp + 0x1dc], 0
movsd xmm0, qword [esp + 0x1dc]
movsd qword [esp + 4], xmm0
mov dword [esp], edx
lea ecx, [esp + 0x19c]
mov edx, eax
call fcn.0040bec0
mov ecx, dword [esp + 0x19c]
jmp 0x40e8bc
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
sub edx, ecx
cmp edx, 0xf
ja 0x40e872
mov dword [esp + 4], 0x10
mov dword [esp], str.bad_string_index
lea ecx, [esp + 0x50]
call fcn.0041cfca
sub esp, 8
mov eax, dword [esp + 0x74]
jmp 0x40e881
movups xmm0, xmmword [str.bad_string_index]
movups xmmword [ecx], xmm0
add dword [esp + 0x60], 0x10
mov dword [esp + 0x74], 0
mov dword [esp + 0x80], eax
lea eax, [esp + 0xe4]
mov dword [esp + 8], eax
lea eax, [esp + 0x80]
mov dword [esp + 4], eax
lea eax, [esp + 0x90]
mov dword [esp], eax
call fcn.00410450
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x40e8c5
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x40e8d2
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x160]
cmp eax, dword [esp + 0xbc]
mov ebx, dword [esp + 0x44]
je 0x40e978
movzx eax, byte [esi]
test al, 1
je 0x40e8f6
mov eax, dword [esi + 4]
jmp 0x40e8f8
shr eax, 1
test eax, eax
je 0x40e978
cmp byte [esi + 0xc], 0
mov eax, 0x41fa4e
mov ecx, 0x41fa51
cmove eax, ecx
mov dword [esp + 8], esi
mov dword [esp + 4], eax
lea eax, [esp + 0x90]
mov dword [esp], eax
call fcn.0041d24c
movzx eax, byte [esp + 0x90]
test al, 1
je 0x40e940
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x94]
jmp 0x40e949
shr eax, 1
lea ecx, [esp + 0x91]
mov dword [esp + 4], eax
mov dword [esp], ecx
lea ecx, [esp + 0x104]
call fcn.0041d22e
sub esp, 8
test byte [esp + 0x90], 1
je 0x40e978
mov eax, dword [esp + 0x98]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
mov dword [esp + 0x120], ebx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], edi
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], ebx
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x90]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0x80]
call dword [eax + 0x14]
sub esp, 0xc
movzx ebx, byte [esp + 0x84]
test bl, 1
jne 0x40e9dd
mov eax, dword [esp + 0x80]
mov dword [esp + 0x134], eax
jmp 0x40ea3c
mov eax, dword [esp + 0x80]
mov dword [esp + 0x80], 0
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0x3c]
call fcn.0041d1da
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 0
movsd xmm0, qword [esp + 0x90]
movsd qword [esp + 4], xmm0
mov dword [esp], edx
lea ecx, [esp + 0x74]
mov edx, eax
call fcn.0040bec0
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x40ea3c
mov eax, dword [ecx]
call dword [eax + 4]
test byte [esp + 0x84], 1
je 0x40ea61
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x80], 0
test ecx, ecx
je 0x40ea61
mov eax, dword [ecx]
call dword [eax + 4]
test bl, 1
jne 0x40ea76
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0xf0]
call fcn.00412b20
lea ecx, [esp + 0x50]
call fcn.0041cfd6
xor ebx, ebx
test byte [esp + 0x148], 1
je 0x40ea9a
mov eax, dword [esp + 0x150]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
test byte [esp + 0x104], 1
je 0x40eac0
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
nop word cs:[eax + eax]
test byte [esp + 0xe0], 1
je 0x40eae5
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0xdc], 0
test ecx, ecx
je 0x40eae5
mov eax, dword [ecx]
call dword [eax + 4]
cmp ebx, 3
mov edi, dword [esp + 0x3c]
je 0x40db50
test ebx, ebx
je 0x40db50
jmp 0x40ed75
cmp eax, 5
je 0x40ebbb
cmp eax, 0x16
jne 0x40ebd6
mov eax, dword [esp + 0x40]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
lea ecx, [esp + 0x90]
call dword [eax + 0x14]
sub esp, 0xc
mov edx, dword [esp + 0x90]
shr edx, 0xb
and edx, 1
shl dl, 4
or dl, 0x64
jmp 0x40e724
xor ecx, ecx
jmp 0x40ec94
mov dl, 0x4e
jmp 0x40e59c
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], 0
mov dword [esp + 0x74], eax
lea eax, [esp + 0x16f]
mov dword [esp + 8], eax
lea eax, [esp + 0x74]
mov dword [esp + 4], eax
lea eax, [esp + 0x80]
mov dword [esp], eax
call fcn.00410450
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x40eba4
mov eax, dword [ecx]
call dword [eax + 4]
mov dl, 0x3f
mov dword [esp + 0x158], 0
mov ebx, 1
jmp 0x40ec5b
mov eax, dword [esp + 0x40]
mov dword [esp], eax
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
call fcn.00416560
mov edx, eax
jmp 0x40e724
mov dword [esp + 4], edi
mov dword [esp + 0xac], ebx
mov ebx, dword [esp + 0x40]
mov dword [esp], ebx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
call fcn.004165b0
mov dword [esp + 0xd0], eax
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0xac]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
mov eax, dword [edi]
movsd xmm0, qword [esp + 0x50]
movsd qword [esp], xmm0
mov ecx, edi
call dword [eax + 0xe4]
sub esp, 8
mov edx, dword [esp + 0xd0]
cmp al, 0xa
jne 0x40e724
jmp 0x40e737
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x74], 0
xor ebx, ebx
test ecx, ecx
je 0x40ec59
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40ec59
mov ebx, 1
mov dl, 0x69
test byte [esp + 0x5c], 1
je 0x40ec85
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x50], 0
test ecx, ecx
je 0x40ec85
mov eax, dword [ecx]
mov dword [esp + 0xd0], edx
call dword [eax + 4]
mov edx, dword [esp + 0xd0]
test ebx, ebx
mov ecx, dword [esp + 0x158]
jne 0x40e59c
mov edi, dword [esp + 0xd4]
test edi, edi
je 0x40ecad
movzx eax, word [edi + 0xc]
cmp eax, 0xff00
jb 0x40ecc2
cwde
jmp 0x40ecb7
mov eax, dword [esp + 0x198]
mov eax, dword [eax + 0xc]
mov dl, 0x6e
cmp eax, 0xfffffffe
je 0x40e59c
mov dl, 0x74
test cl, 0x20
jne 0x40e59c
test cl, 0x40
jne 0x40ed0a
mov dl, 0x62
test cl, cl
js 0x40e59c
mov dl, 0x69
test ecx, 0x200
jne 0x40e59c
lea ecx, [esp + 0xb0]
call fcn.004167f0
test al, al
mov edx, 0x3f
mov eax, 0x73
cmovne edx, eax
jmp 0x40e59c
test ecx, ecx
mov edx, 0x64
mov eax, 0x72
cmovns edx, eax
jmp 0x40e59c
xor ebx, ebx
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x160]
test ecx, ecx
mov esi, dword [esp + 0xbc]
jne 0x40eda3
jmp 0x40edc9
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x15c]
mov bl, 1
cmp eax, 0xfffffffc
jb 0x40ed61
cmp byte [0x425a41], 0
jne 0x40ed61
mov ecx, dword [esp + 0x4c]
mov edx, esi
call fcn.00412df0
mov ecx, dword [esp + 0x160]
test ecx, ecx
mov esi, dword [esp + 0xbc]
jne 0x40eda3
jmp 0x40edc9
test bl, 1
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x15c]
je 0x40ed46
xor ebx, ebx
mov ecx, dword [esp + 0x160]
test ecx, ecx
mov esi, dword [esp + 0xbc]
jne 0x40eda3
jmp 0x40edc9
add esi, 0xfffffff0
cmp esi, ecx
je 0x40edc1
test byte [esi - 0x10], 1
je 0x40eda0
mov eax, dword [esi - 8]
mov dword [esp], eax
call sub.libc.dll_operator_delete_void_
mov ecx, dword [esp + 0x160]
jmp 0x40eda0
mov dword [esp], ecx
call sub.libc.dll_operator_delete_void_
cmp byte [0x425a55], 0
sete al
and bl, al
cmp bl, 1
jne 0x40f013
mov ecx, edi
call fcn.0041d1da
mov dword [0x425a64], edx
mov dword [0x425a60], eax
cmp byte [0x425a44], 0
je 0x40ee50
mov eax, dword [edi + 4]
add eax, 0xfffffff3
cmp eax, 3
ja 0x40eeb3
mov eax, dword [edi]
mov dword [esp], edi
lea ecx, [esp + 0x50]
call dword [eax + 0x104]
sub esp, 4
mov eax, dword [esp + 0x58]
mov dword [esp + 0xf8], eax
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0xf0], xmm0
movsd xmm0, qword [esp + 0x5c]
movsd qword [esp + 0xfc], xmm0
mov eax, dword [esp + 0x64]
mov dword [esp + 0x104], eax
jmp 0x40ee80
mov eax, dword [edi]
mov dword [esp], edi
lea ecx, [esp + 0x50]
call dword [eax + 0x18]
sub esp, 4
mov eax, dword [edi]
lea ecx, [esp + 0xfc]
mov dword [esp], edi
call dword [eax + 0x1c]
sub esp, 4
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0xf0], xmm0
mov eax, dword [esp + 0xf0]
mov ecx, dword [esp + 0xf4]
xor eax, dword [esp + 0xfc]
xor ecx, dword [esp + 0x100]
xor ebx, ebx
or ecx, eax
setne bl
mov edx, dword [esp + 0x48]
mov ecx, dword [edx]
test bl, bl
jne 0x40ef8c
jmp 0x40ef11
mov dword [esp + 0x50], str.File_format_has_no_dynamic_symbol_table
mov word [esp + 0x60], 0x103
mov dword [esp], 0x1c
call sub.libc.dll_operator_new_unsigned_int_
mov ebx, eax
call fcn.0041d090
mov dword [esp + 0x174], eax
mov dword [esp + 0x170], 3
movsd xmm0, qword [esp + 0x170]
movsd qword [esp + 4], xmm0
lea eax, [esp + 0x50]
mov dword [esp], eax
mov ecx, ebx
call fcn.0041cfb8
sub esp, 0xc
mov edx, dword [esp + 0x48]
mov ecx, dword [edx]
test bl, bl
jne 0x40ef8c
cmp ecx, dword [edx + 4]
jne 0x40ef8c
cmp byte [0x425a6a], 0
jne 0x40ef8c
call fcn.0041d042
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x1d8], ecx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x1d4], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x1d0], ecx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x1cc], ecx
movsd xmm0, qword [esp + 0x1cc]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [esp + 0x1d4]
movsd qword [esp], xmm0
mov ecx, eax
call fcn.00410560
call fcn.0041d042
mov dword [esp], str.no_symbols_n
mov ecx, eax
call fcn.00403ca0
sub esp, 4
mov edx, dword [esp + 0x48]
mov ecx, dword [edx]
movzx ebx, byte [ebp + 8]
cmp byte [0x425a6c], 0
jne 0x40efea
mov edx, dword [edx + 4]
mov eax, edx
sub eax, ecx
sar eax, 3
imul eax, eax, 0xc4ec4ec5
bsr esi, eax
xor esi, 0x1f
add esi, esi
xor esi, 0x3e
xor eax, eax
cmp edx, ecx
cmovne eax, esi
cmp byte [0x425a46], 0
je 0x40efd6
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.00407b30
jmp 0x40efe6
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.0040a340
mov edx, dword [esp + 0x48]
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], eax
movzx eax, bl
mov dword [esp], eax
mov ecx, edi
call fcn.004107d0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea ecx, [esp + 0xb0]
call fcn.00407af0
int3