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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x178
mov dword [esp + 0x20], ecx
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov edi, edx
mov byte [esp + 0x10], 1
mov byte [esp + 0x18], 1
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
push 2
pop esi
mov eax, edi
mov cl, byte [esp + 0x10]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x14], eax
and cl, byte [esp + 0x18]
xor cl, 1
mov byte [esp + 0x10], cl
cmp edi, 0x14
mov dword [esp + 4], ebx
jbe 0x4233d9
cmp dword [esp + 0x3c], 0
je 0x4233e8
test byte [esp + 0x18], 1
mov dword [esp + 0x34], edi
jne 0x422b63
lea eax, [edi - 1]
mov esi, edi
bsr ecx, eax
xor ecx, 0x1f
xor eax, eax
dec eax
shr eax, cl
mov dword [esp + 0xc], eax
mov eax, edi
shr eax, 2
lea edi, [eax + eax - 1]
push 3
pop ebx
sub ebx, 1
jb 0x422b57
mov eax, esi
mov edx, dword [esp + 0x34]
mov dword [esp], edi
mov edi, 0
shl eax, 0xd
xor eax, esi
mov ecx, eax
shr ecx, 0x11
xor ecx, eax
mov esi, ecx
shl esi, 5
xor esi, ecx
mov ecx, edx
mov eax, esi
and eax, dword [esp + 0xc]
cmp eax, edx
cmovb ecx, edi
mov edi, dword [esp]
sub eax, ecx
mov ecx, dword [esp + 4]
push eax
push edi
call fcn.0042342f
pop eax
pop ecx
inc edi
jmp 0x422b0f
dec dword [esp + 0x3c]
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 4]
mov eax, edi
and dword [esp + 0x60], 0
lea edx, [esp + 0x60]
shr eax, 2
cmp edi, 0x31
lea ecx, [eax + eax]
mov dword [esp + 0x58], eax
lea eax, [eax + eax*2]
mov dword [esp + 0x44], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x70], ecx
lea ecx, [esp + 0x70]
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], edx
mov dword [esp + 0x48], ecx
jbe 0x422bd6
lea esi, [esp + 0xf4]
lea eax, [esp + 0x48]
lea edx, [esp + 0x58]
mov ecx, esi
mov dword [esp + 0xf4], eax
call fcn.0042354b
mov ecx, esi
lea edx, [esp + 0x44]
call fcn.0042354b
mov ecx, esi
lea edx, [esp + 0x5c]
call fcn.0042354b
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x48]
lea edx, [esp + 0x58]
push eax
lea eax, [esp + 0x48]
push eax
call fcn.00423517
pop eax
pop ecx
mov eax, dword [esp + 0x60]
cmp eax, 0xb
ja 0x422c07
mov ecx, dword [esp + 0x44]
test eax, eax
sete al
mov dword [esp + 0x38], ecx
jmp 0x422c6b
mov ecx, edi
mov eax, edi
shl ecx, 4
shr eax, 1
lea ecx, [ebx + ecx - 0x10]
sub eax, 1
jb 0x422c5d
movsd xmm0, qword [ebx]
movsd xmm1, qword [ebx + 8]
movsd xmm3, qword [ecx + 8]
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [ecx]
movsd qword [esp + 0x78], xmm1
movsd qword [ebx + 8], xmm3
movsd xmm2, qword [esp + 0x78]
movsd qword [ebx], xmm0
movsd xmm0, qword [esp + 0x70]
add ebx, 0x10
movsd qword [ecx + 8], xmm2
movsd qword [ecx], xmm0
add ecx, 0xfffffff0
jmp 0x422c14
mov eax, dword [esp + 0x44]
not eax
add eax, edi
mov dword [esp + 0x38], eax
mov al, 1
test al, al
sete al
or al, byte [esp + 0x10]
test al, 1
jne 0x422dd7
mov eax, dword [esp + 4]
add eax, 0x20
mov dword [esp + 0x28], eax
push 2
pop eax
sub eax, edi
xor ebx, ebx
mov dword [esp + 0xc], 0
inc ebx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x34]
cmp eax, 5
je 0x422dd7
inc eax
cmp ebx, edi
mov ecx, ebx
mov dword [esp + 0xc], eax
mov eax, edi
cmova eax, ebx
shl ecx, 4
add ecx, dword [esp + 4]
cmp eax, ebx
je 0x422cd8
mov edx, dword [ecx - 0x10]
mov esi, dword [ecx - 0xc]
cmp edx, dword [ecx]
sbb esi, dword [ecx + 4]
jb 0x422cda
inc ebx
add ecx, 0x10
jmp 0x422cc1
mov ebx, eax
cmp edi, 0x32
jb 0x422dcf
cmp edi, ebx
je 0x422dcf
mov esi, dword [esp + 4]
lea eax, [ebx - 1]
mov edx, edi
mov ecx, esi
push ebx
push eax
call fcn.0042342f
pop eax
pop ecx
sub edi, ebx
jb 0x42342b
mov ecx, esi
mov edx, ebx
call fcn.00423499
cmp edi, 2
jb 0x422c9b
mov eax, dword [esp + 4]
mov esi, ebx
shl esi, 4
lea ecx, [eax + esi]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
cmp eax, dword [ecx + 0x10]
mov dword [esp], eax
mov eax, edx
sbb eax, dword [ecx + 0x14]
jae 0x422c9b
mov eax, dword [esp + 4]
movsd xmm0, qword [ecx + 0x10]
movsd xmm1, qword [ecx + 0x18]
dec edi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x1c], edi
mov eax, dword [eax + esi + 8]
mov dword [esp + 8], eax
mov eax, dword [esp + 4]
mov eax, dword [eax + esi + 0xc]
add esi, dword [esp + 0x28]
xor edi, edi
movsd qword [ecx + 8], xmm1
movsd qword [ecx], xmm0
inc edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x24]
add eax, ebx
lea ecx, [eax + edi]
cmp ecx, 1
je 0x422da5
mov ecx, dword [esp]
cmp ecx, dword [esi]
mov ecx, edx
sbb ecx, dword [esi + 4]
jae 0x422da9
movsd xmm0, qword [esi]
movsd xmm1, qword [esi + 8]
inc edi
movsd qword [esi - 8], xmm1
movsd qword [esi - 0x10], xmm0
add esi, 0x10
jmp 0x422d78
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
shl edi, 4
mov ecx, dword [esp]
mov esi, dword [esp + 0x2c]
mov dword [eax + edi + 4], edx
mov edx, dword [esp + 8]
mov dword [eax + edi], ecx
mov dword [eax + edi + 0xc], esi
mov dword [eax + edi + 8], edx
jmp 0x422c9b
cmp edi, ebx
je 0x4233e0
cmp dword [esp + 0x40], 0
je 0x422f1c
mov ebx, dword [esp + 0x38]
cmp ebx, edi
jae 0x42342b
mov esi, dword [esp + 4]
mov eax, ebx
mov edx, dword [esp + 0x40]
shl eax, 4
mov ecx, dword [esi + eax]
mov eax, dword [esi + eax + 4]
cmp ecx, dword [edx]
sbb eax, dword [edx + 4]
jb 0x422f28
mov ecx, esi
mov edx, edi
push ebx
push 0
call fcn.0042342f
pop eax
pop ecx
mov eax, dword [esi]
lea ecx, [esi + 0x10]
mov dword [esp + 0x2c], ecx
mov dword [esp], eax
mov eax, dword [esi + 4]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [esi + 8]
mov dword [esp + 8], eax
xor eax, eax
lea edx, [edi - 1]
mov esi, eax
cmp eax, edx
cmova edx, eax
shl esi, 4
add esi, ecx
cmp edx, eax
je 0x422e6b
mov ebx, edx
mov edx, dword [esp]
mov ecx, dword [esi + 4]
cmp dword [esi], edx
sbb ecx, dword [esp + 0xc]
jb 0x422e69
inc eax
add esi, 0x10
mov edx, ebx
jmp 0x422e4d
mov edx, eax
mov ebx, edi
shl ebx, 4
add ebx, dword [esp + 4]
dec edi
cmp edx, edi
jae 0x422ee4
mov eax, edx
mov edx, dword [esp]
mov ecx, dword [ebx - 0xc]
lea esi, [ebx - 0x10]
cmp dword [ebx - 0x10], edx
mov edx, eax
mov ebx, esi
sbb ecx, dword [esp + 0xc]
jb 0x422e74
mov eax, dword [esp + 0x2c]
mov ecx, edx
movsd xmm3, qword [esi + 8]
inc edx
shl ecx, 4
movsd xmm0, qword [eax + ecx]
movsd xmm1, qword [eax + ecx + 8]
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [esi]
movsd qword [esp + 0x78], xmm1
movsd qword [eax + ecx + 8], xmm3
movsd xmm2, qword [esp + 0x78]
movsd qword [eax + ecx], xmm0
movsd xmm0, qword [esp + 0x70]
mov ecx, eax
mov eax, edx
movsd qword [esi + 8], xmm2
movsd qword [esi], xmm0
jmp 0x422e3e
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x34]
mov ecx, dword [esp]
mov esi, dword [esp + 8]
inc edx
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x30]
sub edi, edx
mov dword [ebx], ecx
mov dword [ebx + 8], esi
mov dword [ebx + 0xc], eax
jb 0x42342b
shl edx, 4
add ebx, edx
push 2
pop esi
jmp 0x422acc
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x38]
mov ecx, esi
mov edx, edi
push ebx
push 0
call fcn.0042342f
pop eax
pop ecx
test edi, edi
je 0x42342b
mov edx, dword [esi]
movsd xmm0, qword [esi + 8]
lea eax, [esi + 0x10]
lea ecx, [edi - 1]
mov dword [esp + 0x20], esi
mov dword [esp + 0xc], edx
mov edx, dword [esi + 4]
xor esi, esi
movsd qword [esp + 0x60], xmm0
mov dword [esp + 4], edx
mov edx, eax
cmp ecx, esi
je 0x422f81
mov ebx, esi
mov esi, dword [esp + 0xc]
cmp esi, dword [edx]
mov esi, dword [esp + 4]
sbb esi, dword [edx + 4]
jae 0x422f83
mov esi, ebx
add edx, 0x10
inc esi
jmp 0x422f64
mov ebx, ecx
cmp ebx, ecx
mov edx, ecx
mov dword [esp + 0x18], ebx
mov esi, edi
mov dword [esp + 0x10], edi
cmovb edx, ebx
mov ebx, dword [esp + 0x20]
shl esi, 4
lea esi, [ebx + esi - 0x10]
mov ebx, dword [esp + 0x10]
dec ebx
cmp ebx, dword [esp + 0x18]
mov dword [esp + 0x10], ebx
jbe 0x422fc6
mov ebx, dword [esp + 0xc]
cmp ebx, dword [esi]
mov ebx, edi
mov edi, dword [esp + 4]
sbb edi, dword [esi + 4]
mov edi, ebx
lea esi, [esi - 0x10]
jae 0x422f9f
jmp 0x422fca
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
cmp esi, edx
jb 0x42342b
cmp esi, ecx
mov dword [esp + 0x34], edi
ja 0x42342b
shl edx, 4
shl esi, 4
xor ebx, ebx
mov dword [esp + 0x28], 0x80
mov dword [esp + 8], 0
mov dword [esp + 0x1c], 0
mov dword [esp], 0
mov dword [esp + 0x24], 0x80
add edx, eax
add esi, eax
mov dword [esp + 0x6c], edx
mov eax, edx
mov edx, esi
mov dword [esp + 0x30], edx
sub edx, eax
mov dword [esp + 0x2c], ebx
cmp edx, 0x1010
mov dword [esp + 0x38], edx
jae 0x423085
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp]
mov esi, edx
shr esi, 4
cmp edi, ecx
setb dl
cmp dword [esp + 8], ebx
setb bl
or bl, dl
lea edx, [esi - 0x80]
test bl, bl
cmove edx, esi
cmp edi, ecx
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
cmovb esi, edx
cmovae edi, edx
test bl, bl
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], edi
jne 0x423089
mov esi, edx
shr esi, 1
sub edx, esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], edx
jmp 0x423089
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp]
mov dword [esp + 0x14], eax
cmp edx, ecx
jne 0x4230cc
mov edi, dword [esp + 0x24]
xor edx, edx
mov ecx, eax
lea ebx, [esp + 0xf4]
cmp edi, edx
je 0x4230bf
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 4]
mov byte [ebx], dl
inc edx
cmp eax, dword [ecx]
sbb esi, dword [ecx + 4]
sbb ebx, 0xffffffff
add ecx, 0x10
jmp 0x4230a3
mov eax, dword [esp + 0x14]
lea edx, [esp + 0xf4]
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
cmp dword [esp + 8], ebx
jne 0x42311d
mov ecx, eax
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
mov dword [esp], edx
xor edx, edx
lea ebx, [esp + 0x70]
add eax, 0xfffffff0
cmp edi, edx
je 0x42310c
mov esi, dword [esp + 0xc]
mov byte [ebx], dl
inc edx
cmp esi, dword [eax]
mov esi, dword [esp + 4]
sbb esi, dword [eax + 4]
adc ebx, 0
add eax, 0xfffffff0
jmp 0x4230f0
mov eax, ecx
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp]
lea edi, [esp + 0x70]
mov dword [esp + 8], edi
mov esi, ecx
mov edi, edx
sub esi, edx
mov edx, ebx
sub edx, dword [esp + 8]
cmp esi, edx
cmovbe edx, esi
test edx, edx
je 0x4231eb
movzx esi, byte [edi]
mov ecx, dword [esp + 8]
dec edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 8], edx
shl esi, 4
inc ecx
movsd xmm0, qword [eax + esi]
movsd xmm1, qword [eax + esi + 8]
mov edx, ecx
movsd qword [esp + 0x50], xmm1
movsd qword [esp + 0x48], xmm0
mov al, byte [edi]
inc edi
mov dword [esp], edi
movzx esi, byte [edx - 1]
mov ecx, dword [esp + 0x30]
movzx ebx, al
mov eax, dword [esp + 0x14]
shl ebx, 4
not esi
shl esi, 4
sub dword [esp + 8], 1
movsd xmm0, qword [ecx + esi]
movsd xmm1, qword [ecx + esi + 8]
lea esi, [ecx + esi]
movsd qword [eax + ebx + 8], xmm1
movsd qword [eax + ebx], xmm0
jb 0x4231c8
mov ecx, dword [esp]
inc edx
movzx edi, byte [ecx]
inc ecx
mov dword [esp], ecx
mov ebx, edi
shl ebx, 4
movsd xmm0, qword [eax + ebx]
movsd xmm1, qword [eax + ebx + 8]
mov eax, edi
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
jmp 0x423169
movsd xmm0, qword [esp + 0x48]
movsd xmm1, qword [esp + 0x50]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 8], edx
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
jmp 0x4231ee
mov dword [esp], edi
cmp dword [esp], ecx
mov edx, 0
mov ecx, dword [esp + 0x30]
cmove edx, dword [esp + 0x24]
shl edx, 4
add eax, edx
mov edx, dword [esp + 0x28]
mov esi, eax
mov eax, 0
neg edx
cmp dword [esp + 8], ebx
cmovne edx, eax
mov eax, esi
shl edx, 4
add ecx, edx
cmp dword [esp + 0x38], 0x1010
mov edx, ecx
jae 0x423021
mov ecx, dword [esp + 0x1c]
cmp dword [esp], ecx
jae 0x423296
cmp dword [esp], ecx
jae 0x4232fb
movzx eax, byte [ecx - 1]
movsd xmm3, qword [edx - 8]
dec ecx
mov ebx, ecx
mov ecx, esi
mov ecx, ebx
shl eax, 4
movsd xmm0, qword [esi + eax]
movsd xmm1, qword [esi + eax + 8]
movsd qword [esp + 0x48], xmm0
movsd xmm0, qword [edx - 0x10]
movsd qword [esp + 0x50], xmm1
movsd qword [esi + eax + 8], xmm3
movsd xmm2, qword [esp + 0x50]
movsd qword [esi + eax], xmm0
movsd xmm0, qword [esp + 0x48]
movsd qword [edx - 8], xmm2
movsd qword [edx - 0x10], xmm0
add edx, 0xfffffff0
jmp 0x423238
cmp dword [esp + 8], ebx
mov edi, dword [esp + 0x18]
jae 0x423301
cmp dword [esp + 8], ebx
jae 0x423301
movzx ecx, byte [ebx - 1]
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
dec ebx
mov esi, ebx
mov ebx, edx
mov ebx, esi
not ecx
movsd qword [esp + 0x48], xmm0
movsd qword [esp + 0x50], xmm1
shl ecx, 4
movsd xmm2, qword [esp + 0x50]
movsd xmm0, qword [edx + ecx]
movsd xmm1, qword [edx + ecx + 8]
movsd qword [eax], xmm0
movsd xmm0, qword [esp + 0x48]
movsd qword [eax + 8], xmm1
movsd qword [edx + ecx + 8], xmm2
add eax, 0x10
movsd qword [edx + ecx], xmm0
jmp 0x4232a0
mov edi, dword [esp + 0x18]
mov eax, edx
sub eax, dword [esp + 0x6c]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x34]
movsd xmm0, qword [esp + 0x60]
shr eax, 4
mov dword [ebx + 4], ecx
mov ecx, dword [esp + 0xc]
mov edx, esi
add eax, edi
cmp dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [ebx], ecx
movsd qword [ebx + 8], xmm0
mov ecx, ebx
setbe byte [esp + 0x10]
push eax
push 0
call fcn.0042342f
pop eax
pop ecx
mov eax, esi
mov edx, dword [esp + 0x14]
mov ecx, esi
sub eax, dword [esp + 0x14]
cmp dword [esp + 0x14], eax
cmovbe eax, dword [esp + 0x14]
shr ecx, 3
cmp eax, ecx
setae byte [esp + 0x18]
sub esi, edx
jb 0x42342b
je 0x42342b
mov eax, esi
mov esi, edx
shl esi, 4
add esi, ebx
mov ebx, eax
dec ebx
lea edi, [esi + 0x10]
cmp edx, ebx
jb 0x4233a7
mov ecx, edi
mov edx, ebx
push dword [esp + 0x3c]
push esi
push dword [ebp + 8]
call fcn.00422a83
mov eax, dword [esp + 0x20]
add esp, 0xc
mov edi, eax
push 2
pop esi
jmp 0x422ab5
mov ecx, dword [esp + 0x20]
push dword [esp + 0x3c]
push dword [esp + 0x44]
push dword [ebp + 8]
call fcn.00422a83
add esp, 0xc
mov dword [esp + 0x20], edi
mov dword [esp + 0x40], esi
mov edi, ebx
jmp 0x422ab0
mov ecx, dword [esp + 4]
mov edx, esi
call fcn.00423499
inc esi
lea eax, [esi - 1]
cmp eax, edi
jb 0x4233cd
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, edi
shr esi, 1
dec esi
cmp esi, 0xffffffff
je 0x4233ff
mov ecx, ebx
mov edx, edi
push esi
call fcn.004235c2
pop eax
jmp 0x4233ec
mov ebx, dword [esp + 4]
mov esi, edi
cmp esi, 2
jb 0x4233e0
dec esi
mov ecx, ebx
mov edx, edi
push esi
push 0
call fcn.0042342f
pop eax
pop ecx
cmp esi, edi
ja 0x42342b
mov ecx, ebx
mov edx, esi
push 0
call fcn.004235c2
pop eax
jmp 0x423405
ud2