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

Disassembly:
mov eax, 0x5148
call fcn.00450100
push ebx
mov ebx, dword [esp + 0x5154]
push ebp
push esi
mov esi, dword [esp + 0x5164]
push edi
xor edi, edi
lea ecx, [esp + 0x158]
lea ebp, [ebx + esi]
mov dword [esp + 0x40], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x24], edi
lea eax, [ebp - 1]
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x5164]
cmp eax, 0xffffffff
mov byte [esp + 0x1c], 0
mov byte [esp + 0x18], 0
mov byte [esp + 0x28], 0
mov byte [esp + 0x20], 0
mov dword [esp + 0x114], ebp
mov dword [esp + 0x74], ecx
jne 0x5cda92
push ebx
call fcn.005d4880
add esp, 4
mov dword [esp + 0x5164], eax
mov dword [esp + 0x40], 1
lea edx, [ebx + eax]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x516c]
test edx, 0x1fff9fc0
je 0x5cdab8
pop edi
pop esi
pop ebp
mov eax, 0xffffffde
pop ebx
add esp, 0x5148
ret
mov ecx, dword [esp + 0x515c]
cmp ecx, edi
je 0x5ce79d
cmp ebx, edi
je 0x5ce79d
mov edi, dword [esp + 0x5170]
test edi, edi
je 0x5ce79d
cmp esi, eax
jbe 0x5cdaf2
pop edi
pop esi
pop ebp
mov eax, 0xffffffdf
pop ebx
add esp, 0x5148
ret
cmp dword [ecx + 0x38], 0x50435245
je 0x5cdb0b
pop edi
pop esi
pop ebp
mov eax, 0xffffffe1
pop ebx
add esp, 0x5148
ret
mov eax, dword [ecx + 0x48]
mov ecx, eax
and ecx, 7
cmp cl, 1
je 0x5cdb28
pop edi
pop esi
pop ebp
mov eax, 0xffffffe0
pop ebx
add esp, 0x5148
ret
shr eax, 0xe
and eax, 0xc
or edx, eax
test dl, 0x20
mov dword [esp + 0x516c], edx
je 0x5cdb43
mov eax, 2
jmp 0x5cdb4b
mov eax, edx
shr eax, 4
and eax, 1
test ax, ax
mov word [esp + 0xa8], ax
je 0x5cdb7c
mov eax, dword [esp + 0x515c]
mov ecx, dword [eax + 0x40]
or ecx, edx
test ecx, 0x20000000
je 0x5cdb7c
pop edi
pop esi
pop ebp
mov eax, 0xffffffde
pop ebx
add esp, 0x5148
ret
mov esi, dword [esp + 0x5174]
test esi, esi
je 0x5cdbad
cmp dword [esi + 0x1c], 0xffffffff
je 0x5cdbad
mov eax, dword [esp + 0x515c]
test dword [eax + 0x40], 0x800000
jne 0x5cdbad
pop edi
pop esi
pop ebp
mov eax, 0xffffffc8
pop ebx
add esp, 0x5148
ret
test byte [edi + 0x25], 1
je 0x5cdbd0
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0x10]
push ecx
push edx
call dword [edi + 4]
mov al, byte [edi + 0x25]
mov edx, dword [esp + 0x5174]
add esp, 8
and al, 0xfe
mov byte [edi + 0x25], al
xor eax, eax
mov dword [esp + 0xbc], ebx
cmp esi, eax
mov dword [edi + 0x10], eax
mov dword [edi + 0x20], eax
jne 0x5cdc05
mov eax, dword [esp + 0x515c]
mov esi, 0x729e60
mov edi, dword [eax]
mov dword [esp + 0x5c], edi
mov ecx, dword [eax + 4]
mov dword [esp + 0x60], ecx
mov eax, dword [eax + 8]
mov dword [esp + 0x64], eax
jmp 0x5cdc1b
mov ecx, esi
mov edi, dword [ecx]
mov dword [esp + 0x5c], edi
mov eax, dword [ecx + 4]
mov dword [esp + 0x60], eax
mov ecx, dword [ecx + 8]
mov dword [esp + 0x64], ecx
mov eax, dword [esp + 0x515c]
mov eax, dword [eax + 0x40]
mov ecx, eax
or ecx, edx
shr ecx, 0x1f
mov dword [esp + 0x2c], ecx
mov ecx, eax
shr ecx, 8
and ecx, 1
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x515c]
mov ecx, dword [ecx + 0x48]
mov edx, ecx
shr edx, 9
and edx, 1
mov dword [esp + 0x3c], edx
mov edx, dword [esi + 0x1c]
cmp edx, 0xffffffff
jne 0x5cdc60
mov edx, dword [esp + 0x10]
jmp 0x5cdc62
add edx, ebx
mov dword [esp + 0x50], edx
lea edx, [esp + 0x118]
mov dword [esp + 0x100], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x130], ebx
mov ebx, edx
sub ebx, dword [esp + 0x5160]
mov dword [esp + 0xc0], edx
mov edx, ecx
mov dword [esp + 0x118], 2
mov dword [esp + 0x134], ebx
mov ebx, dword [esi + 0xc]
mov dword [esp + 0x108], ebx
mov ebx, dword [esi + 0x10]
shr edx, 0xc
and edx, 1
mov dword [esp + 0x104], ebx
mov ebx, dword [esp + 0x5160]
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x515c]
mov dword [esp + 0xb8], ebx
mov ebx, dword [esp + 0x5168]
mov dword [esp + 0x154], 0
cmp word [edx + 0x64], 0
mov dword [esp + 0xa0], ebx
ja 0x5cdd02
test ch, 0x20
jne 0x5cdd02
xor ecx, ecx
jmp 0x5cdd07
mov ecx, 1
mov ebx, dword [esp + 0x515c]
mov dword [esp + 0xe8], eax
xor eax, eax
mov dword [esp + 0x90], ecx
mov cx, word [ebx + 0x6e]
mov dword [esp + 0xf0], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd0], eax
mov ax, word [ebx + 0x6c]
mov word [esp + 0xac], cx
mov word [esp + 0xae], ax
and eax, 0xffff
and ecx, 0xffff
lea edx, [ebx + 0x70]
imul eax, ecx
add eax, edx
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb4], eax
mov ax, word [ebx + 0x60]
mov word [esp + 0xaa], ax
xor eax, eax
mov ax, word [ebx + 0x62]
mov dword [esp + 0xf4], 0
dec eax
cmp eax, 5
ja case.default.0x5cdd93
jmp dword [eax*4 + 0x5ce7b0]
mov dword [esp + 0xf8], 1
mov byte [esp + 0xfc], 0xd
jmp 0x5cde0e
mov dword [esp + 0xf8], 1
mov byte [esp + 0xfc], 0xa
jmp 0x5cde0e
mov dword [esp + 0xf8], 1
mov byte [esp + 0xfc], 0
jmp 0x5cde0e
mov dword [esp + 0xf8], 2
mov byte [esp + 0xfc], 0xd
mov byte [esp + 0xfd], 0xa
jmp 0x5cde0e
mov dword [esp + 0xf4], 1
jmp 0x5cde0e
mov dword [esp + 0xf4], 2
mov eax, dword [esi + 0x20]
xor ecx, ecx
mov cx, word [ebx + 0x68]
lea edx, [ecx*8 + 0x54]
mov ecx, dword [ebx + 0x4c]
cmp eax, ecx
mov dword [esp + 0x48], edx
jb 0x5cde2b
mov eax, ecx
mov ecx, dword [ebx + 0x50]
mov edx, eax
mov eax, dword [esi + 0x24]
mov dword [esp + 0x78], edx
cmp eax, ecx
jb 0x5cde3d
mov eax, ecx
mov esi, dword [esi + 0x28]
mov dword [esp + 0x7c], eax
mov eax, dword [ebx + 0x54]
cmp esi, eax
jae 0x5cde4d
mov eax, esi
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x80], eax
cmp ecx, 0x800
ja 0x5cde7a
mov eax, 0x5000
xor edx, edx
div ecx
mov esi, dword [esp + 0x74]
mov dword [esp + 0x6c], esi
imul eax, ecx
mov dword [esp + 0x68], eax
jmp 0x5cded9
lea eax, [ecx + ecx*4]
shl eax, 1
mov esi, eax
mov dword [esp + 0x68], eax
shr esi, 0xa
cmp esi, edx
jbe 0x5cdeb0
shl edx, 0xa
mov eax, edx
cmp ecx, eax
jbe 0x5cdea5
pop edi
pop esi
pop ebp
mov eax, 0xffffffc1
pop ebx
add esp, 0x5148
ret
xor edx, edx
div ecx
imul eax, ecx
mov dword [esp + 0x68], eax
mov ecx, dword [esp + 0x64]
push ecx
push eax
call edi
mov esi, eax
add esp, 8
test esi, esi
mov dword [esp + 0x6c], esi
jne 0x5cded5
pop edi
pop esi
pop ebp
mov eax, 0xffffffd0
pop ebx
add esp, 0x5148
ret
mov eax, dword [esp + 0x68]
xor ecx, ecx
add eax, esi
mov cx, word [ebx + 0x68]
mov dword [esp + 0x70], eax
shl ecx, 3
mov edx, ecx
or eax, 0xffffffff
lea edi, [esi + 0x54]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x94], eax
lea ecx, [eax + 0x100]
add eax, 0x340
mov dword [esp + 0x9c], eax
mov eax, dword [ebx + 0x48]
test al, 0x10
mov dword [esp + 0x98], ecx
je 0x5cdf50
mov dl, byte [ebx + 0x58]
mov dword [esp + 0x24], 1
test al, 0x20
mov byte [esp + 0x18], dl
mov byte [esp + 0x1c], dl
je 0x5cdf63
mov edx, dword [esp + 0x18]
and edx, 0xff
mov dl, byte [edx + ecx]
mov byte [esp + 0x18], dl
jmp 0x5cdf63
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x5cdf63
test al, 0x40
je 0x5cdf63
lea edx, [ebx + 0x14]
mov dword [esp + 0x14], edx
test al, 0x80
je 0x5cdf8f
mov bl, byte [ebx + 0x5c]
mov dword [esp + 0x54], 1
test ah, 1
mov byte [esp + 0x20], bl
mov byte [esp + 0x28], bl
je 0x5cdf8f
mov eax, dword [esp + 0x20]
and eax, 0xff
mov cl, byte [eax + ecx]
mov byte [esp + 0x20], cl
mov edx, dword [esp + 0xf8]
mov esi, dword [esp + 0xf4]
mov ebx, dword [esp + 0x5170]
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x515c]
test dword [eax + 0x40], 0x10000
jne 0x5ce3fa
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x5ce04e
mov eax, dword [esp + 0x10]
mov edi, ebp
cmp ebp, eax
jae 0x5ce04a
mov eax, dword [esp + 0xc0]
test esi, esi
je 0x5ce01b
cmp edi, eax
jae 0x5ce041
lea ecx, [esp + 0xf8]
push 0
push ecx
push eax
push esi
push edi
call fcn.005d48a0
mov edx, dword [esp + 0x10c]
add esp, 0x14
test eax, eax
jne 0x5ce04a
mov esi, dword [esp + 0xf4]
jmp 0x5ce041
sub eax, edx
cmp edi, eax
ja 0x5ce041
mov cl, byte [esp + 0xfc]
mov al, byte [edi]
cmp al, cl
jne 0x5ce041
cmp edx, 1
je 0x5ce04a
mov al, byte [esp + 0xfd]
mov cl, byte [edi + 1]
cmp cl, al
je 0x5ce04a
mov eax, dword [esp + 0x10]
inc edi
cmp edi, eax
jb 0x5cdfe3
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x5ce0ed
mov ecx, dword [esp + 0x24]
test ecx, ecx
jne 0x5ce06e
mov eax, dword [esp + 0x14]
test eax, eax
je 0x5ce2af
cmp ebp, dword [esp + 0x10]
sbb edx, edx
neg edx
mov dword [esp + 0x110], edx
je case.0x5ce4c7.997
mov al, byte [ebp]
test ecx, ecx
mov byte [esp + 0x10c], al
je 0x5ce0a5
cmp al, byte [esp + 0x1c]
je 0x5ce2af
cmp al, byte [esp + 0x18]
je 0x5ce2af
mov eax, dword [esp + 0x14]
test eax, eax
je case.0x5ce4c7.997
mov eax, dword [esp + 0x10c]
mov edx, 1
and eax, 0xff
mov ecx, eax
and ecx, 7
shl edx, cl
mov ecx, dword [esp + 0x14]
shr eax, 3
mov al, byte [eax + ecx]
and dl, al
neg dl
sbb edx, edx
neg edx
mov dword [esp + 0x110], edx
je case.0x5ce4c7.997
jmp 0x5ce30d
mov eax, dword [esp + 0x24]
test eax, eax
je 0x5ce1f9
mov cl, byte [esp + 0x18]
mov al, byte [esp + 0x1c]
cmp al, cl
je 0x5ce1b1
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
xor esi, esi
xor ebx, ebx
sub eax, ebp
test ecx, ecx
mov edi, eax
jne 0x5ce146
mov edx, dword [esp + 0x1c]
push eax
and edx, 0xff
push edx
push ebp
call fcn.006fb3a0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x5ce142
mov dword [esp + 0x44], 1
jmp 0x5ce146
mov edi, esi
sub edi, ebp
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x5ce17e
mov eax, dword [esp + 0x18]
push edi
and eax, 0xff
push eax
push ebp
call fcn.006fb3a0
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x5ce176
test esi, esi
jne 0x5ce176
mov dword [esp + 0x34], 1
jmp 0x5ce182
mov dword [esp + 0x34], 0
test esi, esi
jne 0x5ce193
test ebx, ebx
jne 0x5ce19b
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0x5170]
jmp 0x5ce1d6
test ebx, ebx
je 0x5ce1a6
cmp esi, ebx
jb 0x5ce1a6
mov ebp, ebx
mov ebx, dword [esp + 0x5170]
jmp 0x5ce1d6
mov ebx, dword [esp + 0x5170]
mov ebp, esi
jmp 0x5ce1d6
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, esi
and edx, 0xff
sub ecx, ebp
push ecx
push edx
push ebp
call fcn.006fb3a0
mov ebp, eax
add esp, 0xc
test ebp, ebp
jne 0x5ce1d6
mov ebp, esi
cmp word [esp + 0xa8], 0
jne 0x5ce30d
mov edi, dword [esp + 0xc0]
cmp ebp, edi
jae case.0x5ce4c7.997
jmp 0x5ce314
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x5ce2bf
mov ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0x5168]
add eax, ecx
cmp ebp, eax
jbe 0x5ce2af
cmp ebp, dword [esp + 0x10]
jae 0x5ce28b
mov eax, dword [esp + 0xf4]
test eax, eax
je 0x5ce25b
cmp ebp, ecx
jbe 0x5ce282
lea edx, [esp + 0xf8]
push 0
push edx
push ecx
push eax
push ebp
call fcn.005d4970
add esp, 0x14
test eax, eax
jne 0x5ce28b
mov edx, dword [esp + 0xf8]
mov ecx, dword [esp + 0xb8]
jmp 0x5ce282
lea eax, [edx + ecx]
cmp ebp, eax
jb 0x5ce282
mov bl, byte [esp + 0xfc]
mov eax, ebp
sub eax, edx
cmp byte [eax], bl
jne 0x5ce282
cmp edx, 1
je 0x5ce28b
mov bl, byte [esp + 0xfd]
cmp byte [eax + 1], bl
je 0x5ce28b
mov eax, dword [esp + 0x10]
inc ebp
cmp ebp, eax
jb 0x5ce223
cmp byte [ebp - 1], 0xd
jne 0x5ce2af
mov eax, dword [esp + 0xf4]
cmp eax, 1
je 0x5ce2a2
cmp eax, 2
jne 0x5ce2af
cmp ebp, dword [esp + 0x10]
jae 0x5ce2af
cmp byte [ebp], 0xa
jne 0x5ce2af
inc ebp
mov edi, dword [esp + 0xc0]
mov ebx, dword [esp + 0x5170]
jmp 0x5ce314
mov eax, dword [esp + 0x14]
test eax, eax
je 0x5ce2af
cmp ebp, dword [esp + 0x10]
jae 0x5ce2f5
xor eax, eax
mov edx, 1
mov al, byte [ebp]
mov ecx, eax
and ecx, 7
shl edx, cl
mov ecx, dword [esp + 0x14]
shr eax, 3
mov al, byte [eax + ecx]
test al, dl
jne 0x5ce2f5
mov eax, dword [esp + 0x10]
inc ebp
cmp ebp, eax
jb 0x5ce2cd
cmp word [esp + 0xa8], 0
jne 0x5ce30d
cmp ebp, dword [esp + 0xc0]
jae case.0x5ce4c7.997
mov edi, dword [esp + 0xc0]
cmp word [esp + 0xa8], 0
mov dword [esp + 0x10], edi
jne 0x5ce3fa
mov eax, dword [esp + 0x515c]
mov ecx, edi
xor edx, edx
sub ecx, ebp
mov dx, word [eax + 0x66]
cmp ecx, edx
jl case.0x5ce4c7.997
mov edx, dword [esp + 0x24]
xor eax, eax
test edx, edx
mov edx, dword [esp + 0x54]
setne al
add eax, ebp
test edx, edx
je 0x5ce3fa
cmp eax, dword [esp + 0x58]
jbe 0x5ce3fa
cmp ecx, 0x1388
jb 0x5ce37f
mov edx, dword [esp + 0x2c]
test edx, edx
jne 0x5ce3fa
cmp ecx, fcn.004c4b40
jae 0x5ce3fa
mov cl, byte [esp + 0x20]
mov dl, byte [esp + 0x28]
cmp dl, cl
je 0x5ce3cd
mov edx, dword [esp + 0x28]
sub edi, eax
and edx, 0xff
push edi
push edx
push eax
mov esi, eax
call fcn.006fb3a0
add esp, 0xc
test eax, eax
jne 0x5ce3ec
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
sub eax, esi
and ecx, 0xff
push eax
push ecx
push esi
call fcn.006fb3a0
add esp, 0xc
test eax, eax
je case.0x5ce4c7.997
jmp 0x5ce3ec
mov edx, dword [esp + 0x28]
sub edi, eax
and edx, 0xff
push edi
push edx
push eax
call fcn.006fb3a0
add esp, 0xc
test eax, eax
je case.0x5ce4c7.997
cmp eax, dword [esp + 0x10]
jae case.0x5ce4c7.997
mov dword [esp + 0x58], eax
cmp ebp, dword [esp + 0x50]
ja case.0x5ce4c7.997
mov ecx, dword [esp + 0x5160]
mov eax, ebp
mov edi, dword [esp + 0x154]
sub eax, ecx
mov ecx, dword [esp + 0x516c]
mov dword [esp + 0x138], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0x515c]
lea edx, [esp + 0x5c]
push edx
push eax
mov dx, word [ecx + 0x68]
mov ax, word [ebx + 0x26]
or edi, 1
push edx
mov edx, dword [esp + 0xc0]
lea ecx, [ebx + 0x2c]
push eax
mov dword [esp + 0x164], edi
push ecx
xor edi, edi
push edx
push ebp
mov dword [esp + 0xe4], ebp
mov dword [esp + 0xe8], ebp
mov dword [esp + 0xa0], edi
mov dword [esp + 0xc0], edi
mov dword [esp + 0x108], edi
call fcn.005ce7e0
mov esi, eax
mov eax, dword [esp + 0xa4]
add esp, 0x1c
cmp eax, edi
je 0x5ce4ac
cmp dword [esp + 0x38], edi
jne 0x5ce4ac
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x38], eax
cmp esi, edi
jg case.default.0x5ce4c7
test esi, esi
je case.0x5ce4c7.996
lea eax, [esi + 0x3e5]
cmp eax, 4
ja case.default.0x5ce4c7
jmp dword [eax*4 + 0x5ce7c8]
mov ecx, dword [esp + 0xec]
mov edi, ebp
mov dword [esp + 0xf0], ecx
jmp 0x5ce4fd
mov eax, dword [esp + 0xdc]
cmp eax, ebp
jbe case.0x5ce4c7.996
mov edi, eax
jmp 0x5ce4fd
mov dword [esp + 0xf0], 0
lea edi, [ebp + 1]
mov eax, dword [esp + 0x4c]
xor esi, esi
test eax, eax
je 0x5ce544
mov eax, dword [esp + 0xf4]
test eax, eax
je 0x5ce5bc
mov eax, dword [esp + 0xc0]
cmp ebp, eax
jae 0x5ce544
lea edx, [esp + 0xf8]
push esi
push edx
push eax
mov eax, dword [esp + 0x100]
push eax
push ebp
call fcn.005d48a0
add esp, 0x14
test eax, eax
jne case.default.0x5ce4c7
mov edx, dword [esp + 0xf8]
mov eax, dword [esp + 0x2c]
mov ebp, edi
test eax, eax
jne case.default.0x5ce4c7
mov eax, dword [esp + 0x10]
cmp edi, eax
ja case.default.0x5ce4c7
cmp edi, dword [esp + 0x114]
jbe 0x5ce5a5
cmp byte [edi - 1], 0xd
jne 0x5ce5a5
cmp edi, eax
jae 0x5ce5a5
cmp byte [edi], 0xa
jne 0x5ce5a5
mov eax, dword [esp + 0x515c]
mov ecx, dword [eax + 0x48]
test ch, 8
jne 0x5ce5a5
mov eax, dword [esp + 0xf4]
cmp eax, 1
je 0x5ce5a2
cmp eax, 2
je 0x5ce5a2
cmp edx, 2
jne 0x5ce5a5
lea ebp, [edi + 1]
mov esi, dword [esp + 0xf4]
mov dword [esp + 0xd0], 0
jmp 0x5cdfbd
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xf8]
sub ecx, edx
cmp ebp, ecx
ja 0x5ce54b
mov al, byte [ebp]
mov cl, byte [esp + 0xfc]
cmp al, cl
jne 0x5ce54b
cmp edx, 1
je case.default.0x5ce4c7
mov cl, byte [ebp + 1]
mov al, byte [esp + 0xfd]
cmp cl, al
je case.default.0x5ce4c7
jmp 0x5ce54b
xor esi, esi
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x74]
cmp eax, ecx
je 0x5ce619
mov ecx, dword [esp + 0x64]
push ecx
push eax
call dword [esp + 0x68]
add esp, 8
mov edx, dword [esp + 0x515c]
mov eax, dword [esp + 0xd0]
cmp esi, 1
mov dword [ebx + 0xc], edx
mov dword [ebx + 0x14], eax
mov byte [ebx + 0x24], 0
jne 0x5ce711
mov eax, dword [esp + 0xa4]
xor ecx, ecx
mov cx, word [ebx + 0x26]
shl ecx, 1
cmp eax, ecx
jl 0x5ce651
xor eax, eax
jmp 0x5ce657
cdq
sub eax, edx
sar eax, 1
inc eax
mov edx, dword [esp + 0x5160]
mov ecx, dword [esp + 0xc4]
mov dword [ebx + 0x28], eax
mov eax, dword [esp + 0xc8]
sub eax, edx
sub ebp, edx
mov dword [ebx + 0x18], eax
mov eax, dword [esp + 0xcc]
cmp eax, ecx
mov dword [ebx + 0x20], ebp
ja 0x5ce686
mov eax, ecx
sub eax, edx
mov dword [ebx + 0x1c], eax
mov eax, dword [esp + 0x516c]
test ah, 0x40
je 0x5ce700
mov eax, dword [esp + 0x5164]
mov ebp, dword [esp + 0x40]
mov edx, dword [ebx + 8]
add eax, ebp
push edx
push eax
mov dword [esp + 0x516c], eax
call dword [ebx]
add esp, 8
mov dword [ebx + 0x10], eax
test eax, eax
jne 0x5ce6cc
pop edi
pop esi
pop ebp
mov eax, 0xffffffd0
pop ebx
add esp, 0x5148
ret
mov ecx, dword [esp + 0x5164]
mov esi, dword [esp + 0x5160]
mov edi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov al, byte [ebx + 0x25]
pop edi
or al, 1
pop esi
mov byte [ebx + 0x25], al
mov eax, dword [ebx + 0x28]
pop ebp
pop ebx
add esp, 0x5148
ret
mov eax, dword [ebx + 0x28]
pop edi
pop esi
mov dword [ebx + 0x10], edx
pop ebp
pop ebx
add esp, 0x5148
ret
mov ecx, dword [esp + 0xd4]
test esi, esi
mov dword [ebx + 0x14], ecx
je 0x5ce734
cmp esi, 0xfffffffe
je 0x5ce734
mov dword [ebx + 0x28], esi
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5148
ret
mov eax, dword [esp + 0x30]
test eax, eax
je 0x5ce778
mov edx, dword [esp + 0x5160]
mov ecx, dword [esp + 0x10]
sub eax, edx
sub ecx, edx
mov dword [ebx + 0x2c], eax
mov dword [ebx + 0x20], eax
mov eax, dword [esp + 0x38]
pop edi
sub eax, edx
mov dword [ebx + 0x28], 0xfffffffe
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x28]
pop esi
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x30], ecx
mov dword [ebx + 0x1c], ecx
pop ebp
pop ebx
add esp, 0x5148
ret
pop edi
mov dword [ebx + 0x28], 0xffffffff
mov eax, dword [ebx + 0x28]
pop esi
pop ebp
pop ebx
add esp, 0x5148
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffd4
pop ebx
add esp, 0x5148
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffcd
pop ebx
add esp, 0x5148
ret