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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x150
mov eax, dword [ebp + 0x10]
mov dword [esp + 8], ecx
mov ecx, dword [ebp + 0x18]
mov esi, dword [edx + 0x10]
mov eax, dword [eax + 0xc8]
mov dword [esp + 0x8c], eax
shr eax, 0x10
cmp ax, 5
mov dword [esp + 0xf4], eax
lea eax, [ecx + 0x60]
lea ecx, [ecx + 0x58]
cmovae ecx, eax
setae byte [esp + 0x47]
cmp esi, dword [ebp + 8]
call 0x49a08d
pop eax
mov dword [esp + 0x11c], ecx
mov dword [esp + 0xb4], eax
jle 0x49af80
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0xb0], esi
mov esi, edx
mov eax, ebx
and eax, 0xff00
mov dword [esp + 0x10c], eax
mov eax, dword [edx + 8]
mov ecx, dword [eax + 0x24]
add ecx, dword [edx]
xor edx, edx
cmp byte [eax + 0x21], 8
sete dl
lea edi, [ecx + edx*8]
mov ecx, dword [eax + 0x1c]
add ecx, dword [eax + 0x18]
mov eax, dword [ebp + 0x10]
sub edi, ecx
movzx ecx, byte [eax + 0xc9]
mov edx, dword [eax + 0xec]
add edi, 4
mov byte [esp + 0x23], cl
movzx ecx, word [eax + 0xca]
mov dword [esp + 0xd0], edx
mov word [esp + 0xe2], cx
mov ecx, dword [eax + 0xf4]
mov dword [esp + 0xf8], ecx
mov ecx, dword [eax + 0x100]
mov dword [esp + 0xc0], ecx
movzx ecx, bh
mov dword [esp + 0x110], ecx
mov ecx, dword [eax + 0xf8]
mov eax, dword [eax + 0xe8]
mov dword [esp + 0x114], eax
mov eax, dword [ebp + 0x24]
mov dword [esp + 0xac], ecx
movzx ecx, bl
mov ebx, esi
mov esi, dword [esp + 0xb0]
mov dword [esp + 0xf0], ecx
mov dword [esp + 0xc], ebx
lea eax, [eax + 1]
mov dword [esp + 0x118], eax
jmp 0x49a21b
mov eax, dword [ebx]
mov edi, dword [esp + 0x2c]
lea ecx, [edx + edx*2]
inc edx
mov dword [eax + ecx*8 + 4], edi
mov edi, dword [esp + 0x30]
mov dword [eax + ecx*8], edi
mov edi, dword [esp + 0x84]
mov dword [eax + ecx*8 + 0xc], edi
mov edi, dword [esp + 0x88]
mov dword [eax + ecx*8 + 8], edi
mov edi, dword [ebp + 0x24]
mov dword [eax + ecx*8 + 0x10], edi
mov dword [eax + ecx*8 + 0x14], esi
mov dword [ebx + 8], edx
mov ebx, dword [esp + 0xc]
lea ecx, [esp + 0x48]
mov edx, ebx
push dword [esp + 0x118]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [esp + 0x114]
push dword [esp + 0xcc]
call fcn.0049a040
add esp, 0x20
mov edi, dword [esp + 8]
movzx eax, byte [esp + 0x48]
cmp al, 0x4b
jne 0x49b07b
mov eax, dword [ebx + 8]
xor edx, edx
mov esi, dword [ebx + 0x10]
cmp byte [eax + 0x21], 8
mov ecx, dword [eax + 0x24]
sete dl
add ecx, dword [ebx]
lea edi, [ecx + edx*8]
mov edx, dword [eax + 0x1c]
add edx, dword [eax + 0x18]
sub edi, edx
add edi, 4
cmp esi, dword [ebp + 8]
jle 0x49af80
lea ecx, [esp + 0x58]
mov edx, ebx
call fcn.0049bb60
movzx eax, byte [esp + 0x58]
cmp al, 0x4b
jne 0x49afdb
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x49a1f0
movzx eax, word [ecx + 0x60]
mov dword [esp + 0xb0], esi
cmp eax, 0x1d
je 0x49a300
cmp eax, 0x2e
jne 0x49a390
call fcn.00457f30
mov esi, dword [esp + 0xc]
mov ebx, edx
lea ecx, [esp + 0x58]
mov edi, dword [esi + 8]
mov edx, esi
push ebx
push eax
push dword [edi + 0x20]
call fcn.00495760
add esp, 0xc
movzx eax, byte [esp + 0x58]
cmp al, 0x4b
jne 0x49af8c
mov edi, dword [esp + 0xb0]
mov ebx, esi
cmp dword [esi + 0x10], edi
jg 0x49a2a9
jmp 0x49a1f0
cmp dword [ebx + 0x10], edi
jle 0x49a1f0
lea ecx, [esp + 0x58]
mov edx, ebx
call fcn.0049bb60
movzx eax, byte [esp + 0x58]
cmp al, 0x4b
jne 0x49af8c
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x49a2a0
call fcn.00457f30
mov edi, dword [ebx + 8]
mov esi, edx
lea ecx, [esp + 0x58]
mov edx, ebx
push esi
push eax
push dword [edi + 0x20]
call fcn.00495760
add esp, 0xc
movzx eax, byte [esp + 0x58]
cmp al, 0x4b
jne 0x49af8c
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 0xb0]
jmp 0x49a2a0
call fcn.00457f30
movzx ecx, byte [ebp + 0xc]
mov ebx, eax
test edx, edx
mov dword [esp + 0xfc], ecx
je 0x49aaa2
shl edx, 4
xorps xmm0, xmm0
mov dword [esp + 0x38], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xcc], 0
movaps xmmword [esp + 0x130], xmm0
jmp 0x49a3f3
call fcn.00457f30
mov esi, edx
mov edx, dword [esp + 0xc]
lea ecx, [esp + 0x58]
mov edi, dword [edx + 8]
push esi
push eax
push dword [edi + 0x20]
call fcn.00495760
add esp, 0xc
movzx eax, byte [esp + 0x58]
cmp al, 0x4b
jne 0x49b00c
mov ebx, dword [esp + 0xc]
jmp 0x49a1f0
mov edx, dword [esp + 0x120]
add ebx, 0x10
add edx, 0xfffffff0
je 0x49ab0c
mov dword [esp + 0x120], edx
mov edx, dword [esp + 0xc]
movsd xmm0, qword [ebx]
movq xmm1, qword [ebx + 8]
lea esi, [esp + 0x90]
lea ecx, [esp + 0x58]
mov eax, dword [edx + 8]
movq qword [esp + 0x18], xmm1
movsd qword [esp + 0x10], xmm0
mov eax, dword [eax + 0x20]
movq qword [esp + 0x98], xmm1
movsd qword [esp + 0x90], xmm0
push esi
push eax
call fcn.00497da0
add esp, 8
mov eax, dword [esp + 0x58]
mov ecx, eax
xor ecx, 0x2e
or ecx, dword [esp + 0x5c]
je 0x49acbb
movzx ecx, word [esp + 0x68]
lea edx, [ecx - 3]
cmp edx, 0x56
ja 0x49a4f0
mov ecx, dword [edx*4 + 0x49b09c]
add ecx, dword [esp + 0xb4]
jmp ecx
cmp ecx, 0x6e
je 0x49a501
cmp ecx, 0x2007
jne 0x49a3e0
lea esi, [esp + 0x90]
lea edx, [esp + 0x58]
mov ecx, esi
call fcn.00499730
movzx eax, byte [esp + 0x23]
mov edx, dword [ebp + 0x18]
lea ecx, [esp + 0x10]
push esi
push dword [esp + 0xfc]
push eax
call fcn.00494f40
add esp, 0xc
cmp byte [esp + 0x10], 0x4b
jne 0x49a3e0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xdc], eax
mov dword [esp + 0x38], ecx
jmp 0x49a3e0
xorps xmm0, xmm0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x38], 0
movaps xmmword [esp + 0x130], xmm0
mov ecx, dword [ebp + 0x1c]
mov esi, dword [ecx + 8]
cmp esi, dword [ecx + 4]
mov eax, esi
jne 0x49ab26
mov edx, esi
call fcn.00499640
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 8]
mov ecx, dword [ecx]
movdqa xmm0, xmmword [esp + 0x130]
mov ebx, dword [esp + 0x38]
lea edx, [eax + eax*4]
inc eax
cmp dword [esp + 0xcc], 0
movdqu xmmword [ecx + edx*8], xmm0
mov dword [ecx + edx*8 + 0x10], ebx
mov ebx, dword [esp + 0xdc]
mov dword [ecx + edx*8 + 0x14], ebx
mov dword [ecx + edx*8 + 0x18], edi
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
mov dword [ecx + edx*8 + 0x1c], edi
mov dword [ecx + edx*8 + 0x20], ebx
mov edx, dword [ebp + 0x1c]
mov dword [edx + 8], eax
je 0x49ace1
mov eax, dword [esp + 0x11c]
mov edx, dword [esp + 0xc8]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, edx
jb 0x49b02a
mov edi, dword [ebp + 0x18]
mov ebx, dword [esp + 0x114]
mov dword [esp + 0xc8], edx
add ecx, dword [esp + 0xc8]
mov edx, dword [edi + 8]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0xd0]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0xac]
mov dword [esp + 0x64], edi
mov ebx, dword [ebp + 0x20]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x8c]
mov word [esp + 0x6c], dx
mov edx, dword [esp + 0xf4]
mov word [esp + 0x6e], dx
mov dword [esp + 0x70], ecx
movzx ecx, byte [esp + 0x47]
mov dword [esp + 0x74], eax
mov byte [esp + 0x78], cl
mov byte [esp + 0x7b], 0
mov word [esp + 0x79], 0
jmp 0x49ac29
mov eax, dword [ebx]
mov edi, dword [ebp + 0x24]
lea ecx, [edx + edx*2]
inc edx
movdqu xmmword [eax + ecx*8], xmm1
mov dword [eax + ecx*8 + 0x10], edi
mov dword [eax + ecx*8 + 0x14], esi
mov dword [ebx + 8], edx
lea ecx, [esp + 0x90]
lea edx, [esp + 0x58]
call fcn.00495fb0
mov eax, dword [esp + 0x90]
movdqu xmm1, xmmword [esp + 0x98]
mov ecx, eax
and cl, 3
cmp cl, 1
jne 0x49aca1
pshufd xmm2, xmm1, 0xee
pshufd xmm0, xmm1, 0x55
pshufd xmm3, xmm1, 0xff
movd ecx, xmm1
movd edi, xmm2
movd eax, xmm0
movd edx, xmm3
cmp ecx, edi
sbb eax, edx
jae 0x49ac29
mov edx, dword [ebx + 8]
cmp edx, dword [ebx + 4]
jne 0x49ac10
mov ecx, ebx
movdqa xmmword [esp + 0x120], xmm1
call fcn.00494640
movdqa xmm1, xmmword [esp + 0x120]
mov edx, dword [ebx + 8]
jmp 0x49ac10
cmp eax, 2
jne 0x49a1a9
movd eax, xmm1
cmp al, 0x4b
je 0x49a1a9
jmp 0x49b034
lea eax, [esp + 0x60]
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
movq qword [esp + 0x50], xmm1
movq qword [esp + 0x48], xmm0
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xc]
jmp 0x49a1e3
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0xc4]
or dword [esp + 0x3c], eax
je 0x49ad39
mov eax, ecx
or eax, edx
je 0x49ad39
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x30], eax
sbb ecx, dword [esp + 0x84]
jae 0x49a1a9
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebx + 8]
cmp edx, dword [ebx + 4]
jne 0x49a170
mov ecx, ebx
call fcn.00494640
mov edx, dword [ebx + 8]
jmp 0x49a170
mov eax, dword [esp + 0xd4]
or dword [esp + 0xd8], eax
je 0x49a1a9
or ecx, edx
je 0x49a1a9
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov edx, eax
mov ebx, ecx
add edx, dword [esp + 0x104]
adc ebx, dword [esp + 0x100]
cmp eax, edx
mov eax, ecx
sbb eax, ebx
jae 0x49a1a9
mov edi, dword [ebp + 0x20]
mov dword [esp + 0x120], edx
mov edx, dword [edi + 8]
cmp edx, dword [edi + 4]
jne 0x49ad97
mov ecx, edi
call fcn.00494640
mov edx, dword [edi + 8]
mov eax, dword [edi]
mov edi, dword [esp + 0x2c]
lea ecx, [edx + edx*2]
inc edx
mov dword [eax + ecx*8 + 4], edi
mov edi, dword [esp + 0x30]
mov dword [eax + ecx*8], edi
mov dword [eax + ecx*8 + 0xc], ebx
mov edi, dword [esp + 0x120]
mov ebx, dword [ebp + 0x24]
mov dword [eax + ecx*8 + 8], edi
mov dword [eax + ecx*8 + 0x10], ebx
mov dword [eax + ecx*8 + 0x14], esi
mov ecx, dword [ebp + 0x20]
mov dword [ecx + 8], edx
jmp 0x49a1a9
mov eax, dword [esp + 8]
mov byte [eax], 0x4b
jmp 0x49b094
movzx ecx, byte [esp + 0x5b]
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov ebx, dword [esp + 8]
mov byte [esp + 0x92], cl
movzx ecx, word [esp + 0x59]
mov ah, byte [esp + 0x92]
mov word [esp + 0x90], cx
mov ecx, dword [esp + 0x5c]
movzx edi, word [esp + 0x90]
mov byte [ebx + 3], ah
mov word [ebx + 1], di
mov byte [ebx], al
mov dword [ebx + 4], ecx
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], esi
jmp 0x49b094
movzx ecx, byte [esp + 0x5b]
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x64]
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov byte [edi + 3], cl
movzx ecx, word [esp + 0x59]
mov word [edi + 1], cx
mov byte [edi], al
mov dword [edi + 4], edx
mov dword [edi + 0xc], ebx
mov dword [edi + 8], esi
jmp 0x49b094
movsd xmm0, qword [esp + 0x59]
movsd xmm1, qword [esp + 0x60]
mov ecx, dword [esp + 8]
movsd qword [ecx + 8], xmm1
movsd qword [ecx + 1], xmm0
mov byte [ecx], al
jmp 0x49b094
xor edx, edx
mov al, 0x13
xor ebx, ebx
xor esi, esi
jmp 0x49b05b
mov edx, eax
pshufd xmm0, xmm1, 0x55
pshufd xmm2, xmm1, 0xff
pshufd xmm1, xmm1, 0xee
mov bl, ah
shr edx, 0x10
movd esi, xmm2
movd ecx, xmm1
movd dword [esp + 0xd0], xmm0
mov edi, dword [esp + 0xd0]
mov byte [esp + 0x49], bl
mov word [esp + 0x4a], dx
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 8]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], esi
lea ecx, [esp + 0x49]
movsd xmm1, qword [ecx + 7]
movsd xmm0, qword [ecx]
movsd qword [edi + 8], xmm1
movsd qword [edi + 1], xmm0
mov byte [edi], al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret