Function at 0x422800
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd30
mov eax, dword [0x47a030]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebp + 0x14], 4
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, edx
mov dword [ebp - 0x118], eax
mov dword [ebp - 0x120], esi
mov dword [ebp - 0x124], ebx
mov dword [ebp - 0x12c], ecx
jl 0x422851
push str.________main_sort_initialise_..._n
call fcn.0043e00a
add eax, 0x40
push eax
call fcn.0043e526
add esp, 8
mov eax, 0x10000
jmp 0x422860
sub eax, 1
mov dword [edi + eax*4 + 4], 0
jns 0x422860
mov eax, dword [ebp + 0x10]
xor ecx, ecx
mov ch, byte [esi]
add eax, 0xffffffff
cmp eax, 3
jl 0x4228e4
lea edx, [ebx + eax*2 - 4]
xor ebx, ebx
mov word [edx + 4], 0
mov bh, byte [esi + eax]
sar ecx, 8
sub eax, 4
sub edx, 8
or ecx, ebx
add dword [edi + ecx*4], 1
xor ebx, ebx
mov word [edx + 0xa], 0
mov bh, byte [esi + eax + 3]
sar ecx, 8
or ecx, ebx
add dword [edi + ecx*4], 1
xor ebx, ebx
mov word [edx + 8], 0
mov bh, byte [esi + eax + 2]
sar ecx, 8
or ecx, ebx
add dword [edi + ecx*4], 1
xor ebx, ebx
mov word [edx + 6], 0
mov bh, byte [esi + eax + 1]
sar ecx, 8
or ecx, ebx
add dword [edi + ecx*4], 1
cmp eax, 3
jge 0x422880
mov ebx, dword [ebp - 0x124]
test eax, eax
jl 0x422909
jmp 0x4228f0
xor edx, edx
mov word [ebx + eax*2], 0
mov dh, byte [esi + eax]
sar ecx, 8
or ecx, edx
add dword [edi + ecx*4], 1
sub eax, 1
jns 0x4228f0
mov edx, dword [ebp + 0x10]
xor eax, eax
lea ecx, [ebx + edx*2]
add edx, esi
mov bl, byte [esi + eax]
mov byte [edx + eax], bl
mov word [ecx], 0
add eax, 1
add ecx, 2
cmp eax, 0x22
jl 0x422913
cmp dword [ebp + 0x14], 4
jl 0x422945
push str.________bucket_sorting_..._n
call fcn.0043e00a
add eax, 0x40
push eax
call fcn.0043e526
add esp, 8
lea eax, [edi + 8]
mov edx, 0x4000
lea ecx, [ecx]
mov ecx, dword [eax - 8]
add dword [eax - 4], ecx
mov ecx, dword [eax - 4]
add dword [eax], ecx
mov ecx, dword [eax]
add dword [eax + 4], ecx
mov ecx, dword [eax + 4]
add dword [eax + 8], ecx
add eax, 0x10
sub edx, 1
jne 0x422950
mov dh, byte [esi]
mov esi, dword [ebp + 0x10]
add esi, 0xffffffff
cmp esi, 3
movzx ecx, dx
jl 0x422a63
mov edx, dword [ebp - 0x120]
or ebx, 0xffffffff
sub ebx, edx
mov dword [ebp - 0x114], ebx
mov ebx, 0xfffffffe
sub ebx, edx
lea eax, [edx + esi - 1]
mov edx, dword [ebp - 0x118]
mov dword [ebp - 0x10c], ebx
lea ebx, [ebx]
xor ebx, ebx
mov bh, byte [eax + 1]
mov bl, ch
movzx ecx, bx
mov dword [ebp - 0x108], ecx
movzx ecx, cx
lea ebx, [edi + ecx*4]
mov ecx, dword [ebx]
sub ecx, 1
mov dword [ebx], ecx
mov dword [edx + ecx*4], esi
xor ecx, ecx
mov ch, byte [eax]
mov cl, byte [ebp - 0x107]
movzx ecx, cx
mov dword [ebp - 0x108], ecx
movzx ecx, cx
lea ebx, [edi + ecx*4]
mov ecx, dword [ebx]
sub ecx, 1
mov dword [ebx], ecx
lea ebx, [esi - 1]
mov dword [edx + ecx*4], ebx
xor ecx, ecx
mov ch, byte [eax - 1]
sub esi, 4
mov cl, byte [ebp - 0x107]
movzx ecx, cx
mov dword [ebp - 0x108], ecx
movzx ecx, cx
lea ebx, [edi + ecx*4]
mov ecx, dword [ebx]
sub ecx, 1
mov dword [ebx], ecx
mov ebx, dword [ebp - 0x114]
add ebx, eax
mov dword [edx + ecx*4], ebx
xor ecx, ecx
mov ch, byte [eax - 2]
mov cl, byte [ebp - 0x107]
movzx ecx, cx
mov dword [ebp - 0x108], ecx
movzx ecx, cx
lea ebx, [edi + ecx*4]
mov ecx, dword [ebx]
sub ecx, 1
mov dword [ebx], ecx
mov ebx, dword [ebp - 0x10c]
add ebx, eax
sub eax, 4
cmp esi, 3
mov dword [edx + ecx*4], ebx
mov ecx, dword [ebp - 0x108]
jge 0x4229b0
test esi, esi
mov ebx, dword [ebp - 0x118]
jl 0x422a96
lea ecx, [ecx]
mov eax, dword [ebp - 0x120]
xor edx, edx
mov dh, byte [eax + esi]
mov dl, ch
movzx ecx, dx
movzx edx, cx
mov eax, dword [edi + edx*4]
lea edx, [edi + edx*4]
sub eax, 1
mov dword [edx], eax
mov dword [ebx + eax*4], esi
sub esi, 1
jns 0x422a70
push 0x100
xor esi, esi
lea eax, [ebp - 0x104]
push esi
push eax
call fcn.0043eeb0
add esp, 0xc
lea ecx, [ecx]
mov dword [ebp + esi*4 - 0x530], esi
add esi, 1
cmp esi, 0xff
jle 0x422ab0
mov esi, 1
jmp 0x422ad0
lea esi, [esi + esi*2 + 1]
cmp esi, 0x100
jle 0x422ad0
lea esp, [esp]
mov eax, 0x55555556
imul esi
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov esi, ecx
cmp esi, 0xff
mov dword [ebp - 0x10c], esi
mov dword [ebp - 0x108], ecx
jg 0x422bcb
lea edx, [ebp - 0x530]
mov dword [ebp - 0x110], edx
jmp 0x422b20
mov edx, dword [ebp + ecx*4 - 0x530]
mov dword [ebp - 0x114], edx
mov eax, ecx
shl edx, 0xa
lea ecx, [edx + edi]
mov edx, dword [ecx + 0x400]
sub edx, dword [ecx]
mov ecx, dword [ebp - 0x110]
mov ecx, dword [ecx]
shl ecx, 0xa
mov ebx, dword [ecx + edi + 0x400]
sub ebx, dword [ecx + edi]
add ecx, edi
cmp ebx, edx
jbe 0x422b96
mov ecx, dword [ebp - 0x110]
mov edi, edi
mov ebx, dword [ecx]
mov dword [ebp + eax*4 - 0x530], ebx
lea ebx, [esi*4]
sub ecx, ebx
sub eax, esi
lea ebx, [esi - 1]
cmp eax, ebx
jle 0x422b96
mov esi, dword [ecx]
shl esi, 0xa
mov ebx, dword [esi + edi + 0x400]
sub ebx, dword [esi + edi]
add esi, edi
cmp ebx, edx
mov esi, dword [ebp - 0x10c]
ja 0x422b60
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp - 0x114]
add dword [ebp - 0x110], 4
mov ebx, dword [ebp - 0x118]
add ecx, 1
cmp ecx, 0xff
mov dword [ebp + eax*4 - 0x530], edx
mov dword [ebp - 0x108], ecx
jle 0x422b20
cmp esi, 1
jne 0x422ae0
xor eax, eax
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x108], eax
jmp 0x422bf0
mov eax, dword [ebp - 0x108]
mov esi, dword [ebp + eax*4 - 0x530]
xor ecx, ecx
mov dword [ebp - 0x10c], esi
mov dword [ebp - 0x11c], ecx
jmp 0x422c10
cmp ecx, esi
je 0x422cf3
mov eax, esi
shl eax, 8
add eax, ecx
mov ebx, dword [edi + eax*4]
test ebx, 0x200000
mov dword [ebp - 0x114], eax
jne 0x422cd4
mov esi, dword [edi + eax*4 + 4]
and esi, 0xffdfffff
and ebx, 0xffdfffff
sub esi, 1
cmp esi, ebx
jle 0x422cda
cmp dword [ebp + 0x14], 4
jl 0x422c88
mov edx, dword [ebp - 0x110]
mov eax, dword [ebp - 0x11c]
mov ecx, esi
sub ecx, ebx
add ecx, 1
push ecx
mov ecx, dword [ebp - 0x10c]
push edx
push eax
push ecx
push str.________qsort__0x_x__0x_x____done__d___this__d_n
call fcn.0043e00a
add eax, 0x40
push eax
call fcn.0043e526
add esp, 0x18
mov edx, dword [ebp - 0x12c]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x124]
push edx
mov edx, dword [ebp - 0x120]
push eax
push ecx
push edx
mov edx, dword [ebp - 0x118]
mov ecx, esi
mov eax, ebx
call fcn.00422450
mov eax, dword [ebp - 0x110]
mov edx, dword [ebp - 0x12c]
sub esi, ebx
add esp, 0x10
cmp dword [edx], 0
lea ecx, [eax + esi + 1]
mov dword [ebp - 0x110], ecx
jl 0x422f96
mov eax, dword [ebp - 0x114]
or dword [edi + eax*4], 0x200000
mov ecx, dword [ebp - 0x11c]
mov esi, dword [ebp - 0x10c]
mov ebx, dword [ebp - 0x118]
add ecx, 1
cmp ecx, 0xff
mov dword [ebp - 0x11c], ecx
jle 0x422c10
cmp byte [ebp + esi - 0x104], 0
lea eax, [ebp + esi - 0x104]
mov dword [ebp - 0x128], eax
jne 0x422fa6
lea ecx, [edi + esi*4]
mov dword [ebp - 0x130], ecx
xor eax, eax
mov edi, edi
mov edx, dword [ecx]
and edx, 0xffdfffff
mov dword [ebp + eax - 0x930], edx
mov edx, dword [ecx + 4]
and edx, 0xffdfffff
sub edx, 1
mov dword [ebp + eax - 0xd30], edx
add eax, 4
add ecx, 0x400
cmp eax, 0x3fc
jle 0x422d30
mov eax, esi
shl eax, 0xa
mov ecx, dword [eax + edi]
add eax, edi
lea edx, [ebp + esi*4 - 0x930]
and ecx, 0xffdfffff
cmp ecx, dword [edx]
mov dword [ebp - 0x11c], eax
mov dword [ebp - 0x114], edx
jge 0x422dde
lea esp, [esp]
mov eax, dword [ebx + ecx*4]
sub eax, 1
jns 0x422d9b
add eax, dword [ebp + 0x10]
mov edx, dword [ebp - 0x120]
movzx edx, byte [edx + eax]
cmp byte [ebp + edx - 0x104], 0
jne 0x422dcb
mov esi, dword [ebp + edx*4 - 0x930]
lea edx, [ebp + edx*4 - 0x930]
mov dword [ebx + esi*4], eax
add esi, 1
mov dword [edx], esi
mov esi, dword [ebp - 0x10c]
mov eax, dword [ebp - 0x114]
add ecx, 1
cmp ecx, dword [eax]
jl 0x422d90
mov eax, dword [ebp - 0x11c]
mov ecx, dword [eax + 0x400]
and ecx, 0xffdfffff
lea esi, [ebp + esi*4 - 0xd30]
sub ecx, 1
cmp ecx, dword [esi]
mov dword [ebp - 0x10c], esi
jle 0x422e42
mov edi, edi
mov eax, dword [ebx + ecx*4]
sub eax, 1
jns 0x422e0b
add eax, dword [ebp + 0x10]
mov edx, dword [ebp - 0x120]
movzx edx, byte [edx + eax]
cmp byte [ebp + edx - 0x104], 0
jne 0x422e3b
mov esi, dword [ebp + edx*4 - 0xd30]
lea edx, [ebp + edx*4 - 0xd30]
mov dword [ebx + esi*4], eax
add esi, 0xffffffff
mov dword [edx], esi
mov esi, dword [ebp - 0x10c]
sub ecx, 1
cmp ecx, dword [esi]
jg 0x422e00
mov eax, dword [ebp - 0x114]
mov eax, dword [eax]
mov esi, dword [esi]
lea ecx, [eax - 1]
cmp ecx, esi
je 0x422e69
test eax, eax
jne 0x422fb0
mov eax, dword [ebp + 0x10]
add eax, 0xffffffff
cmp esi, eax
jne 0x422fb0
mov eax, dword [ebp - 0x130]
mov ecx, 0x100
jmp 0x422e80
or dword [eax], 0x200000
add eax, 0x400
sub ecx, 1
jne 0x422e80
cmp dword [ebp - 0x108], 0xff
mov edx, dword [ebp - 0x128]
mov byte [edx], 1
jge 0x422f50
mov eax, dword [ebp - 0x11c]
mov esi, dword [eax]
mov eax, dword [eax + 0x400]
and esi, 0xffdfffff
and eax, 0xffdfffff
sub eax, esi
cmp eax, 0xfffe
jle 0x422edf
jmp 0x422ed0
add ecx, 1
mov edx, eax
sar edx, cl
cmp edx, 0xfffe
jg 0x422ed0
add eax, 0xffffffff
mov dword [ebp - 0x128], eax
mov edx, eax
js 0x422f47
add esi, edx
lea eax, [ebx + esi*4]
mov dword [ebp - 0x10c], eax
jmp 0x422f00
mov eax, dword [ebp - 0x10c]
mov eax, dword [eax]
mov ebx, dword [ebp - 0x124]
mov esi, edx
sar esi, cl
cmp eax, 0x22
movzx esi, si
mov word [ebx + eax*2], si
jge 0x422f2d
mov ebx, dword [ebp + 0x10]
add eax, ebx
mov ebx, dword [ebp - 0x124]
mov word [ebx + eax*2], si
sub dword [ebp - 0x10c], 4
sub edx, 1
test edx, edx
jge 0x422f00
mov ebx, dword [ebp - 0x118]
mov eax, dword [ebp - 0x128]
sar eax, cl
cmp eax, 0xffff
jg 0x422fba
mov eax, dword [ebp - 0x108]
add eax, 1
cmp eax, 0xff
mov dword [ebp - 0x108], eax
jle 0x422bf0
cmp dword [ebp + 0x14], 4
jl 0x422f96
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x110]
mov edx, ecx
sub edx, eax
push edx
push eax
push ecx
push str._________d_pointers___d_sorted___d_scanned_n
call fcn.0043e00a
add eax, 0x40
push eax
call fcn.0043e526
add esp, 0x14
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.0043aa68
mov esp, ebp
pop ebp
ret
mov esi, 0x3ee
jmp 0x41b4b0
mov esi, 0x3ef
jmp 0x41b4b0
mov esi, 0x3ea
jmp 0x41b4b0