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

Disassembly:
sub esp, 0xe0
mov eax, dword [0x459f34]
xor eax, esp
mov dword [esp + 0xdc], eax
mov ecx, dword [esp + 0xec]
mov edx, dword [esp + 0xe4]
mov eax, 8
add ecx, 0xfffffff8
cmp ecx, eax
mov dword [esp + 0x48], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x44], ecx
jle 0x423074
push ebx
mov ebx, dword [esp + 0xf8]
push ebp
mov ebp, dword [esp + 0xf0]
push esi
add ebp, 0xfffffff8
push edi
mov edi, dword [esp + 0x108]
mov dword [esp + 0x50], ebp
mov edi, edi
mov esi, 8
cmp ebp, esi
mov dword [esp + 0x4c], esi
jle 0x423061
mov ecx, dword [esp + 0x100]
mov ebp, eax
imul ebp, ecx
add ebp, edx
mov dword [esp + 0x68], ebp
lea ebp, [eax - 1]
imul ebp, ecx
lea edx, [edx + ebp - 1]
mov dword [esp + 0x64], edx
or edx, 0xffffffff
sub edx, ecx
mov dword [esp + 0x44], edx
mov edx, 1
sub edx, ecx
mov dword [esp + 0x2c], edx
mov edx, 2
sub edx, ecx
mov dword [esp + 0x38], edx
mov edx, 3
sub edx, ecx
mov dword [esp + 0x34], edx
mov edx, 4
sub edx, ecx
mov dword [esp + 0x3c], edx
mov edx, 6
sub edx, ecx
mov dword [esp + 0x48], edx
mov edx, 7
sub edx, ecx
mov dword [esp + 0x60], edx
mov edx, 5
sub edx, ecx
mov dword [esp + 0x30], edx
mov edx, 0xfffffffe
sub edx, ecx
mov dword [esp + 0x5c], edx
cmp dword [esp + 0x10c], 0
cdq
je 0x422654
and edx, 7
add eax, edx
mov ecx, eax
mov eax, esi
cdq
and edx, 7
add eax, edx
sar ecx, 3
sar eax, 3
jmp 0x422669
and edx, 0xf
add eax, edx
mov ecx, eax
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar ecx, 4
sar eax, 4
imul ecx, edi
add ecx, eax
mov edx, dword [ebx + ecx*4]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x64]
lea ecx, [eax + esi]
lea ebp, [edx + esi]
or al, 0xff
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ebp
xor dl, dl
lea edi, [ecx + 1]
mov ebx, 8
xor esi, esi
lea esp, [esp]
mov cl, byte [edi + esi - 1]
cmp cl, al
jae 0x4226aa
mov al, cl
cmp cl, dl
jbe 0x4226b0
mov dl, cl
mov cl, byte [edi + esi]
cmp cl, al
jae 0x4226b9
mov al, cl
cmp cl, dl
jbe 0x4226bf
mov dl, cl
mov cl, byte [edi + esi + 1]
cmp cl, al
jae 0x4226c9
mov al, cl
cmp cl, dl
jbe 0x4226cf
mov dl, cl
mov cl, byte [edi + esi + 2]
cmp cl, al
jae 0x4226d9
mov al, cl
cmp cl, dl
jbe 0x4226df
mov dl, cl
add esi, 4
cmp esi, 8
jl 0x4226a0
add edi, dword [esp + 0x100]
sub ebx, 1
jne 0x422697
mov esi, dword [esp + 0x100]
movzx ecx, dl
movzx edx, al
lea eax, [ecx + edx + 1]
cdq
sub eax, edx
sar eax, 1
xor edx, edx
lea ecx, [ebp + 2]
lea ebx, [edx + 4]
lea edi, [edx + 8]
xor ebp, ebp
mov word [esp + edx + 0x6c], bp
cmp byte [ecx - 2], al
jb 0x422726
or word [esp + edx + 0x6c], 2
cmp byte [ecx - 1], al
jb 0x422730
or word [esp + edx + 0x6c], bx
cmp byte [ecx], al
jb 0x422739
or word [esp + edx + 0x6c], di
cmp byte [ecx + 1], al
jb 0x422744
or word [esp + edx + 0x6c], 0x10
cmp byte [ecx + 2], al
jb 0x42274f
or word [esp + edx + 0x6c], 0x20
cmp byte [ecx + 3], al
jb 0x42275a
or word [esp + edx + 0x6c], 0x40
cmp byte [ecx + 4], al
jb 0x422769
mov ebp, 0x80
or word [esp + edx + 0x6c], bp
cmp byte [ecx + 5], al
jb 0x422778
mov ebp, 0x100
or word [esp + edx + 0x6c], bp
cmp byte [ecx + 6], al
jb 0x422787
mov ebp, 0x200
or word [esp + edx + 0x6c], bp
cmp byte [ecx + 7], al
jb 0x422796
mov ebp, 0x400
or word [esp + edx + 0x6c], bp
mov bp, word [esp + edx + 0x6c]
not bp
mov word [esp + edx + 0x84], bp
add edx, 2
add ecx, esi
cmp edx, 0x14
jl 0x422714
mov ax, word [esp + 0x6c]
mov edx, dword [esp + 0x6c]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x84]
mov word [esp + 0x6c], ax
mov ax, word [esp + 0x84]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x6e]
mov word [esp + 0x84], ax
mov ax, word [esp + 0x6e]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x86]
mov word [esp + 0x6e], ax
mov ax, word [esp + 0x86]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x70]
mov word [esp + 0x86], ax
mov ax, word [esp + 0x70]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x88]
and ax, cx
mov word [esp + 0x70], ax
mov ax, word [esp + 0x88]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x72]
and ax, cx
mov word [esp + 0x88], ax
mov ax, word [esp + 0x72]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x8a]
and ax, cx
mov word [esp + 0x72], ax
mov ax, word [esp + 0x8a]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x74]
and ax, cx
mov word [esp + 0x8a], ax
mov ax, word [esp + 0x74]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x8c]
and ax, cx
mov word [esp + 0x74], ax
mov ax, word [esp + 0x8c]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov word [esp + 0x8c], ax
mov ax, word [esp + 0x76]
mov edx, dword [esp + 0x76]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x8e]
mov word [esp + 0x76], ax
mov ax, word [esp + 0x8e]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x78]
mov word [esp + 0x8e], ax
mov ax, word [esp + 0x78]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x90]
mov word [esp + 0x78], ax
mov ax, word [esp + 0x90]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov edx, dword [esp + 0x7a]
mov word [esp + 0x90], ax
mov ax, word [esp + 0x7a]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x92]
and ax, cx
mov word [esp + 0x7a], ax
mov ax, word [esp + 0x92]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x7c]
and ax, cx
mov word [esp + 0x92], ax
mov ax, word [esp + 0x7c]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x94]
and ax, cx
mov word [esp + 0x7c], ax
mov ax, word [esp + 0x94]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x7e]
and ax, cx
mov word [esp + 0x94], ax
mov ax, word [esp + 0x7e]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
mov edx, dword [esp + 0x96]
and ax, cx
mov word [esp + 0x7e], ax
mov ax, word [esp + 0x96]
mov cx, ax
shr cx, 1
add edx, edx
and cx, dx
and ax, cx
mov ecx, dword [esp + 0x70]
mov word [esp + 0x96], ax
mov eax, ecx
mov edx, dword [esp + 0x88]
mov edi, dword [esp + 0x6e]
and eax, edi
and eax, dword [esp + 0x6c]
mov esi, edx
and esi, dword [esp + 0x86]
and esi, dword [esp + 0x84]
or ax, si
mov esi, dword [esp + 0x72]
mov word [esp + 0x9c], ax
mov eax, esi
and eax, ecx
and eax, edi
mov edi, dword [esp + 0x8a]
mov ebx, edi
and ebx, edx
and ebx, dword [esp + 0x86]
or ax, bx
mov ebx, dword [esp + 0x74]
mov word [esp + 0x9e], ax
mov eax, ebx
and eax, esi
and eax, ecx
mov ecx, dword [esp + 0x8c]
mov ebp, ecx
and ebp, edi
and ebp, edx
or ax, bp
mov edx, dword [esp + 0x76]
mov word [esp + 0xa0], ax
mov eax, edx
and eax, ebx
and eax, esi
mov esi, dword [esp + 0x8e]
mov ebp, esi
and ebp, ecx
and ebp, edi
mov edi, dword [esp + 0x78]
or ax, bp
mov word [esp + 0xa2], ax
mov eax, edi
and eax, edx
and eax, ebx
mov ebx, dword [esp + 0x90]
mov ebp, ebx
and ebp, esi
and ebp, ecx
mov ecx, dword [esp + 0x7a]
or ax, bp
mov word [esp + 0xa4], ax
mov eax, ecx
and eax, edi
and eax, edx
mov edx, dword [esp + 0x92]
mov ebp, edx
and ebp, ebx
and ebp, esi
mov esi, dword [esp + 0x7c]
or ax, bp
mov word [esp + 0xa6], ax
mov eax, esi
and eax, ecx
and eax, edi
mov edi, dword [esp + 0x94]
mov ebp, edi
and ebp, edx
and ebp, ebx
or ax, bp
mov word [esp + 0xa8], ax
mov eax, dword [esp + 0x7e]
and eax, esi
and eax, ecx
mov ecx, dword [esp + 0x96]
and ecx, edi
and ecx, edx
or ax, cx
mov ecx, dword [esp + 0x20]
mov word [esp + 0xaa], ax
lea eax, [ecx + 2]
xor edi, edi
mov ebx, eax
mov ebp, dword [esp + 0x100]
lea esi, [ecx + ebp*2 + 4]
lea ecx, [ecx + ebp + 2]
lea esp, [esp]
movzx eax, word [esp + edi*2 + 0x9c]
test al, 4
je 0x422bdb
mov eax, dword [esp + 0x44]
movzx eax, byte [ecx + eax]
movzx edx, byte [ecx - 1]
lea edx, [eax + edx*2 + 4]
movzx eax, byte [ecx + ebp - 1]
add edx, eax
movzx eax, byte [ecx - 2]
add edx, eax
movzx eax, byte [ecx]
add edx, eax
mov eax, dword [esp + 0x5c]
movzx eax, byte [ecx + eax]
lea eax, [eax + edx*2]
movzx edx, byte [ecx + ebp - 2]
add eax, edx
movzx edx, byte [ecx + ebp]
add eax, edx
movzx edx, byte [ebx]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xac], al
movzx eax, word [esp + edi*2 + 0x9c]
test al, 8
je 0x422c35
movzx edx, byte [ecx + ebp]
movzx eax, byte [ecx]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [ecx - 1]
add eax, edx
movzx edx, byte [ecx + 1]
add eax, edx
movzx edx, byte [ebx]
add eax, edx
mov edx, dword [esp + 0x2c]
movzx edx, byte [ecx + edx]
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x44]
movzx edx, byte [ecx + edx]
add eax, edx
movzx edx, byte [ecx + ebp - 1]
add eax, edx
movzx edx, byte [esi - 1]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xad], al
movzx eax, word [esp + edi*2 + 0x9c]
test al, 0x10
je 0x422c8d
mov edx, dword [esp + 0x2c]
movzx edx, byte [ecx + edx]
movzx eax, byte [ecx + 1]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [ecx + 2]
add eax, edx
movzx edx, byte [esi - 1]
add eax, edx
movzx edx, byte [ecx]
add eax, edx
mov edx, dword [esp + 0x38]
movzx edx, byte [ecx + edx]
lea eax, [edx + eax*2]
movzx edx, byte [ecx + ebp]
add eax, edx
movzx edx, byte [esi]
add eax, edx
movzx edx, byte [ebx]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xae], al
movzx eax, word [esp + edi*2 + 0x9c]
test al, 0x20
je 0x422ceb
mov edx, dword [esp + 0x38]
movzx edx, byte [ecx + edx]
movzx eax, byte [ecx + 2]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [ecx + 3]
add eax, edx
movzx edx, byte [ecx + 1]
add eax, edx
movzx edx, byte [esi]
add eax, edx
mov edx, dword [esp + 0x34]
movzx edx, byte [ecx + edx]
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x2c]
movzx edx, byte [ecx + edx]
add eax, edx
movzx edx, byte [esi - 1]
add eax, edx
movzx edx, byte [esi + 1]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xaf], al
movzx eax, word [esp + edi*2 + 0x9c]
test al, 0x40
je 0x422d49
mov edx, dword [esp + 0x34]
movzx edx, byte [ecx + edx]
movzx eax, byte [ecx + 3]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [ecx + 4]
add eax, edx
movzx edx, byte [ecx + 2]
add eax, edx
movzx edx, byte [esi + 1]
add eax, edx
mov edx, dword [esp + 0x3c]
movzx edx, byte [ecx + edx]
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x38]
movzx edx, byte [ecx + edx]
add eax, edx
movzx edx, byte [esi + 2]
add eax, edx
movzx edx, byte [esi]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xb0], al
movzx eax, word [esp + edi*2 + 0x9c]
test al, al
jns 0x422da8
mov edx, dword [esp + 0x3c]
movzx edx, byte [ecx + edx]
movzx eax, byte [ecx + 4]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [ecx + 5]
add eax, edx
movzx edx, byte [ecx + 3]
add eax, edx
movzx edx, byte [esi + 2]
add eax, edx
mov edx, dword [esp + 0x30]
movzx edx, byte [ecx + edx]
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x34]
movzx edx, byte [ecx + edx]
add eax, edx
movzx edx, byte [esi + 3]
add eax, edx
movzx edx, byte [esi + 1]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xb1], al
movzx eax, word [esp + edi*2 + 0x9c]
test eax, 0x100
je 0x422e0a
mov edx, dword [esp + 0x30]
movzx edx, byte [ecx + edx]
movzx eax, byte [ecx + 5]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [ecx + 6]
add eax, edx
movzx edx, byte [ecx + 4]
add eax, edx
movzx edx, byte [esi + 3]
add eax, edx
mov edx, dword [esp + 0x48]
movzx edx, byte [ecx + edx]
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x3c]
movzx edx, byte [ecx + edx]
add eax, edx
movzx edx, byte [esi + 4]
add eax, edx
movzx edx, byte [esi + 2]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xb2], al
movzx eax, word [esp + edi*2 + 0x9c]
test eax, 0x200
je 0x422e6c
mov edx, dword [esp + 0x48]
movzx edx, byte [ecx + edx]
movzx eax, byte [ecx + 6]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [ecx + 7]
add eax, edx
movzx edx, byte [ecx + 5]
add eax, edx
movzx edx, byte [esi + 4]
add eax, edx
mov edx, dword [esp + 0x30]
movzx edx, byte [ecx + edx]
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x60]
movzx edx, byte [ecx + edx]
add eax, edx
movzx edx, byte [esi + 5]
add eax, edx
movzx edx, byte [esi + 3]
add eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov byte [esp + edi*8 + 0xb3], al
inc edi
add ecx, ebp
add esi, ebp
add ebx, ebp
cmp edi, 8
jl 0x422b80
mov eax, dword [esp + 0x1c]
cdq
sub eax, edx
sar eax, 1
xor ebp, ebp
lea ecx, [esp + 0x9c]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x1c], ecx
lea ebx, [ebx]
mov edx, dword [esp + 0x1c]
movzx edx, word [edx]
mov dword [esp + 0x14], 4
xor ecx, ecx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x24]
and edx, dword [esp + 0x14]
test dx, dx
je 0x422f01
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x28]
add edx, ecx
lea edi, [edx + esi]
mov dl, byte [edi]
lea esi, [ecx + ebp]
mov bl, byte [esp + esi + 0xac]
movzx esi, bl
mov byte [esp + 0x13], bl
movzx ebx, dl
sub esi, ebx
cmp esi, eax
jle 0x422eef
add dl, al
jmp 0x422eff
mov ebx, eax
neg ebx
cmp esi, ebx
jge 0x422efb
sub dl, al
jmp 0x422eff
mov dl, byte [esp + 0x13]
mov byte [edi], dl
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x24]
add edx, edx
and esi, edx
mov dword [esp + 0x14], edx
test si, si
je 0x422f56
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x28]
add edx, ecx
lea edi, [edx + esi + 1]
mov dl, byte [edi]
lea esi, [esp + ebp + 0xad]
mov bl, byte [esi + ecx]
movzx esi, bl
mov byte [esp + 0x13], bl
movzx ebx, dl
sub esi, ebx
cmp esi, eax
jle 0x422f44
add dl, al
jmp 0x422f54
mov ebx, eax
neg ebx
cmp esi, ebx
jge 0x422f50
sub dl, al
jmp 0x422f54
mov dl, byte [esp + 0x13]
mov byte [edi], dl
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x24]
add edx, edx
and esi, edx
mov dword [esp + 0x14], edx
test si, si
je 0x422fab
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x28]
add edx, ecx
lea edi, [edx + esi + 2]
mov dl, byte [edi]
lea esi, [esp + ebp + 0xae]
mov bl, byte [esi + ecx]
movzx esi, bl
mov byte [esp + 0x13], bl
movzx ebx, dl
sub esi, ebx
cmp esi, eax
jle 0x422f99
add dl, al
jmp 0x422fa9
mov ebx, eax
neg ebx
cmp esi, ebx
jge 0x422fa5
sub dl, al
jmp 0x422fa9
mov dl, byte [esp + 0x13]
mov byte [edi], dl
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x24]
add edx, edx
and esi, edx
mov dword [esp + 0x14], edx
test si, si
je 0x423000
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x28]
add edx, ecx
lea edi, [edx + esi + 3]
mov dl, byte [edi]
lea esi, [esp + ebp + 0xaf]
mov bl, byte [esi + ecx]
movzx esi, bl
movzx ebp, dl
sub esi, ebp
cmp esi, eax
jle 0x422fec
add dl, al
mov byte [edi], dl
jmp 0x422ffc
mov ebp, eax
neg ebp
cmp esi, ebp
jge 0x422ffa
sub dl, al
mov byte [edi], dl
jmp 0x422ffc
mov byte [edi], bl
mov ebp, dword [esp + 0x20]
shl dword [esp + 0x14], 1
add ecx, 4
cmp ecx, 8
jl 0x422eb5
mov ecx, dword [esp + 0x100]
add dword [esp + 0x1c], 2
add dword [esp + 0x18], ecx
add ebp, 8
cmp ebp, 0x40
mov dword [esp + 0x20], ebp
jl 0x422ea0
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x50]
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x104]
mov edi, dword [esp + 0x108]
add esi, 8
cmp esi, ebp
mov dword [esp + 0x4c], esi
jl 0x422632
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
add eax, 8
cmp eax, ecx
mov dword [esp + 0x40], eax
jl 0x4225a0
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xdc]
xor ecx, esp
call fcn.00429cfe
add esp, 0xe0
ret