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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x10c
push ebx
xor al, al
mov dword [esp + 0x40], 0
push esi
mov byte [esp + 0xb], al
mov ebx, edx
mov byte [esp + 0xa], al
xor dl, dl
mov eax, dword [ebp + 8]
push edi
mov edi, ecx
mov dword [esp + 0x28], ebx
xor cl, cl
mov dword [esp + 0x1c], edi
mov byte [esp + 0x16], cl
mov ecx, dword [ebp + 0x10]
add eax, ecx
mov esi, eax
mov dword [esp + 0x114], eax
xor eax, eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], 0
mov byte [esp + 0x17], dl
lea eax, [esi - 1]
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x30], 0
mov dword [esp + 0x20], esi
test edi, edi
jne 0x4ad479
test ebx, ebx
mov ebx, dword [ebp + 0xc]
jne 0x4ad47c
test eax, eax
jne 0x4ad47c
cmp ebx, 0xfffffc19
jne 0x4ad47c
cmp ecx, ebx
jne 0x4ad47c
push eax
push eax
push eax
push eax
push eax
xor edx, edx
xor ecx, ecx
call fcn.004a9230
add esp, 0x14
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
test edx, 0xe20f5a6f
je 0x4ad493
mov eax, 0xfffffffd
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test edi, edi
je 0x4ae066
test eax, eax
je 0x4ae066
cmp dword [ebp + 0x18], 0
mov eax, dword [ebp + 0x1c]
jne 0x4ad4b4
test eax, eax
jg 0x4ae066
test eax, eax
jns 0x4ad4c4
mov eax, 0xfffffff1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ecx, ecx
js 0x4ae05a
cmp ecx, ebx
jg 0x4ae05a
mov ecx, dword [edi]
cmp ecx, 0x50435245
je 0x4ad4f8
cmp ecx, 0x45524350
mov eax, 0xfffffffc
mov edx, 0xffffffe3
cmove eax, edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx eax, word [edi + 0xc]
test al, 1
jne 0x4ad50c
mov eax, 0xffffffe4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0xa0], 0
test edx, 0x8000000
je 0x4ad526
mov eax, 2
jmp 0x4ad52e
mov eax, edx
shr eax, 0xf
and eax, 1
movzx ebx, word [edi + 0x18]
movzx ecx, word [edi + 0x1c]
movzx edx, word [edi + 0x1a]
mov dword [esp + 0xe0], eax
lea eax, [ebx + edi]
mov dword [esp + 0x78], ecx
mov edi, dword [edi + 0x20]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x34], 0
mov dword [esp + 0x5c], 0x989680
mov dword [esp + 0x60], 0x1770
mov dword [esp + 0x100], 0
test eax, eax
je 0x4ad5ca
mov ecx, dword [eax]
test cl, 1
je 0x4ad58f
mov esi, dword [eax + 4]
mov dword [esp + 0x34], esi
test cl, 2
je 0x4ad59f
mov eax, dword [eax + 8]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x28]
test cl, 0x10
je 0x4ad5ab
mov eax, dword [eax + 0x14]
mov dword [esp + 0x60], eax
test cl, 4
je 0x4ad5be
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x100], eax
test cl, 8
je 0x4ad5ca
mov eax, dword [esp + 0x28]
mov edi, dword [eax + 0x10]
mov eax, dword [esp + 0x1c]
test edi, edi
mov ecx, 0x4d4470
mov dword [esp + 0xc4], 0
cmovne ecx, edi
mov dword [esp + 0xb8], 0
mov dword [esp + 0x108], 0
mov esi, dword [eax + 8]
movzx edi, word [eax + 0xc]
mov dword [esp + 0x40], esi
or esi, dword [ebp + 0x14]
mov dword [esp + 0x50], esi
mov esi, eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x104], 0
mov dword [esp + 0xfc], 0
movzx eax, word [esi + 0x1c]
imul edx, eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0xec], eax
mov dword [esp + 0x88], ecx
add edx, ebx
mov ebx, esi
mov esi, dword [ebp + 0x14]
add edx, ebx
mov dword [esp + 0xc8], edx
mov edx, dword [ebp + 8]
mov dword [esp + 0xcc], edx
add edx, dword [ebp + 0xc]
mov dword [esp + 0x24], edx
mov dword [esp + 0xd0], edx
mov edx, dword [esp + 0x40]
mov eax, edx
shr eax, 5
and eax, 1
mov dword [esp + 0xac], eax
mov eax, edx
shr eax, 0x1d
and eax, 1
mov dword [esp + 0xa8], eax
mov eax, edx
shr eax, 0x19
and eax, 1
mov dword [esp + 0xa4], eax
mov eax, esi
shr eax, 7
and eax, 1
mov dword [esp + 0x98], eax
mov eax, esi
shr eax, 8
and eax, 1
mov dword [esp + 0x9c], eax
mov eax, esi
shr eax, 0xa
and eax, 1
mov dword [esp + 0xb0], eax
mov eax, esi
shr eax, 0x1c
and eax, 1
mov dword [esp + 0xb4], eax
mov eax, edi
shr eax, 0xc
and eax, 1
mov dword [esp + 0xc0], eax
lea eax, [ecx + 0x100]
mov dword [esp + 0x8c], eax
lea eax, [ecx + 0x340]
mov dword [esp + 0x90], eax
mov eax, esi
mov esi, dword [esp + 0x20]
and eax, 0x1800000
je 0x4ad76a
cmp eax, 0x800000
je 0x4ad75d
cmp eax, 0x1000000
jne 0x4ad7d4
mov dword [esp + 0xbc], 0
mov eax, dword [ebp + 0x14]
test eax, 0x700000
cmove eax, edx
and eax, 0x700000
cmp eax, 0x300000
ja 0x4ad7c6
je 0x4ad7a2
test eax, eax
je 0x4ad7a2
cmp eax, 0x100000
je 0x4ad783
cmp eax, 0x200000
jne 0x4ad7d4
mov eax, 0xa
jmp 0x4ad788
mov dword [esp + 0xbc], 1
jmp 0x4ad727
test edx, 0x1800000
je 0x4ad71c
mov eax, edx
shr eax, 0x17
and eax, 1
mov dword [esp + 0xbc], eax
jmp 0x4ad727
mov eax, 0xd
mov ecx, 1
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], ecx
mov byte [esp + 0x84], al
jmp 0x4ad7fd
mov ecx, 2
mov dword [esp + 0x70], 0
mov al, 0xd
mov dword [esp + 0x74], ecx
mov byte [esp + 0x84], al
mov byte [esp + 0x85], 0xa
jmp 0x4ad7fd
cmp eax, 0x400000
je 0x4ad7ea
cmp eax, 0x500000
je 0x4ad7e0
mov eax, 0xffffffe9
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x70], 2
jmp 0x4ad7f2
mov dword [esp + 0x70], 1
mov ecx, dword [esp + 0x74]
mov al, byte [esp + 0x84]
cmp dword [esp + 0xe0], 0
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
je 0x4ad823
test edi, 0x200
je 0x4ad823
mov eax, 0xfffffff3
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x55555556
imul dword [ebp + 0x1c]
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edi, [eax + eax*2]
mov eax, 0x55555556
lea ecx, [edi + edi]
mov dword [esp + 0x20], edi
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x54], eax
movzx eax, word [ebx + 0x12]
test ax, ax
je 0x4ad8b0
mov ecx, eax
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
jl 0x4ad8b0
inc ecx
lea eax, [ecx + ecx*2]
mov dword [esp + 0x20], eax
shl eax, 2
push eax
call fcn.004b2c3e
mov edi, eax
add esp, 4
mov dword [esp + 0x64], edi
test edi, edi
jne 0x4ad893
lea eax, [edi - 6]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [esp + 0x84]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x48], 1
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ecx
jmp 0x4ad8b7
mov edi, dword [ebp + 0x18]
mov dword [esp + 0x64], edi
mov eax, dword [esp + 0x20]
mov ebx, edi
mov dword [esp + 0x68], eax
mov dword [esp + 0x94], 0
mov dword [esp + 0xe8], 0xffffffff
lea ecx, [eax + eax]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x6c], eax
test ebx, ebx
je 0x4ad94c
mov eax, dword [esp + 0x20]
lea ecx, [ebx + eax*4]
mov eax, dword [esp + 0x1c]
mov edx, ecx
movzx eax, word [eax + 0x10]
shl eax, 2
sub edx, eax
lea eax, [ebx + 8]
cmp edx, eax
cmovb edx, eax
sub ecx, 4
cmp ecx, edx
jb 0x4ad926
mov dword [ecx], 0xffffffff
sub ecx, 4
cmp ecx, edx
jae 0x4ad915
mov edi, dword [esp + 0x64]
mov dword [edi + 4], 0xffffffff
mov eax, dword [esp + 0x64]
mov dword [eax], 0xffffffff
mov al, byte [esp + 0x84]
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ebx
jmp 0x4ad950
mov ebx, dword [esp + 0x10]
test byte [esp + 0x50], 0x10
mov edx, dword [esp + 0x1c]
jne 0x4ad9b7
movzx eax, word [edx + 0xc]
test al, 0x10
je 0x4ad98f
mov ch, byte [edx + 0x14]
mov dword [esp + 0x38], 1
mov cl, ch
mov byte [esp + 0xf], ch
mov byte [esp + 0x16], cl
test al, 0x20
je 0x4ad9b7
movzx eax, ch
mov ecx, dword [esp + 0x8c]
mov al, byte [eax + ecx]
mov byte [esp + 0xf], al
jmp 0x4ad9be
test dword [esp + 0x2c], 0x100
jne 0x4ad9b7
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4ad9b7
test byte [eax + 4], 1
mov ecx, dword [esp + 0x8c]
je 0x4ad9be
add eax, 8
mov dword [esp + 0x30], eax
jmp 0x4ad9be
mov ecx, dword [esp + 0x8c]
movzx eax, word [edx + 0xc]
test al, 0x40
je 0x4ad9e9
mov dh, byte [edx + 0x16]
mov dword [esp + 0x4c], 1
mov dl, dh
mov byte [esp + 0xe], dh
mov byte [esp + 0x17], dl
test al, al
jns 0x4ad9e9
movzx eax, dh
mov al, byte [eax + ecx]
mov byte [esp + 0xe], al
mov edx, dword [esp + 0x24]
nop dword [eax]
test dword [esp + 0x40], 0x40000
mov edi, edx
je 0x4ada83
mov ecx, dword [esp + 0xd0]
mov edi, esi
cmp esi, ecx
jae 0x4ada83
mov edx, dword [esp + 0x70]
test edx, edx
je 0x4ada5d
cmp edi, ecx
jae 0x4ada7e
mov al, byte [edi]
cmp edx, 2
jne 0x4ada49
cmp al, 0xa
je 0x4ada3e
cmp al, 0xd
jne 0x4ada7e
lea eax, [ecx - 1]
cmp edi, eax
jae 0x4ada3e
cmp byte [edi + 1], 0xa
mov ecx, 2
je 0x4ada43
mov ecx, 1
mov dword [esp + 0x74], ecx
jmp 0x4ada87
cmp al, 0x85
ja 0x4ada7e
je 0x4ada3e
cmp al, 0xa
jb 0x4ada7e
cmp al, 0xc
jbe 0x4ada3e
cmp al, 0xd
je 0x4ada2c
jmp 0x4ada7e
mov eax, ecx
sub eax, ebx
cmp edi, eax
ja 0x4ada7e
mov eax, dword [esp + 0x18]
cmp byte [edi], al
jne 0x4ada7e
cmp ebx, 1
je 0x4ada83
mov al, byte [esp + 0x85]
cmp byte [edi + 1], al
je 0x4ada83
inc edi
cmp edi, ecx
jb 0x4ada15
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 8]
or ebx, dword [ebp + 0x14]
and ebx, 0x4000000
mov dword [esp + 0x10], ebx
jne 0x4adc30
cmp dword [esp + 0x38], 0
je 0x4adaf2
cmp esi, edi
jae 0x4adc30
mov cl, byte [esp + 0x16]
mov dl, byte [esp + 0xf]
cmp cl, dl
je 0x4adae0
nop dword [eax]
mov al, byte [esi]
cmp al, cl
je 0x4adc30
cmp al, dl
je 0x4adc30
inc esi
cmp esi, edi
jb 0x4adac0
jmp 0x4adc30
cmp byte [esi], cl
je 0x4adc30
inc esi
cmp esi, edi
jb 0x4adae0
jmp 0x4adc30
test dword [esp + 0x2c], 0x100
je 0x4adc00
mov eax, dword [esp + 0xcc]
add eax, dword [ebp + 0x10]
cmp esi, eax
jbe 0x4adc30
mov edx, dword [esp + 0x70]
cmp esi, edi
jae 0x4adb54
nop word [eax + eax]
test edx, edx
je 0x4adb9b
cmp esi, dword [esp + 0xcc]
jbe 0x4adbcd
movzx eax, byte [esi - 1]
cmp edx, 2
jne 0x4adb83
cmp eax, 0xa
je 0x4adbdb
cmp eax, 0xd
jne 0x4adbcd
mov dword [esp + 0x74], 1
cmp byte [esi - 1], 0xd
jne 0x4adc30
cmp edx, 1
je 0x4adb6c
cmp edx, 2
jne 0x4adc30
cmp esi, edi
jae 0x4adc30
cmp byte [esi], 0xa
jne 0x4adc30
inc esi
jmp 0x4adc30
cmp eax, 0x85
ja 0x4adbcd
je 0x4adb4c
cmp eax, 0xa
je 0x4adbdb
add eax, 0xfffffff5
cmp eax, 2
jbe 0x4adb4c
jmp 0x4adbcd
mov eax, dword [esp + 0xcc]
add eax, ecx
cmp esi, eax
jb 0x4adbcd
mov edx, dword [esp + 0x18]
mov eax, esi
sub eax, ecx
cmp byte [eax], dl
mov edx, dword [esp + 0x70]
jne 0x4adbcd
cmp ecx, 1
je 0x4adb54
mov dl, byte [esp + 0x85]
cmp byte [eax + 1], dl
mov edx, dword [esp + 0x70]
je 0x4adb54
inc esi
cmp esi, edi
jb 0x4adb20
jmp 0x4adb54
lea eax, [esi - 1]
cmp eax, dword [esp + 0xcc]
jbe 0x4adbf2
cmp byte [esi - 2], 0xd
mov eax, 2
je 0x4adbf7
mov eax, 1
mov dword [esp + 0x74], eax
jmp 0x4adb54
cmp dword [esp + 0x30], 0
je 0x4adc30
cmp esi, edi
jae 0x4adc30
mov ebx, dword [esp + 0x30]
nop
movzx edx, byte [esi]
mov eax, 1
mov ecx, edx
shr edx, 3
and ecx, 7
shl eax, cl
test byte [edx + ebx], al
jne 0x4adc2c
inc esi
cmp esi, edi
jb 0x4adc10
mov ebx, dword [esp + 0x10]
test ebx, ebx
jne 0x4adcd2
cmp dword [esp + 0xe0], ebx
jne 0x4adcd2
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x24]
test ecx, ecx
je 0x4adc64
test byte [ecx + 4], 2
je 0x4adc64
mov eax, edx
sub eax, esi
cmp eax, dword [ecx + 0x28]
jb 0x4add4f
cmp dword [esp + 0x4c], 0
je 0x4adcd2
mov eax, edx
sub eax, esi
cmp eax, 0x3e8
jge 0x4adcd2
mov eax, dword [esp + 0x38]
add eax, esi
cmp eax, dword [esp + 0x3c]
jbe 0x4adcd2
cmp eax, edx
jae 0x4add4f
mov ch, byte [esp + 0x17]
cmp ch, byte [esp + 0xe]
je 0x4adcb2
mov cl, byte [eax]
mov ebx, eax
inc eax
mov dword [esp + 0x3c], ebx
cmp cl, ch
je 0x4adcca
cmp cl, byte [esp + 0xe]
je 0x4adcca
cmp eax, edx
jb 0x4adc94
xor edi, edi
jmp 0x4aded8
mov cl, byte [eax]
mov ebx, eax
mov dword [esp + 0x3c], eax
inc eax
cmp cl, ch
je 0x4adcca
cmp eax, edx
jb 0x4adcb2
xor edi, edi
jmp 0x4aded8
cmp ebx, edx
jae 0x4add4f
mov edx, dword [esp + 0xc8]
lea eax, [esp + 0x58]
push 0
push 0
push eax
push 2
push esi
mov ecx, esi
mov dword [esp + 0xe8], esi
mov dword [esp + 0xf0], esi
mov dword [esp + 0x6c], 0
mov dword [esp + 0x104], 0
mov dword [esp + 0xf8], 0
call fcn.004a9230
add esp, 0x14
mov edi, eax
cmp dword [esp + 0xb8], 0
je 0x4add39
mov eax, dword [esp + 0x44]
test eax, eax
cmove eax, dword [esp + 0xdc]
mov dword [esp + 0x44], eax
cmp edi, 0xfffffc1d
jg 0x4add56
je 0x4add98
cmp edi, 0xfffffc1a
jne 0x4adecb
xor edi, edi
jmp 0x4aded8
cmp edi, 0xfffffc20
jg 0x4add90
je 0x4add98
cmp edi, 0xfffffc1e
je 0x4add83
cmp edi, 0xfffffc1f
jne 0x4adecb
mov ecx, esi
mov dword [esp + 0xc4], 1
jmp 0x4adda6
mov ecx, dword [esp + 0xd4]
cmp ecx, esi
je 0x4add98
jmp 0x4adda6
test edi, edi
jne 0x4adecb
mov dword [esp + 0xc4], 0
lea ecx, [esi + 1]
mov dl, byte [esp + 0x84]
xor edi, edi
test dword [esp + 0x40], 0x40000
mov ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], ebx
je 0x4ade63
test eax, eax
je 0x4ade31
mov edx, dword [esp + 0xd0]
cmp esi, edx
jae 0x4ade63
cmp dword [esp + 0x70], 2
mov al, byte [esi]
jne 0x4ade15
cmp al, 0xa
je 0x4adec1
cmp al, 0xd
jne 0x4ade5f
lea eax, [edx - 1]
cmp esi, eax
jae 0x4ade07
cmp byte [esi + 1], 0xa
mov eax, 2
je 0x4ade0c
mov eax, 1
mov dword [esp + 0x74], eax
jmp 0x4aded8
cmp al, 0x85
ja 0x4ade5f
je 0x4adec1
cmp al, 0xa
jb 0x4ade5f
cmp al, 0xc
jbe 0x4adec1
cmp al, 0xd
je 0x4addf5
jmp 0x4ade5f
mov eax, dword [esp + 0xd0]
sub eax, ebx
cmp esi, eax
ja 0x4ade5f
mov eax, dword [esp + 0x18]
cmp byte [esi], al
jne 0x4ade5f
cmp ebx, 1
je 0x4aded8
mov al, byte [esp + 0x85]
cmp byte [esi + 1], al
je 0x4aded8
mov eax, dword [esp + 0x70]
test byte [esp + 0x50], 0x10
mov esi, ecx
jne 0x4aded8
mov edx, dword [esp + 0x24]
cmp ecx, edx
ja 0x4aded8
cmp ecx, dword [esp + 0x114]
jbe 0x4adeb1
cmp byte [ecx - 1], 0xd
jne 0x4adeb1
cmp ecx, edx
jae 0x4adeb1
cmp byte [ecx], 0xa
jne 0x4adeb1
mov edi, dword [esp + 0x1c]
mov edx, 0x800
test word [edi + 0xc], dx
mov edx, dword [esp + 0x24]
jne 0x4adeb1
cmp eax, 1
je 0x4adeae
cmp eax, 2
je 0x4adeae
cmp ebx, 2
jne 0x4adeb1
lea esi, [ecx + 1]
mov dword [esp + 0x104], 0
jmp 0x4ad9f0
mov dword [esp + 0x74], 1
jmp 0x4aded8
cmp edi, 1
je 0x4adf4b
cmp edi, 0xfffffc19
je 0x4adf4b
cmp dword [esp + 0x48], 0
je 0x4adeeb
push dword [esp + 0x64]
call fcn.004b2343
add esp, 4
test edi, edi
je 0x4adefd
cmp edi, 0xfffffff4
je 0x4adefd
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4adf20
cmp dword [ebp + 0x1c], 1
jle 0x4adf19
mov ecx, dword [ebp + 0x18]
sub eax, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
mov dword [ecx + 4], eax
mov eax, 0xfffffff4
jmp 0x4adf23
or eax, 0xffffffff
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x4ae06b
test byte [ecx], 0x20
je 0x4ae06b
mov edx, dword [ecx + 0x18]
mov ecx, dword [esp + 0x108]
mov dword [edx], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [esp + 0x48], 0
mov edi, dword [esp + 0x54]
je 0x4adfa0
mov esi, dword [esp + 0x64]
cmp edi, 4
jl 0x4adf7a
lea eax, [edi*4 - 8]
push eax
lea eax, [esi + 8]
push eax
mov eax, dword [ebp + 0x18]
add eax, 8
push eax
call fcn.004b19e0
add esp, 0xc
mov eax, dword [esp + 0x94]
mov ecx, 1
cmp dword [esp + 0xe4], edi
push esi
cmovg eax, ecx
mov dword [esp + 0x98], eax
call fcn.004b2343
add esp, 4
cmp dword [esp + 0x94], 0
mov ecx, dword [esp + 0xe4]
je 0x4adfb9
cmp ecx, edi
jl 0x4adfb9
xor esi, esi
jmp 0x4adfc2
mov eax, ecx
cdq
sub eax, edx
mov esi, eax
sar esi, 1
mov eax, dword [esp + 0x1c]
movzx edi, word [eax + 0x10]
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 1
cmp eax, edi
jg 0x4ae00d
test edx, edx
je 0x4ae00d
lea eax, [edi*2 + 2]
cmp eax, dword [ebp + 0x1c]
lea edi, [edx + ecx*4]
mov ecx, dword [esp + 0x20]
cmovle ecx, eax
xor ebx, ebx
lea eax, [edx + ecx*4]
mov ecx, eax
sub ecx, edi
add ecx, 3
shr ecx, 2
cmp edi, eax
cmova ecx, ebx
test ecx, ecx
je 0x4ae00d
or eax, 0xffffffff
rep stosd dword es:[edi], eax
cmp dword [ebp + 0x1c], 2
jge 0x4ae017
xor esi, esi
jmp 0x4ae038
mov eax, dword [esp + 0xd4]
sub eax, dword [esp + 0xcc]
mov dword [edx], eax
mov eax, dword [esp + 0xd8]
sub eax, dword [esp + 0xcc]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4ae051
test byte [eax], 0x20
je 0x4ae051
mov edx, dword [eax + 0x18]
mov ecx, dword [esp + 0x104]
mov dword [edx], ecx
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xffffffe8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret