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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x94
mov eax, dword [esp + 0xac]
mov esi, dword [esp + 0xb4]
mov ebp, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 8], eax
push esi
push dword [esp + 0xb4]
call fcn.004af980
add esp, 8
mov ebx, eax
mov edi, eax
test ebp, ebp
mov dword [esp + 4], edx
mov dword [esp + 0xc], ebp
mov dword [esp], eax
je 0x4a66ac
cmp dword [esp + 4], esi
jae 0x4a65df
push 1
push dword [esp + 0x10]
mov eax, dword [esp + 0x10]
call dword [eax + 0x14]
add esp, 8
mov eax, dword [esp + 4]
mov edx, edi
add eax, ebx
jmp 0x4a660e
shl esi, 6
add edx, 2
or esi, ebp
mov ecx, esi
cmp ecx, 0xd
ja 0x4a660e
nop dword [eax + eax]
mov esi, 0x2600
bt esi, ecx
jb 0x4a669c
cmp edx, eax
je 0x4a66ac
movzx ecx, byte [edx]
test cl, cl
js 0x4a6630
inc edx
cmp ecx, 0xd
jbe 0x4a6600
jmp 0x4a660e
movzx ebp, byte [edx + 1]
mov esi, ecx
and esi, 0x1f
and ebp, 0x3f
cmp cl, 0xdf
jbe 0x4a65e9
mov edi, ebx
movzx ebx, byte [edx + 2]
shl ebp, 6
and ebx, 0x3f
or ebx, ebp
cmp cl, 0xf0
jb 0x4a667f
movzx ecx, byte [edx + 3]
shl ebx, 6
and esi, 7
shl esi, 0x12
and ecx, 0x3f
or ecx, ebx
mov ebx, edi
mov edi, dword [esp]
or ecx, esi
cmp ecx, 0x110000
je 0x4a66ac
add edx, 4
cmp ecx, 0xd
jbe 0x4a6600
jmp 0x4a660e
shl esi, 0xc
add edx, 3
or ebx, esi
mov ecx, ebx
mov ebx, edi
mov edi, dword [esp]
cmp ecx, 0xd
jbe 0x4a6600
jmp 0x4a660e
push 9
push dword [esp + 0x10]
mov eax, dword [esp + 0x10]
call dword [eax + 0x14]
add esp, 8
add ebx, dword [esp + 4]
push edi
push ebx
mov esi, dword [esp + 0xb4]
push esi
call fcn.004a70b0
add esp, 0xc
test edx, edx
je 0x4a6829
movsd xmm1, qword [esi + 0x10]
mov edi, eax
movsd xmm0, qword [esi + 0x18]
mov eax, dword [esi + 0x20]
movsd xmm2, qword [esi]
mov dword [esp], edx
movsd qword [esp + 0x48], xmm1
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x50], xmm0
mov dword [esp + 0x58], eax
movsd qword [esp + 0x38], xmm2
movsd qword [esp + 0x40], xmm1
mov esi, dword [esp + 0x50]
mov ebp, dword [esp + 0x54]
push ebp
push esi
call fcn.004a6270
add esp, 8
cmp ebp, dword [esp + 0x4c]
mov ebx, eax
mov eax, ebp
mov dword [esp + 8], ebp
jne 0x4a673a
lea eax, [esp + 0x4c]
push dword [esp + 8]
push eax
call fcn.0040bd70
add esp, 8
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x54]
mov byte [esi + eax], 0x3a
movzx ebp, bl
mov dword [esp + 4], edi
mov eax, dword [esp + 0x54]
inc eax
test bl, bl
mov dword [esp + 0x54], eax
je 0x4a696f
cmp ebp, 2
mov dword [esp + 0xc], ebp
jne 0x4a69ea
movsd xmm1, qword [esp + 0x48]
mov eax, dword [esp + 0x58]
movsd xmm0, qword [esp + 0x50]
movsd xmm2, qword [esp + 0x38]
mov ebx, dword [esp]
lea esi, [esp + 0x10]
mov dword [esp + 0x10], edi
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0x40]
mov dword [esp + 0x80], eax
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x60], xmm2
mov dword [esp + 0x14], ebx
movsd qword [esp + 0x68], xmm1
push esi
push 2
push 0x531224
call fcn.004a63c0
add esp, 0xc
test al, al
je 0x4a6b51
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a6b51
movsd xmm1, qword [esp + 0x48]
mov ecx, dword [esp + 0x58]
movq xmm0, qword [esp + 0x50]
mov esi, dword [esp + 0x10]
movsd xmm2, qword [esp + 0x38]
lea edx, [esp + 0x10]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [esp + 0x40]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0xa8]
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
movsd qword [esp + 0x18], xmm1
push dword [esp + 8]
push dword [esp + 0x10]
push eax
push esi
mov esi, ecx
jmp 0x4a6f7b
mov edi, dword [esi + 0x10]
test edi, edi
je 0x4a6b4a
mov ecx, dword [esp]
mov eax, 0x2600
mov dword [esp + 4], ebx
jmp 0x4a6874
inc ecx
cmp edx, 0xd
ja 0x4a6900
mov esi, 0x110000
bt eax, edx
jae 0x4a6900
cmp esi, 0x110000
jne 0x4a690e
cmp ecx, ebx
je 0x4a6b1a
movzx edx, byte [ecx]
test dl, dl
jns 0x4a6850
movzx ebp, byte [ecx + 1]
mov esi, edx
and esi, 0x1f
and ebp, 0x3f
cmp dl, 0xdf
jbe 0x4a68d3
movzx ebx, byte [ecx + 2]
shl ebp, 6
and ebx, 0x3f
or ebx, ebp
cmp dl, 0xf0
jb 0x4a68e8
movzx edx, byte [ecx + 3]
shl ebx, 6
and esi, 7
shl esi, 0x12
and edx, 0x3f
or edx, ebx
mov ebx, dword [esp + 4]
or edx, esi
cmp edx, 0x110000
je 0x4a6b1a
add ecx, 4
cmp edx, 0xd
jbe 0x4a685a
jmp 0x4a6900
shl esi, 6
add ecx, 2
or esi, ebp
mov edx, esi
cmp edx, 0xd
jbe 0x4a685a
jmp 0x4a6900
shl esi, 0xc
add ecx, 3
or ebx, esi
mov edx, ebx
mov ebx, dword [esp + 4]
cmp edx, 0xd
jbe 0x4a685a
nop
mov esi, edx
cmp esi, 0x110000
je 0x4a6874
cmp esi, 0x23
jne 0x4a6b1a
mov ecx, dword [esp + 0xac]
mov esi, dword [esp + 0xa8]
lea edx, [esp + 0x10]
movsd xmm1, qword [ecx + 0x10]
mov eax, dword [ecx + 0x20]
movq xmm0, qword [ecx + 0x18]
movsd xmm2, qword [ecx]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [ecx + 8]
mov dword [esp + 0x30], eax
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
mov ecx, esi
movsd qword [esp + 0x18], xmm1
push dword [esp]
push ebx
push edi
call fcn.004ac3e0
add esp, 0xc
jmp 0x4a6f83
mov esi, dword [esp + 0x40]
test esi, esi
je 0x4a69a7
mov eax, dword [esp]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
lea eax, [esp + 0x10]
push eax
push 2
push 0x531224
call fcn.004a63c0
add esp, 0xc
test al, al
jne 0x4a69a7
push 4
push esi
call dword [ebx + 0x14]
add esp, 8
mov ecx, dword [esp + 0x48]
xor eax, eax
test ecx, ecx
je 0x4a6c7c
mov esi, dword [ecx + 0x10]
mov ebx, dword [esp]
test esi, esi
je 0x4a6d98
mov edi, dword [ecx + 0x2c]
mov edx, dword [ecx + 0x28]
cmp esi, edi
jae 0x4a6d7e
cmp byte [edx + esi], 0xbf
jg 0x4a6d84
push 0x5313fc
push esi
push 0
push edi
push edx
jmp 0x4a6e91
mov ebx, dword [esp]
mov edx, 0x2600
mov dword [esp + 0x34], 0
mov dword [esp + 0x5c], ebx
jmp 0x4a6a24
inc ebx
cmp ecx, 0xd
ja 0x4a6ab0
mov esi, 0x110000
bt edx, ecx
jae 0x4a6ab0
cmp esi, 0x110000
jne 0x4a6abe
cmp ebx, edi
je 0x4a6ad1
movzx ecx, byte [ebx]
test cl, cl
jns 0x4a6a00
movzx edi, byte [ebx + 1]
mov esi, ecx
and esi, 0x1f
and edi, 0x3f
cmp cl, 0xdf
jbe 0x4a6a7f
movzx ebp, byte [ebx + 2]
shl edi, 6
and ebp, 0x3f
or ebp, edi
cmp cl, 0xf0
jb 0x4a6a98
movzx ecx, byte [ebx + 3]
and esi, 7
shl ebp, 6
mov edi, dword [esp + 4]
shl esi, 0x12
and ecx, 0x3f
or ecx, ebp
or ecx, esi
cmp ecx, 0x110000
je 0x4a6ad1
add ebx, 4
cmp ecx, 0xd
jbe 0x4a6a0a
jmp 0x4a6ab0
shl esi, 6
add ebx, 2
or esi, edi
mov edi, dword [esp + 4]
mov ecx, esi
cmp ecx, 0xd
jbe 0x4a6a0a
jmp 0x4a6ab0
mov edi, dword [esp + 4]
shl esi, 0xc
add ebx, 3
or ebp, esi
mov ecx, ebp
cmp ecx, 0xd
jbe 0x4a6a0a
nop
mov esi, ecx
cmp esi, 0x110000
je 0x4a6a24
cmp esi, 0x5c
je 0x4a6ac8
cmp esi, 0x2f
jne 0x4a6ad1
inc dword [esp + 0x34]
jmp 0x4a69fa
cmp dword [esp + 0x34], 1
ja 0x4a6eb7
mov ebx, dword [esp + 0x48]
test ebx, ebx
je 0x4a6eb7
mov edx, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x28]
test edx, edx
je 0x4a6e71
mov esi, dword [ebx + 0x2c]
cmp edx, esi
jae 0x4a6e6b
cmp byte [ecx + edx], 0xbf
jg 0x4a6e71
push 0x5313fc
push edx
push 0
push esi
push ecx
jmp 0x4a6e91
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 0x28]
mov ecx, dword [edi + 0x2c]
mov esi, edx
inc esi
je 0x4a6df9
cmp ecx, esi
jbe 0x4a6df3
cmp byte [eax + esi], 0xbf
jg 0x4a6df9
push 0x5313ec
push ecx
push esi
jmp 0x4a6e32
mov bl, 6
jmp 0x4a6e36
mov eax, dword [esp + 0x7c]
mov ecx, 0x2600
mov dword [esp + 0x34], eax
jmp 0x4a6b83
inc ebx
cmp edx, 0xd
ja 0x4a6c20
mov eax, 0x110000
bt ecx, edx
jae 0x4a6c20
cmp eax, 0x110000
jne 0x4a6c2d
cmp ebx, edi
je 0x4a6c84
movzx edx, byte [ebx]
test dl, dl
jns 0x4a6b60
movzx edi, byte [ebx + 1]
mov eax, edx
and eax, 0x1f
and edi, 0x3f
cmp dl, 0xdf
jbe 0x4a6be2
movzx ebp, byte [ebx + 2]
shl edi, 6
and ebp, 0x3f
or ebp, edi
cmp dl, 0xf0
jb 0x4a6bfb
movzx edx, byte [ebx + 3]
and eax, 7
shl ebp, 6
mov edi, dword [esp + 4]
shl eax, 0x12
and edx, 0x3f
or edx, ebp
or edx, eax
cmp edx, 0x110000
je 0x4a6c84
add ebx, 4
cmp edx, 0xd
jbe 0x4a6b6a
jmp 0x4a6c20
shl eax, 6
add ebx, 2
or eax, edi
mov edi, dword [esp + 4]
mov edx, eax
cmp edx, 0xd
jbe 0x4a6b6a
jmp 0x4a6c20
mov edi, dword [esp + 4]
shl eax, 0xc
add ebx, 3
or ebp, eax
mov edx, ebp
cmp edx, 0xd
jbe 0x4a6b6a
nop word cs:[eax + eax]
nop dword [eax]
mov eax, edx
cmp eax, 0x110000
je 0x4a6b83
cmp eax, 0x2f
jne 0x4a6c84
mov edx, dword [esp + 0x34]
cmp edx, dword [esp + 0x74]
mov eax, edx
jne 0x4a6c54
push edx
lea eax, [esp + 0x78]
push eax
call fcn.0040bd70
mov edx, dword [esp + 0x3c]
add esp, 8
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
mov byte [ecx + eax], 0x2f
inc dword [esp + 0x7c]
lea eax, [esp + 0x60]
mov byte [esp + 0x10], 0
push ebx
push edi
push edx
push esi
push dword [esp + 0x1c]
push eax
call fcn.004aad00
add esp, 0x18
jmp 0x4a6c95
mov ebx, dword [esp]
jmp 0x4a6d98
lea eax, [esp + 0x60]
push dword [esp]
push edi
push eax
call fcn.004abb00
add esp, 0xc
movsd xmm1, qword [esp + 0x70]
mov ecx, dword [esp + 0x80]
movq xmm0, qword [esp + 0x78]
movsd xmm2, qword [esp + 0x60]
mov esi, edx
lea edx, [esp + 0x10]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [esp + 0x68]
mov dword [esp + 0x30], ecx
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
lea ecx, [esp + 0x84]
movsd qword [esp + 0x18], xmm1
push esi
push eax
mov ebx, dword [esp + 0x10]
push ebx
push dword [esp + 0x18]
call fcn.004abd30
add esp, 0x10
mov esi, dword [esp + 0x84]
cmp esi, 2
jne 0x4a6d27
movzx eax, byte [esp + 0x88]
mov edi, dword [esp + 0xa8]
mov byte [edi + 4], al
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4a6d75
push 1
push eax
push dword [esp + 0x30]
call fcn.0040dc90
add esp, 0xc
jmp 0x4a6d75
mov eax, dword [esp + 0x88]
movsd xmm0, qword [esp + 0x8c]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0xa8]
movsd xmm1, qword [esp + 0x24]
mov dword [edi + 0x2c], ecx
movsd qword [edi + 0x24], xmm1
mov byte [edi + 0x34], 0
mov dword [edi + 4], eax
movsd qword [edi + 8], xmm0
movd xmm0, dword [esp + 0x34]
mov dword [edi + 0x10], ebx
pshufd xmm0, xmm0, 0
movdqu xmmword [edi + 0x14], xmm0
mov word [edi + 0x30], 0
mov dword [edi], esi
mov esi, edi
jmp 0x4a6f83
jne 0x4a69db
mov edi, dword [esp + 4]
cmp esi, 4
jne 0x4a6d98
xor eax, eax
cmp dword [edx], 0x656c6966
cmove eax, ecx
mov dword [esp + 0x54], 0
mov esi, dword [esp + 0xa8]
lea edx, [esp + 0x10]
movsd xmm1, qword [esp + 0x48]
mov ecx, dword [esp + 0x58]
movq xmm0, qword [esp + 0x50]
movsd xmm2, qword [esp + 0x38]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [esp + 0x40]
mov dword [esp + 0x30], ecx
mov ecx, esi
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
movsd qword [esp + 0x18], xmm1
push eax
push ebp
push ebx
push edi
call fcn.004a7410
jmp 0x4a6f80
jne 0x4a6b3e
mov bl, 7
cmp ecx, esi
je 0x4a6e36
cmp byte [eax + esi], 0x2f
jne 0x4a6e36
mov esi, dword [esp + 0xa8]
mov ebx, dword [esp + 4]
test edx, edx
je 0x4a6ff4
cmp edx, ecx
jae 0x4a6fee
cmp byte [eax + edx], 0xbf
jg 0x4a6ff4
push 0x5313fc
push edx
push 0
push ecx
push eax
jmp 0x4a6e91
mov ecx, dword [esp + 0xac]
mov esi, dword [esp + 0xa8]
mov eax, dword [ecx + 0x14]
mov byte [esi + 4], bl
mov dword [esi], 2
test eax, eax
je 0x4a6f83
push 1
push eax
push dword [ecx + 0x18]
call fcn.0040dc90
add esp, 0xc
jmp 0x4a6f83
jne 0x4a6b0b
mov ebp, dword [esp + 8]
mov esi, dword [esp + 0x50]
test ebp, ebp
je 0x4a6e9d
cmp ebp, eax
jae 0x4a6e9b
cmp byte [esi + ebp], 0xbf
jg 0x4a6e9d
push 0x531214
push ebp
push 0
push eax
push esi
call fcn.005062e0
add esp, 0x14
ud2
jne 0x4a6e87
cmp edx, ebp
jne 0x4a6eb7
push dword [esp + 8]
push esi
push ecx
call fcn.004f60f4
add esp, 0xc
test eax, eax
je 0x4a6f90
mov esi, dword [esp + 0x40]
test esi, esi
je 0x4a6f29
mov eax, dword [esp]
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x10], edi
lea ecx, [esp + 0x60]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x10]
mov byte [esp + 0x18], 0
push eax
push ecx
call fcn.004af590
add esp, 8
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x68], 2
jne 0x4a6f06
movzx ecx, word [eax]
cmp ecx, 0x2f2f
sete bl
mov ecx, dword [esp + 0x60]
test ecx, ecx
jne 0x4a6f10
jmp 0x4a6f1c
xor ebx, ebx
mov ecx, dword [esp + 0x60]
test ecx, ecx
je 0x4a6f1c
push 1
push ecx
push eax
call fcn.0040dc90
add esp, 0xc
test bl, bl
jne 0x4a6f29
push 3
push esi
call dword [ebp + 0x14]
add esp, 8
movsd xmm1, qword [esp + 0x48]
mov esi, dword [esp + 0xa8]
mov eax, dword [esp + 0x58]
movq xmm0, qword [esp + 0x50]
movsd xmm2, qword [esp + 0x38]
lea edx, [esp + 0x10]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [esp + 0x40]
mov dword [esp + 0x30], eax
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
mov ecx, esi
movsd qword [esp + 0x18], xmm1
push dword [esp + 8]
push dword [esp + 0x10]
push dword [esp + 0x64]
push edi
call fcn.004a9180
add esp, 0x10
mov eax, esi
add esp, 0x94
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x54], 0
mov esi, dword [esp + 0xa8]
lea edx, [esp + 0x10]
movsd xmm1, qword [esp + 0x48]
mov eax, dword [esp + 0x58]
movq xmm0, qword [esp + 0x50]
movsd xmm2, qword [esp + 0x38]
mov ecx, esi
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [esp + 0x40]
mov dword [esp + 0x30], eax
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
movsd qword [esp + 0x18], xmm1
push ebx
push dword [esp + 0x10]
push dword [esp + 8]
push edi
call fcn.004a8430
jmp 0x4a6f80
jne 0x4a6e2a
push edx
push eax
call fcn.004a6270
add esp, 8
test al, al
je 0x4a7055
mov edx, dword [esp + 0xac]
movzx eax, al
movsd xmm1, qword [edx + 0x10]
mov ecx, dword [edx + 0x20]
movq xmm0, qword [edx + 0x18]
movsd xmm2, qword [edx]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [edx + 8]
mov dword [esp + 0x30], ecx
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
lea edx, [esp + 0x10]
mov ecx, esi
movsd qword [esp + 0x18], xmm1
push edi
push eax
push dword [esp + 8]
push ebx
call fcn.004a8430
jmp 0x4a6f80
mov ecx, dword [esp + 0xac]
lea edx, [esp + 0x10]
movsd xmm1, qword [ecx + 0x10]
mov eax, dword [ecx + 0x20]
movq xmm0, qword [ecx + 0x18]
movsd xmm2, qword [ecx]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [ecx + 8]
mov ecx, esi
mov dword [esp + 0x30], eax
movq qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm2
movsd qword [esp + 0x18], xmm1
push edi
push 0
push dword [esp + 8]
push ebx
jmp 0x4a6de9