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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x298
mov dword [esp + 0x14], ecx
mov ebx, edx
mov eax, dword [0xa70a24]
test eax, eax
je 0x5a3d03
and dword [esp + 0x7c], 0
and dword [esp + 0x78], 0
and dword [esp + 0x88], 0
lea eax, [ebx + 0xa8]
lea edi, [ebx + 0x70]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x10], eax
lea eax, [ebx + 0x74]
mov dword [esp + 0x44], edi
mov dword [esp + 0x50], eax
lea eax, [ebx + 0x78]
mov dword [esp + 0x54], eax
mov dword [esp + 0xc], edx
mov esi, dword [edi]
lea eax, [esi - 3]
cmp eax, 2
jae 0x5a3509
mov eax, dword [ebx + 0xac]
mov ecx, dword [ebx + 0xb8]
mov edx, dword [ebx + 0xbc]
cmp ecx, eax
sbb edx, 0
jae 0x5a3518
cmp eax, ecx
je 0x5a3518
jmp 0x5a3711
mov ecx, edi
call fcn.005a41c8
test al, al
jne 0x5a374d
and dword [ebx + 0xbc], 0
and dword [ebx + 0xb8], 0
and dword [ebx + 0xac], 0
cmp esi, 3
mov dword [ebx + 0x70], 4
jne 0x5a3be0
mov eax, dword [esp + 0x50]
mov edx, dword [ebx + 0x84]
mov ecx, dword [esp + 0x10]
mov word [esp + 0x74], 0x904
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
mov eax, dword [ebx + 0xc0]
lea ebx, [esp + 0x48]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x70], edx
lea ecx, [esp + 0x70]
mov edx, ebx
add eax, 9
movsd qword [esp + 0x30], xmm1
movsd qword [esp + 0x28], xmm0
mov dword [esp + 0x4c], eax
call fcn.004dab7a
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov esi, dword [eax + 4]
mov eax, dword [esp + 0x30]
mov edi, esi
mov dword [esp + 0x60], eax
not edi
cmp edi, ecx
cmovae edi, ecx
cmp eax, edi
jbe 0x5a3607
lea ebx, [esp + 0x90]
lea edx, [esp + 0x28]
mov ecx, ebx
push edi
call fcn.0043d0f1
pop eax
mov edx, dword [esp + 0x94]
lea ecx, [esp + 0x48]
push dword [esp + 0x98]
call fcn.004ce69c
pop eax
push ebx
call fcn.004c8705
pop eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
lea eax, [esp + 0x2c]
movsd xmm0, qword [eax]
mov eax, dword [eax + 8]
movsd qword [esp + 0x90], xmm0
mov dword [esp + 0x98], eax
jmp 0x5a361c
mov edx, dword [esp + 0x2c]
mov ecx, ebx
push eax
call fcn.004ce69c
pop eax
mov dword [esp + 4], 0
mov ebx, dword [esp + 0x48]
xor edx, edx
lea ecx, [esp + 0x64]
mov eax, dword [ebx + 4]
and dword [esp + 0x64], 0
sub eax, esi
bswap eax
mov dword [esp + 0x68], eax
push 0x9c6500
push 5
call fcn.004dc2bc
pop ecx
pop ecx
mov esi, dword [esp + 4]
test edx, edx
je 0x5a365a
dec edx
cmp byte [eax], 0
lea eax, [eax + 1]
je 0x5a3648
jmp 0x5a3ed7
xor ecx, ecx
push 3
pop edx
push 0x9c6560
push dword [ebx + 4]
push dword [ebx]
call fcn.004b2d6a
add esp, 0xc
mov ecx, eax
push 0x9c6570
push 3
lea eax, [esp + 0x71]
push eax
call fcn.0056c11f
add esp, 0xc
mov ebx, dword [esp + 0x58]
test esi, esi
je 0x5a36a5
mov eax, dword [esp + 0x48]
mov edx, dword [eax + 4]
cmp edx, 5
jb 0x5a3ec7
mov eax, dword [eax]
add byte [eax + 4], 0xfc
cmp dword [esp + 0x60], edi
mov eax, dword [esp + 0x98]
movsd xmm0, qword [esp + 0x90]
mov dword [esp + 0x20], eax
movsd qword [esp + 0x18], xmm0
ja 0x5a36d0
lea eax, [esp + 0x28]
push eax
call fcn.004c8705
pop eax
mov edi, dword [esp + 0x44]
test esi, esi
je 0x5a34dd
mov ecx, edi
call fcn.0059bdd7
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x54]
movsd xmm0, qword [esp + 0x18]
mov dword [ebx + 0x70], 3
mov dword [ebx + 0x74], esi
mov dword [ecx + 8], eax
movsd qword [ecx], xmm0
mov ecx, dword [esp + 0x5c]
mov dword [ebx + 0x84], ecx
jmp 0x5a34dd
mov eax, dword [0xa70a24]
test eax, eax
je 0x5a3836
cmp byte [ebx + 0xc4], 0
je 0x5a38a1
mov eax, 0x200
lea ecx, [esp + 0x90]
test eax, eax
je 0x5a3789
and dword [ecx], 0
mov dword [ecx + 4], str.dest_is_out_of_bounds
add ecx, 8
add eax, 0xfffffff8
jmp 0x5a3737
mov eax, dword [0xa70a24]
test eax, eax
je 0x5a3905
cmp byte [ebx + 0xc4], 0
je 0x5a3970
mov eax, 0x200
lea ecx, [esp + 0x90]
test eax, eax
je 0x5a37d8
and dword [ecx], 0
mov dword [ecx + 4], str.dest_is_out_of_bounds
add ecx, 8
add eax, 0xfffffff8
jmp 0x5a3773
mov ecx, dword [esp + 0x10]
lea esi, [esp + 0x90]
mov edx, esi
call fcn.005a416f
mov ecx, esi
mov edx, eax
push 0x9fea64
call fcn.00596236
pop ecx
mov ecx, dword [ebx + 0xcc]
push edx
push eax
push dword [ebp + 8]
push dword [ebx + 0xc8]
lea eax, [esp + 0x38]
push eax
call dword [ecx + 0x1c]
add esp, 0x14
cmp byte [esp + 0x28], 5
jne 0x5a39a0
mov al, 5
jmp 0x5a38fc
mov ecx, dword [esp + 0x10]
lea esi, [esp + 0x90]
mov edx, esi
call fcn.005a416f
mov ecx, esi
mov esi, eax
push 0x40
pop edx
push 0xa03908
push eax
call fcn.005961cd
pop ecx
pop ecx
test edx, edx
je 0x5a39ca
mov ecx, edi
mov dword [esp + 4], eax
call fcn.005a415d
test eax, eax
mov edx, 0
je 0x5a39cc
mov ecx, edi
call fcn.005a4101
mov ecx, dword [esp + 4]
mov dword [ecx], edx
xor edx, edx
mov dword [ecx + 4], eax
inc edx
jmp 0x5a39cc
mov ecx, 0xa6ff58
call fcn.0040e00b
test al, al
je 0x5a371e
mov ecx, dword [0xa6ff58]
movzx edx, al
call fcn.00605cf4
test al, al
je 0x5a371e
mov ecx, dword [0xa6ff58]
mov edx, dword [ecx + 0x20]
lea eax, [ecx + 0x1c]
mov dword [esp + 4], eax
test edx, edx
je 0x5a3b08
mov eax, dword [ecx + 0x1c]
mov edi, dword [ecx + 0x24]
mov ecx, dword [ecx + 0x28]
mov dword [esp + 0x94], edx
mov dword [esp + 0x98], edi
mov dword [esp + 0x9c], ecx
and dword [esp + 0xa0], 0
jmp 0x5a3b0a
mov ecx, dword [esp + 0x10]
call fcn.005a419b
mov ecx, dword [ebx + 0xcc]
push edx
push eax
push dword [ebp + 8]
push dword [ebx + 0xc8]
lea eax, [esp + 0xa0]
push eax
call dword [ecx + 0x10]
add esp, 0x14
cmp byte [esp + 0x90], 5
mov al, 5
je 0x5a38fc
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
cmp al, 4
je 0x5a39b0
mov ecx, eax
shrd ecx, edx, 8
shr edx, 8
mov dword [esp + 0x40], ecx
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xc]
jmp 0x5a3abe
mov ecx, 0xa6ff64
call fcn.0040e00b
test al, al
je 0x5a375a
mov ecx, dword [0xa6ff64]
movzx edx, al
call fcn.00605cf4
test al, al
je 0x5a375a
mov ecx, dword [0xa6ff64]
mov edx, dword [ecx + 0x20]
lea eax, [ecx + 0x1c]
mov dword [esp + 4], eax
test edx, edx
je 0x5a3b74
mov eax, dword [ecx + 0x1c]
mov edi, dword [ecx + 0x24]
mov ecx, dword [ecx + 0x28]
mov dword [esp + 0x94], edx
mov dword [esp + 0x98], edi
mov dword [esp + 0x9c], ecx
and dword [esp + 0xa0], 0
jmp 0x5a3b76
mov eax, dword [ebx + 0xac]
mov ecx, dword [ebx + 0xb8]
mov edx, dword [ebx + 0xbc]
cmp ecx, eax
sbb edx, 0
jae 0x5a3a18
cmp eax, ecx
je 0x5a3a18
mov ecx, dword [esp + 0x10]
call fcn.005a419b
jmp 0x5a3a1f
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
cmp al, 4
jne 0x5a3ab1
mov ecx, dword [esp + 0x10]
call fcn.005a40c6
mov dword [esp + 0x40], 0
mov al, 4
xor edx, edx
jmp 0x5a3abe
xor edx, edx
add edx, esi
lea ecx, [esp + 0x90]
push 0x9fea64
call fcn.00596236
pop ecx
mov ecx, dword [ebx + 0xcc]
push edx
push eax
push dword [ebp + 8]
push dword [ebx + 0xc8]
lea eax, [esp + 0x38]
push eax
call dword [ecx + 0x1c]
add esp, 0x14
cmp byte [esp + 0x28], 5
jne 0x5a3a0a
mov al, 5
jmp 0x5a3af7
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0xc]
jmp 0x5a3a60
mov ecx, edi
call fcn.005a4101
mov ecx, dword [ebx + 0xcc]
push edx
push eax
push dword [ebp + 8]
push dword [ebx + 0xc8]
lea eax, [esp + 0xa0]
push eax
call dword [ecx + 0x10]
add esp, 0x14
cmp byte [esp + 0x90], 5
mov edx, dword [esp + 0xc]
mov al, 5
je 0x5a3afb
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
cmp al, 4
jne 0x5a3a9e
mov dword [esp + 8], ecx
mov ecx, dword [ebx + 0xb8]
mov eax, dword [ebx + 0xac]
mov esi, dword [ebx + 0xbc]
mov edx, ecx
sub edx, eax
sbb esi, 0
jae 0x5a3acb
cmp eax, ecx
je 0x5a3acb
mov eax, dword [esp + 8]
neg edx
mov esi, eax
sub esi, edx
jbe 0x5a3ada
mov ecx, dword [esp + 0x10]
call fcn.005a40c6
jmp 0x5a3acf
mov esi, eax
shrd esi, ecx, 8
shr ecx, 8
mov dword [esp + 0x3c], esi
mov dword [esp + 8], ecx
jmp 0x5a3afb
mov ecx, eax
shrd ecx, edx, 8
shr edx, 8
mov dword [esp + 0x40], ecx
cmp al, 4
je 0x5a34d9
jmp 0x5a3e75
mov esi, dword [esp + 8]
mov ecx, edi
mov edx, esi
call fcn.005a404c
jmp 0x5a3ae5
mov ecx, dword [esp + 0x10]
mov edx, eax
call fcn.005a40c6
mov dword [esp + 0x3c], 0
mov al, 4
mov dword [esp + 8], 0
mov edx, dword [esp + 0xc]
cmp al, 4
je 0x5a34d9
jmp 0x5a3e9c
xor eax, eax
lea edi, [esp + 0x28]
lea esi, [esp + 0x90]
mov dword [esp + 0x90], eax
mov ecx, edi
mov edx, esi
push 0x9fea08
call fcn.0057917a
pop eax
mov eax, dword [esp + 4]
mov ecx, dword [0xa6ff58]
lea edx, [esp + 0x18]
mov dword [esp + 0x90], edi
mov dword [esp + 0x94], 0xa3a4e5
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], 1
mov dword [esp + 0x98], 0x9fea18
mov dword [esp + 0x20], eax
call fcn.00606f01
mov edi, dword [esp + 0x44]
jmp 0x5a371e
xor eax, eax
lea edi, [esp + 0x28]
lea esi, [esp + 0x90]
mov dword [esp + 0x90], eax
mov ecx, edi
mov edx, esi
push 0x9fea28
call fcn.0057917a
pop eax
mov eax, dword [esp + 4]
mov ecx, dword [0xa6ff64]
lea edx, [esp + 0x18]
mov dword [esp + 0x90], edi
mov dword [esp + 0x94], 0x9fea38
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], 1
mov dword [esp + 0x98], 0x9fea18
mov dword [esp + 0x20], eax
call fcn.00606f01
mov edi, dword [esp + 0x44]
jmp 0x5a375a
cmp esi, 4
je 0x5a3cad
mov ecx, dword [esp + 0x50]
movsd xmm2, qword [ebx + 0xa0]
movsd xmm1, qword [ecx + 8]
mov eax, dword [ecx + 0x10]
movsd xmm0, qword [ecx]
movsd qword [esp + 0xa8], xmm2
movsd xmm2, qword [ebx + 0x88]
lea ecx, [ebx + 0x38]
movsd qword [esp + 0x30], xmm1
movsd xmm1, qword [ebx + 0x98]
mov dword [esp + 0x38], eax
movsd qword [esp + 0x28], xmm0
movsd qword [esp + 0x90], xmm2
movsd qword [esp + 0xa0], xmm1
movsd xmm1, qword [ebx + 0x90]
movsd qword [esp + 0x98], xmm1
call fcn.0059bdf1
movsd xmm1, qword [esp + 0x30]
mov dword [ebx + 0x38], esi
movsd xmm0, qword [esp + 0x28]
mov eax, dword [esp + 0x38]
movsd xmm3, qword [esp + 0x90]
movsd xmm2, qword [esp + 0xa0]
movsd qword [ebx + 0x44], xmm1
movsd xmm1, qword [esp + 0x98]
movsd qword [ebx + 0x3c], xmm0
mov dword [ebx + 0x4c], eax
movsd qword [ebx + 0x50], xmm3
movsd qword [ebx + 0x60], xmm2
movsd qword [ebx + 0x58], xmm1
movsd xmm1, qword [esp + 0xa8]
movsd qword [ebx + 0x68], xmm1
mov eax, dword [0xa70a24]
test eax, eax
je 0x5a3d7a
mov eax, dword [ebx + 0xcc]
lea esi, [esp + 0x90]
push dword [ebp + 8]
push dword [ebx + 0xc8]
push esi
call dword [eax + 0x14]
add esp, 0xc
cmp byte [esi], 5
jne 0x5a3ce8
mov eax, dword [esp + 0x14]
mov byte [eax], 5
jmp 0x5a3dee
mov eax, dword [esp + 0x90]
cmp al, 4
jne 0x5a3dde
mov eax, dword [esp + 0x14]
mov byte [eax], 4
jmp 0x5a3dee
mov ecx, 0xa6ff4c
call fcn.0040e00b
test al, al
je 0x5a34a4
mov ecx, dword [0xa6ff4c]
movzx edx, al
call fcn.00605cf4
test al, al
je 0x5a34a4
mov edx, dword [0xa6ff4c]
lea edi, [esp + 0x90]
lea esi, [esp + 0x78]
mov dword [edi], str.dest_is_out_of_bounds
and dword [edi + 4], 0
mov ecx, esi
lea eax, [edx + 0x1c]
mov dword [edi + 8], eax
push edi
call fcn.00605c1b
pop eax
mov eax, dword [esi]
or eax, dword [esi + 4]
je 0x5a34b6
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
push esi
call fcn.00606ebe
pop eax
jmp 0x5a34b6
mov ecx, 0xa6ff70
call fcn.0040e00b
test al, al
je 0x5a3cba
mov ecx, dword [0xa6ff70]
movzx edx, al
call fcn.00605cf4
test al, al
je 0x5a3cba
mov ecx, dword [0xa6ff70]
mov edx, dword [ecx + 0x20]
lea eax, [ecx + 0x1c]
mov dword [esp + 4], eax
test edx, edx
je 0x5a3e08
mov eax, dword [ecx + 0x1c]
mov esi, dword [ecx + 0x24]
mov ecx, dword [ecx + 0x28]
mov dword [esp + 0x94], edx
mov dword [esp + 0x98], esi
mov dword [esp + 0x9c], ecx
and dword [esp + 0xa0], 0
jmp 0x5a3e0a
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x94]
mov dword [edx], eax
mov dword [edx + 4], ecx
lea esi, [esp + 0x78]
mov ecx, esi
call fcn.0058bfa1
mov ecx, esi
call fcn.004cb2d7
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
lea esi, [esp + 0x90]
lea edi, [esp + 0x28]
mov dword [esi], eax
mov ecx, edi
mov edx, esi
push 0x9fea3c
call fcn.0057917a
pop eax
lea edx, [esp + 0x64]
lea ecx, [esp + 0x18]
xor eax, eax
mov dword [esi], str.flushing_buffer
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], 0x9fd8ec
mov dword [edx], ecx
mov ecx, dword [esp + 4]
inc eax
mov dword [edx + 4], eax
mov dword [esi + 4], eax
and dword [esi + 0x10], 0
mov dword [esi + 8], str.dest_is_out_of_bounds
and dword [esi + 0xc], 0
mov dword [edx + 8], ecx
mov ecx, dword [0xa6ff70]
call fcn.00606f01
jmp 0x5a3cba
movzx eax, al
cmp eax, 5
je 0x5a3cdc
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x14]
shld edx, ecx, 8
shl ecx, 8
or ecx, eax
mov dword [esi + 4], edx
mov dword [esi], ecx
jmp 0x5a3dee
movzx eax, al
cmp eax, 5
je 0x5a3cdc
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x14]
shld ecx, edx, 8
shl edx, 8
or edx, eax
mov dword [esi + 4], ecx
mov dword [esi], edx
jmp 0x5a3dee
push 4
pop ecx
push 0x9c6580
call fcn.0063cc20
pop eax
ud2
push 0x3e
pop edx
mov ecx, str.assertion_failed:_payload_len_be_0..5_.iter__.all_b_b__0_
push 0x9c6550
call fcn.0063cd70
jmp 0x5a3ed4