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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x540
mov esi, esp
mov dword [esi + 0x528], ebp
lea eax, [esi + 0x530]
mov dword [esi + 0x28], edx
mov ebx, dword [ebp + 8]
mov dword [eax - 4], esp
or dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x41b590
mov edx, dword fs:[0]
mov dword [eax], edx
mov dword fs:[0], eax
mov al, byte [section..data]
mov dword [esi + 0x48], ecx
cmp al, 0xff
je 0x403212
cmp al, 1
jne 0x403261
lea edi, [esi + 0xb0]
mov edx, ebx
mov ecx, edi
call fcn.004095f7
mov ebx, 0xb0
lea eax, [esi + 0x3c0]
mov edx, edi
lea ecx, [eax + ebx]
call fcn.004013c7
push ebx
push edi
lea eax, [esi + 0x3c0]
jmp 0x4035af
and dword [esi + 0x538], 0
lea ecx, [esi + 0x250]
call fcn.004095bd
lea ecx, [esi + 0xb0]
call fcn.004095da
mov ebx, dword [esi + 0x258]
mov eax, ebx
not eax
test eax, 0xc000000
jne 0x40324c
call fcn.00402379
and eax, 2
shr eax, 1
jmp 0x40324e
xor eax, eax
shr ebx, 0x19
and ebx, 1
and bl, al
mov byte [section..data], bl
mov ebx, dword [ebp + 8]
jne 0x4031e1
lea edi, [esi + 0xb0]
push 0x160
push 0
push edi
call fcn.0041cb50
add esp, 0xc
and dword [esi + 0x538], 0
push 8
pop edx
mov ecx, edi
mov dword [esi + 0x20], edx
push ebx
push ebx
call fcn.004084ef
pop eax
pop ecx
xor ebx, ebx
push 0xf
pop eax
lea ecx, [esi + 0xd0]
xor edi, edi
mov dword [esi + 8], eax
mov dword [esi + 0x24], ecx
cmp ebx, 0xa
je 0x40347e
lea eax, [ebx + 1]
mov dword [esi + 0x1c], eax
lea eax, [edi + 8]
mov dword [esi + 0xc], eax
push 0xfffffffffffffff8
pop eax
mov ecx, dword [esi + 8]
test eax, eax
je 0x4032dd
cmp dword [esi + 8], 0x57
ja 0x403c21
mov edx, dword [esi + ecx*4 + 0x90]
inc eax
mov dword [esi + ecx*4 + 0xb0], edx
dec ecx
jmp 0x4032bd
mov edx, dword [esi + 0xc]
and dword [esi + 0x538], 0
lea eax, [edi + 0x10]
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], edi
lea ecx, [esi + 0xb0]
push 0x42c450
mov dword [esi + 0x18], eax
push eax
call fcn.0040877b
pop ecx
pop edi
mov ecx, eax
call fcn.004087ad
mov edx, dword [esi + 0xc]
lea ecx, [esi + 0xb0]
push 0x42c460
push dword [esi + 0x18]
call fcn.0040877b
pop ecx
pop edi
mov ecx, eax
call fcn.00408ae8
cmp dword [esi + 0x10], 8
jae 0x40335a
mov edx, dword [esi + 0xc]
lea ecx, [esi + 0xb0]
push 0x42c4b0
push dword [esi + 0x18]
call fcn.0040877b
pop ecx
pop edi
mov edi, dword [esi + 0x10]
cmp edi, edx
jb 0x403401
jmp 0x403cd7
mov edx, dword [esi + 0xc]
lea ecx, [esi + 0xb0]
push 0x42c470
push dword [esi + 0x18]
call fcn.0040877b
pop ecx
pop edi
mov edi, dword [esi + 0x10]
lea ecx, [edi - 8]
cmp ecx, edx
jae 0x403cab
mov edx, dword [esi + 0xc]
xor byte [eax + edi*4 - 0x1f], 0xc0
lea ecx, [esi + 0xb0]
push 0x42c480
push dword [esi + 0x18]
call fcn.0040877b
pop ecx
pop edi
mov edi, dword [esi + 0x10]
lea ecx, [edi - 7]
cmp ecx, edx
jae 0x403cca
mov edx, dword [esi + 0xc]
xor byte [eax + edi*4 - 0x1b], 0xc0
lea ecx, [esi + 0xb0]
push 0x42c490
push dword [esi + 0x18]
call fcn.0040877b
pop ecx
pop edi
mov edi, dword [esi + 0x10]
lea ecx, [edi - 5]
cmp ecx, edx
jae 0x403ce6
mov edx, dword [esi + 0xc]
xor byte [eax + edi*4 - 0x13], 0xc0
lea ecx, [esi + 0xb0]
push 0x42c4a0
push dword [esi + 0x18]
call fcn.0040877b
pop ecx
pop edi
mov edi, dword [esi + 0x10]
add edi, 0xfffffffc
cmp edi, edx
jae 0x403cbb
mov ecx, dword [esi + 0x14]
xor byte [eax + edi*4 + 1], 0xc0
xor eax, eax
cmp eax, 8
je 0x40346b
lea edx, [ecx + eax - 0x58]
test edx, edx
je 0x403c3b
lea edx, [ecx + eax - 0x50]
test edx, edx
je 0x403c57
mov ebx, dword [esi + 0x24]
mov ecx, dword [ebx + eax*4]
rol ecx, 0x12
and ecx, 0x3030303
xor ecx, dword [ebx + eax*4 - 0x20]
mov edi, ecx
lea edx, [ecx*4]
shl edi, 6
and edx, 0xfcfcfcfc
and edi, 0xc0c0c0c0
xor edi, ecx
shl ecx, 4
and ecx, 0xf0f0f0f0
xor ecx, edx
xor edi, ecx
mov ecx, dword [esi + 0x14]
mov dword [ebx + eax*4], edi
inc eax
jmp 0x40340b
add dword [esi + 8], 8
add dword [esi + 0x24], 0x20
mov ebx, dword [esi + 0x1c]
mov edi, dword [esi + 0xc]
jmp 0x4032a2
push 2
pop eax
lea ebx, [esi + 0xb0]
sub eax, 1
jb 0x403548
mov edx, dword [esi + 0x20]
and dword [esi + 0x538], 0
mov dword [esi + 0x14], eax
mov ecx, ebx
lea eax, [edx + 8]
push 0x42c420
mov dword [esi + 8], eax
push eax
call fcn.0040877b
pop ecx
pop edi
mov ecx, eax
call fcn.00408b40
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 8]
lea ecx, [esi + 0xb0]
add eax, 0x10
push 0x42c430
mov dword [esi + 8], eax
push eax
call fcn.0040877b
pop ecx
pop edi
mov ecx, eax
call fcn.00408b7d
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 8]
lea ecx, [esi + 0xb0]
add eax, 0x18
push 0x42c440
push eax
call fcn.0040877b
pop ecx
pop edi
add dword [esi + 0x20], 0x20
lea ebx, [esi + 0xb0]
shl edx, 2
test edx, edx
je 0x403540
mov edi, dword [eax]
add edx, 0xfffffffc
mov ecx, edi
shr ecx, 4
xor ecx, edi
and ecx, 0xc0f0300
xor edi, ecx
shl ecx, 4
xor ecx, edi
mov edi, ecx
shr edi, 2
xor edi, ecx
and edi, 0x33003300
xor ecx, edi
shl edi, 2
xor edi, ecx
mov dword [eax], edi
add eax, 4
jmp 0x403508
mov eax, dword [esi + 0x14]
jmp 0x403487
lea ecx, [esi + 0x1d0]
push 8
pop edx
call fcn.00408b40
xor ecx, ecx
inc ecx
cmp ecx, 0xb
je 0x40359d
and dword [esi + 0x538], 0
lea edx, [ecx*8]
lea eax, [ecx*8 + 8]
mov dword [esi + 8], ecx
lea ecx, [esi + 0xb0]
push 0x42c410
push eax
call fcn.0040877b
mov ecx, dword [esi + 8]
add esp, 8
inc ecx
mov dword [esi + 8], ecx
mov ecx, eax
call fcn.00408ae8
mov ecx, dword [esi + 8]
jmp 0x403559
lea eax, [esi + 0x3c0]
push 0x160
lea ecx, [esi + 0xb0]
push ecx
push eax
call fcn.0041c5d0
add esp, 0xc
xorps xmm0, xmm0
xor eax, eax
movaps xmmword [esi + 0xb0], xmm0
cmp eax, 2
je 0x403609
mov edx, 0x42be63
mov dword [esi + 8], eax
lea ecx, [eax*8]
mov dword [esi + 0x538], 1
push 0x42b9bc
call fcn.00401280
pop ecx
cmp edx, 7
jbe 0x403c98
movsd xmm0, qword [eax]
mov eax, dword [esi + 8]
movsd qword [esi + eax*8 + 0xb0], xmm0
inc eax
jmp 0x4035c4
lea edi, [esi + 0x230]
mov eax, 0x160
lea ebx, [esi + 0x250]
lea ecx, [esi + 0x3c0]
movaps xmm0, xmmword [edi - 0x180]
movaps xmmword [ebx + 0x160], xmm0
push eax
push ecx
push ebx
call fcn.0041c5d0
add esp, 0xc
mov ecx, edi
call fcn.00408475
lea eax, [esi + 0xb0]
push 0x170
push ebx
push eax
call fcn.0041c5d0
add esp, 0xc
mov eax, dword [esi + 0x28]
and dword [edi - 0xc], 0
and dword [edi - 0x10], 0
lea ecx, [esi + 0x38]
mov byte [edi + 0x10], 0
mov dword [esi + 0x538], 2
mov edx, dword [eax + 8]
mov dword [esi + 0x30], edx
call fcn.004023d1
mov eax, dword [esi + 0x28]
mov edi, dword [esi + 0x30]
mov eax, dword [eax + 4]
mov edx, eax
mov dword [esi + 0x44], eax
test edi, edi
je 0x403be9
cmp edi, 0x10
push 0x10
pop eax
cmovb eax, edi
mov dword [esi + 0x538], 3
lea ecx, [esi + 0x250]
push 0x42ba30
push eax
push edi
call fcn.004022fa
add esp, 0xc
mov edx, dword [esi + 0x258]
mov edi, dword [esi + 0x25c]
cmp dword [esi + 0x254], 0xf
jbe 0x40368a
mov eax, dword [esi + 0x250]
mov dword [esi + 0x4c], edx
mov dword [esi + 0x30], edi
lea ecx, [esi + 0x250]
mov dword [esi + 8], eax
push 8
pop edx
call fcn.004023d1
mov eax, dword [esi + 8]
mov edi, dword [esi + 0x254]
movsd xmm0, qword [eax]
mov dword [esi + 0x1c], edi
movsd qword [edi], xmm0
mov bl, byte [esi + 0x240]
mov eax, dword [esi + 0x250]
cmp dword [esi + 0x224], 0xffffffff
movzx ecx, bl
mov dword [esi + 0x2c], eax
mov dword [esi + 8], ebx
jne 0x403751
mov eax, dword [esi + 0x220]
test bl, bl
push 8
pop edx
je 0x403736
cmp bl, 9
jb 0x403758
mov ebx, dword [esi + 8]
lea edx, [ecx - 8]
mov edi, edx
shr edx, 4
not eax
and edi, 0xf
cmp edi, 1
mov edi, dword [esi + 0x1c]
sbb edx, 0xffffffff
cmp edx, eax
ja 0x403cf3
test bl, bl
push 8
pop ebx
je 0x4037b5
lea edx, [esi + 0x230]
mov byte [esi + 7], 1
mov dword [esi + 0x538], 4
push 0x42b458
call fcn.00401280
pop ecx
cmp edx, 8
jbe 0x403794
push 0xfffffffffffffff8
pop ecx
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi + 8]
test ecx, ecx
je 0x4037a6
mov dl, byte [eax + ecx + 8]
xor byte [edi + ecx + 8], dl
inc ecx
jmp 0x403785
mov edi, dword [esi + 0x1c]
xor ecx, ecx
cmp edx, ecx
je 0x4037ae
mov bl, byte [eax + ecx]
xor byte [edi + ecx], bl
inc ecx
jmp 0x403799
add bl, 8
jmp 0x403ba3
add edi, edx
push 8
pop ebx
sub ebx, edx
mov ecx, ebx
lea eax, [esi + 0x210]
mov dword [esi + 0x18], edi
shr ecx, 4
mov dword [esi + 0x50], eax
mov dword [esi + 0x54], edi
mov dword [esi + 0x58], edi
mov dword [esi + 0xc], ecx
mov dword [esi + 0x5c], ecx
mov al, byte [section..data]
mov dword [esi + 0x34], ebx
cmp al, 1
jne 0x403842
lea ecx, [esi + 0xb0]
lea edx, [esi + 0x50]
mov byte [esi + 7], 1
mov dword [esi + 0x538], 4
call fcn.00402a90
mov ebx, dword [esi + 0x34]
and ebx, 0xf
je 0x403ba3
mov dword [esi + 8], ebx
mov al, byte [section..data]
mov dword [esi + 0x538], 4
cmp al, 1
jne 0x403b19
lea eax, [esi + 0x230]
mov byte [esi + 7], 1
lea ecx, [esi + 0xb0]
lea edx, [esi + 0x210]
push eax
call fcn.0040301e
pop eax
jmp 0x403b82
shr ebx, 5
xor eax, eax
mov dword [esi + 0x10], ebx
cmp dword [esi + 0x10], eax
je 0x403995
lea ecx, [esi + 0x3c0]
mov dword [esi + 0x14], eax
call fcn.00408482
lea ecx, [esi + 0x250]
call fcn.00408482
xor eax, eax
cmp eax, 0x20
mov dword [esi + 0x538], 4
je 0x4038bf
lea ecx, [esi + 0x80]
lea edx, [esi + 0x210]
mov dword [esi + 8], eax
mov byte [esi + 7], 1
call fcn.00403093
movsd xmm0, qword [esi + 0x80]
mov eax, dword [esi + 8]
movsd xmm1, qword [esi + 0x88]
movsd qword [esi + eax + 0x258], xmm1
movsd qword [esi + eax + 0x250], xmm0
add eax, 0x10
jmp 0x40386e
lea eax, [esi + 0x250]
mov byte [esi + 7], 1
lea ecx, [esi + 0x3c0]
lea edx, [esi + 0xb0]
push eax
call fcn.00408bc8
pop eax
mov eax, dword [esi + 0x14]
lea edi, [esi + 0x60]
mov ecx, edi
shl eax, 5
add eax, dword [esi + 0x18]
movsd xmm0, qword [eax + 0x18]
mov dword [esi + 0x24], eax
movsd qword [esi + 0x268], xmm0
movsd xmm0, qword [eax + 0x10]
movsd qword [esi + 0x260], xmm0
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
movsd qword [esi + 0x258], xmm1
movsd qword [esi + 0x250], xmm0
call fcn.00408482
mov ecx, edi
xor eax, eax
lea edx, [esi + 0x3c0]
lea ebx, [esi + 0x250]
cmp eax, 2
je 0x403962
mov dword [esi + 8], eax
push 0xfffffffffffffff0
pop edi
test edi, edi
je 0x403953
mov al, byte [edx + edi + 0x10]
xor al, byte [ebx + edi + 0x10]
mov byte [ecx + edi + 0x10], al
inc edi
jmp 0x403940
mov eax, dword [esi + 8]
add ebx, 0x10
add edx, 0x10
add ecx, 0x10
inc eax
jmp 0x403935
movsd xmm0, qword [esi + 0x78]
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x14]
movsd qword [ecx + 0x18], xmm0
inc eax
movsd xmm0, qword [esi + 0x70]
movsd qword [ecx + 0x10], xmm0
movsd xmm0, qword [esi + 0x60]
movsd xmm1, qword [esi + 0x68]
movsd qword [ecx + 8], xmm1
movsd qword [ecx], xmm0
jmp 0x40384a
mov ebx, dword [esi + 0xc]
lea edi, [esi + 0x80]
mov ecx, edi
and ebx, 1
call fcn.00408482
mov byte [esi + 7], 1
mov dword [esi + 0x538], 4
mov dword [esi + 0x20], ebx
mov ecx, ebx
mov edx, edi
push 2
call fcn.004010d6
pop ecx
mov dword [esi + 0x14], eax
mov dword [esi + 0x10], edx
mov ecx, dword [esi + 0x10]
cmp ecx, 2
jae 0x403d24
mov eax, dword [esi + 0xc]
mov ebx, dword [esi + 0x14]
shl ecx, 4
and eax, 0xfffffffe
add ecx, ebx
shl eax, 4
mov dword [esi + 0x24], ecx
add eax, dword [esi + 0x18]
mov dword [esi + 0xc], eax
mov eax, ebx
cmp eax, dword [esi + 0x24]
je 0x403a98
lea ecx, [esi + 0xa0]
lea edx, [esi + 0x210]
mov dword [esi + 8], eax
mov byte [esi + 7], 1
call fcn.00403093
lea ecx, [esi + 0x3c0]
call fcn.00408482
lea ecx, [esi + 0x250]
lea edx, [esi + 0xa0]
mov byte [esi + 7], 1
call fcn.0040131f
movsd xmm0, qword [esi + 0x250]
movsd xmm1, qword [esi + 0x258]
lea eax, [esi + 0x3c0]
mov byte [esi + 7], 1
lea ecx, [esi + 0x250]
lea edx, [esi + 0xb0]
movsd qword [esi + 0x3c8], xmm1
movsd qword [esi + 0x3c0], xmm0
push eax
call fcn.00408bc8
pop eax
movsd xmm0, qword [esi + 0x250]
movsd xmm1, qword [esi + 0x258]
mov eax, dword [esi + 8]
mov ebx, dword [esi + 0x14]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
add eax, 0x10
jmp 0x4039f3
xor edi, edi
cmp edi, dword [esi + 0x20]
je 0x4037fa
cmp edi, dword [esi + 0x10]
je 0x403c75
lea eax, [edi + 1]
shl edi, 4
lea ecx, [esi + 0x250]
add edi, dword [esi + 0xc]
mov dword [esi + 8], eax
movsd xmm0, qword [edi]
movsd xmm1, qword [edi + 8]
movsd qword [esi + 0x3c8], xmm1
movsd qword [esi + 0x3c0], xmm0
call fcn.00408475
push 0xfffffffffffffff0
pop eax
test eax, eax
je 0x403af8
mov cl, byte [ebx + eax + 0x10]
xor cl, byte [esi + eax + 0x3d0]
mov byte [esi + eax + 0x260], cl
inc eax
jmp 0x403adf
movsd xmm0, qword [esi + 0x250]
movsd xmm1, qword [esi + 0x258]
add ebx, 0x10
movsd qword [edi + 8], xmm1
movsd qword [edi], xmm0
mov edi, dword [esi + 8]
jmp 0x403a9a
lea ecx, [esi + 0x60]
lea edx, [esi + 0x210]
mov byte [esi + 7], 1
call fcn.00403093
lea edi, [esi + 0x3c0]
mov ecx, edi
call fcn.00408482
mov ecx, edi
lea edx, [esi + 0x60]
mov byte [esi + 7], 1
call fcn.0040131f
lea eax, [esi + 0x3c0]
mov byte [esi + 7], 1
lea ecx, [esi + 0x250]
lea edx, [esi + 0xb0]
push eax
call fcn.00408bc8
pop eax
movsd xmm0, qword [esi + 0x250]
movsd xmm1, qword [esi + 0x258]
lea eax, [esi + 0x230]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
mov eax, dword [esi + 0x34]
mov edx, dword [esi + 0x18]
mov ebx, dword [esi + 8]
and eax, 0xfffffff0
add edx, eax
xor eax, eax
cmp ebx, eax
je 0x403ba3
mov cl, byte [esi + eax + 0x230]
xor byte [edx + eax], cl
inc eax
jmp 0x403b92
mov dword [esi + 0x538], 5
mov byte [esi + 0x240], bl
lea ecx, [esi + 0x38]
push 8
pop edx
call fcn.004099b7
mov ecx, dword [esi + 0x1c]
mov eax, dword [esi + 0x3c]
mov edx, dword [esi + 0x40]
movsd xmm0, qword [ecx]
movsd qword [eax + edx], xmm0
add edx, 8
mov dword [esi + 0x40], edx
mov edx, dword [esi + 0x2c]
call fcn.00401eef
mov edi, dword [esi + 0x30]
mov edx, dword [esi + 0x4c]
jmp 0x40368a
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x48]
movsd xmm0, qword [esi + 0x38]
mov dword [ecx + 8], eax
movsd qword [ecx], xmm0
mov al, byte [section..data]
mov eax, dword [esi + 0x28]
mov edx, dword [esi + 0x44]
mov ecx, dword [eax]
call fcn.00409bc0
mov eax, dword [esi + 0x530]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
and dword [esi + 0x538], 0
push 0x58
pop edx
push 0x42c660
call fcn.00429e95
pop eax
jmp 0x403d3b
and dword [esi + 0x538], 0
add ecx, eax
push 0x58
pop edx
push 0x42c5c0
call fcn.00429e95
pop eax
jmp 0x403d3b
and dword [esi + 0x538], 0
lea ecx, [ecx + eax + 8]
push 0x58
pop edx
push 0x42c5d0
call fcn.00429e95
pop eax
jmp 0x403d3b
mov ecx, dword [esi + 0x10]
mov byte [esi + 7], 1
mov dword [esi + 0x538], 4
mov edx, ecx
push 0x42b3e0
call fcn.00429e95
pop eax
jmp 0x403d3b
push 8
pop ecx
push 0x42b9cc
call fcn.00429ee5
pop eax
jmp 0x403d3b
push 0x42c670
call fcn.00429e95
pop eax
jmp 0x403d3b
mov ecx, edi
push 0x42c670
call fcn.00429e95
pop eax
jmp 0x403d3b
push 0x42c670
call fcn.00429e95
pop eax
jmp 0x403d3b
mov ecx, edi
push 0x42c670
call fcn.00429e95
pop eax
jmp 0x403d3b
push 0x42c670
call fcn.00429e95
pop eax
jmp 0x403d3b
mov byte [esi + 7], 1
mov dword [esi + 0x538], 4
lea eax, [esi + 0x250]
push 0x2b
pop edx
mov ecx, str.called__Result::unwrap____on_an__Err__value
push 0x42b8e4
push 0x42b5c4
push eax
call fcn.0042a07b
add esp, 0xc
jmp 0x403d3b
mov byte [esi + 7], 1
push 0x3b
pop edx
mov ecx, 0x42b836
push 0x42b874
call fcn.00429f3a
pop eax
ud2