Function at 0xe56870
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push esi
mov esi, ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x18], esi
push edi
test esi, esi
je 0xe57472
cmp dword [esi + 0x20], 0
je 0xe57472
cmp dword [esi + 0x24], 0
je 0xe57472
mov edi, dword [esi + 0x1c]
test edi, edi
je 0xe57472
cmp dword [edi], esi
jne 0xe57472
mov eax, dword [edi + 4]
cmp eax, 0x2a
je 0xe568e0
cmp eax, 0x39
je 0xe568e0
cmp eax, 0x45
je 0xe568e0
cmp eax, 0x49
je 0xe568e0
cmp eax, 0x5b
je 0xe568e0
cmp eax, 0x67
je 0xe568e0
cmp eax, 0x71
je 0xe568e0
cmp eax, 0x29a
jne 0xe57472
cmp dword [esi + 0xc], 0
je 0xe5746b
cmp dword [esi + 4], 0
je 0xe568f9
cmp dword [esi], 0
je 0xe5746b
cmp eax, 0x29a
jne 0xe56909
cmp edx, 4
jne 0xe5746b
cmp dword [esi + 0x10], 0
push ebx
je 0xe569ab
cmp dword [edi + 0x14], 0
mov ecx, dword [edi + 0x28]
mov dword [edi + 0x28], edx
je 0xe56974
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x14], ebx
call fcn.00e5c970
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0xe56968
mov eax, dword [ebp - 0x14]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov ecx, dword [ebp - 0x14]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0xe56968
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0xe5745b
jmp 0xe56997
cmp dword [esi + 4], 0
jne 0xe56997
xor eax, eax
mov ebx, 9
cmp ecx, 4
cmovg eax, ebx
add ecx, ecx
sub ecx, eax
lea eax, [edx + edx]
cmp eax, ecx
jg 0xe56997
cmp edx, 4
jne 0xe569ab
mov eax, dword [edi + 4]
cmp eax, 0x29a
jne 0xe569be
cmp dword [esi + 4], 0
je 0xe56b13
pop ebx
pop edi
mov dword [esi + 0x18], 0x962a48
mov eax, 0xfffffffb
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 0x2a
jne 0xe56b13
mov ecx, dword [edi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [edi + 0x88], 2
mov ebx, ecx
jge 0xe56a0e
mov eax, dword [edi + 0x84]
cmp eax, 2
jl 0xe56a0e
cmp eax, 6
jge 0xe569f8
mov eax, 0x40
lea edx, [eax + 0x20]
jmp 0xe56a13
jne 0xe56a04
mov eax, pe_nt_image_headers32
lea edx, [eax + 0x20]
jmp 0xe56a13
mov eax, 0xc0
lea edx, [eax + 0x20]
jmp 0xe56a13
xor eax, eax
lea edx, [eax + 0x20]
or ecx, eax
cmp dword [edi + 0x6c], 0
je 0xe56a1f
mov ecx, ebx
or ecx, edx
mov eax, 0x8421085
mul ecx
lea eax, [edi + 8]
sub ecx, edx
mov dword [ebp - 4], eax
mov eax, dword [eax]
shr ecx, 1
add ecx, edx
shr ecx, 4
inc ecx
mov ebx, ecx
shl ebx, 5
sub ebx, ecx
mov ecx, dword [edi + 0x14]
mov edx, ebx
shr edx, 8
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
cmp dword [edi + 0x6c], 0
je 0xe56aa4
movzx edx, word [esi + 0x32]
mov esi, dword [edi + 0x14]
mov ecx, edx
mov eax, dword [edi + 8]
shr ecx, 8
mov byte [esi + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov esi, dword [ebp - 0x18]
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
movzx ebx, word [esi + 0x30]
mov edx, dword [edi + 0x14]
mov ecx, ebx
mov eax, dword [edi + 8]
shr ecx, 8
mov byte [edx + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
push 0
xor edx, edx
xor ecx, ecx
call fcn.00e55ec0
mov dword [esi + 0x30], eax
add esp, 4
mov dword [edi + 4], 0x71
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x14], ebx
call fcn.00e5c970
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0xe56b04
mov eax, dword [ebp - 0x14]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov ecx, dword [ebp - 0x14]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0xe56b04
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0xe5745b
lea ebx, [edi + 8]
jmp 0xe56b19
lea ebx, [edi + 8]
mov dword [ebp - 4], ebx
cmp dword [edi + 4], 0x39
jne 0xe56d5e
mov dword [esi + 0x30], 0
lea ebx, [edi + 8]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov dword [ebp - 4], ebx
mov byte [ecx + eax], 0x1f
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov byte [ecx + eax], 0x8b
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov byte [ecx + eax], 8
inc dword [edi + 0x14]
mov edx, dword [edi + 0x1c]
mov ecx, dword [edi + 0x14]
test edx, edx
jne 0xe56c37
mov eax, dword [ebx]
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
inc ecx
mov dword [edi + 0x14], ecx
mov byte [ecx + eax], dl
inc dword [edi + 0x14]
mov eax, dword [edi + 0x84]
mov edx, dword [edi + 0x14]
cmp eax, 9
jne 0xe56bac
mov cl, 2
jmp 0xe56bc0
cmp dword [edi + 0x88], 2
jge 0xe56bbe
cmp eax, 2
jl 0xe56bbe
xor cl, cl
jmp 0xe56bc0
mov cl, 4
mov eax, dword [ebx]
mov byte [edx + eax], cl
inc dword [edi + 0x14]
mov ecx, dword [edi + 0x14]
mov eax, dword [ebx]
mov byte [ecx + eax], 0xa
inc dword [edi + 0x14]
mov dword [edi + 4], 0x71
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x14], eax
call fcn.00e5c970
mov edx, dword [ebp - 0x14]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x1c], ecx
test ecx, ecx
je 0xe56c28
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0xe56c28
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0xe5745b
jmp 0xe56d5e
mov ecx, dword [edx + 0x2c]
mov eax, dword [edx + 0x10]
neg ecx
sbb cl, cl
and cl, 2
neg eax
sbb al, al
and al, 4
add cl, al
mov eax, dword [edx + 0x1c]
neg eax
sbb al, al
and al, 8
add cl, al
mov eax, dword [edx + 0x24]
neg eax
sbb al, al
and al, 0x10
add cl, al
cmp dword [edx], 0
mov edx, dword [edi + 0x14]
setne al
add cl, al
mov eax, dword [ebx]
mov byte [edx + eax], cl
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 4]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 5]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 6]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
inc edx
mov ecx, dword [ebx]
mov dword [edi + 0x14], edx
movzx eax, byte [eax + 7]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov eax, dword [edi + 0x84]
mov edx, dword [edi + 0x14]
cmp eax, 9
jne 0xe56cd3
mov cl, 2
jmp 0xe56ce7
cmp dword [edi + 0x88], 2
jge 0xe56ce5
cmp eax, 2
jl 0xe56ce5
xor cl, cl
jmp 0xe56ce7
mov cl, 4
mov eax, dword [ebx]
mov byte [edx + eax], cl
inc dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov eax, dword [edi + 0x1c]
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
cmp dword [eax + 0x10], 0
je 0xe56d2d
mov ecx, dword [ebx]
movzx eax, byte [eax + 0x14]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [eax + 0x15]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0xe56d4d
mov eax, dword [ebx]
test eax, eax
je 0xe56d4a
mov ecx, dword [esi + 0x30]
push edx
mov edx, eax
call fcn.00e56140
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov dword [edi + 4], 0x45
mov dword [ebp - 4], ebx
mov edx, dword [edi + 4]
cmp edx, 0x45
jne 0xe56ecf
mov edx, dword [edi + 0x1c]
lea ecx, [edi + 0x1c]
mov dword [ebp - 8], ecx
cmp dword [edx + 0x10], 0
je 0xe56ec1
movzx ecx, word [edx + 0x14]
sub ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x14]
mov edx, eax
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0xc], ecx
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0x14], eax
add eax, dword [ebp - 0xc]
cmp eax, ecx
jbe 0xe56e65
mov eax, dword [edi + 0x1c]
sub ecx, edx
push ecx
mov dword [ebp - 0x1c], ecx
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ebx]
add eax, edx
push eax
call fcn.00eb31e0
mov eax, dword [edi + 0x1c]
add esp, 0xc
mov ecx, dword [edi + 0xc]
mov dword [edi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0xe56dee
mov eax, dword [ebp - 0x14]
cmp ecx, eax
jbe 0xe56dee
mov edx, dword [ebx]
sub ecx, eax
add edx, eax
jne 0xe56ddf
xor eax, eax
jmp 0xe56deb
push ecx
mov ecx, dword [esi + 0x30]
call fcn.00e56140
add esp, 4
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0x1c]
add dword [edi + 0x20], eax
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x18], eax
call fcn.00e5c970
mov edx, dword [ebp - 0x18]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x14], ecx
test ecx, ecx
je 0xe56e41
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov eax, dword [ebp - 0x14]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0xe56e41
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov edx, dword [edi + 0x14]
test edx, edx
jne 0xe5745b
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x1c]
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0xc], eax
add eax, edx
mov dword [ebp - 0x14], edx
cmp eax, ecx
ja 0xe56da0
mov eax, dword [edi + 0x1c]
push dword [ebp - 0xc]
mov eax, dword [eax + 0x10]
add eax, dword [edi + 0x20]
push eax
mov eax, dword [ebx]
add eax, edx
push eax
call fcn.00eb31e0
mov eax, dword [ebp - 0xc]
lea ecx, [edi + 0x1c]
add dword [edi + 0x14], eax
add esp, 0xc
mov eax, dword [ecx]
mov edx, dword [edi + 0x14]
cmp dword [eax + 0x2c], 0
je 0xe56eba
mov eax, dword [ebp - 0x14]
cmp edx, eax
jbe 0xe56eba
mov ebx, dword [ebx]
sub edx, eax
add ebx, eax
jne 0xe56ea6
xor eax, eax
jmp 0xe56eb7
mov ecx, dword [esi + 0x30]
push edx
mov edx, ebx
call fcn.00e56140
add esp, 4
lea ecx, [edi + 0x1c]
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov eax, ecx
mov dword [edi + 4], 0x49
mov dword [ebp - 0x14], eax
jmp 0xe56ee3
lea eax, [edi + 0x1c]
mov dword [ebp - 0x14], eax
mov ecx, eax
mov dword [ebp - 8], ecx
cmp edx, 0x49
jne 0xe56ffd
mov eax, dword [eax]
cmp dword [eax + 0x1c], 0
je 0xe56fe6
mov edx, dword [edi + 0x14]
mov ebx, edx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0xc], edx
nop word [eax + eax]
cmp ebx, dword [edi + 0xc]
jne 0xe56f83
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0xe56f2d
cmp ebx, edx
jbe 0xe56f2d
mov eax, dword [ecx]
sub ebx, edx
add eax, edx
je 0xe56f2a
mov ecx, dword [esi + 0x30]
mov edx, eax
push ebx
call fcn.00e56140
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
call fcn.00e5c970
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0xe56f75
mov eax, dword [ebp - 0x1c]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov ecx, dword [ebp - 0x1c]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0xe56f75
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov ebx, dword [edi + 0x14]
test ebx, ebx
jne 0xe5745b
mov dword [ebp - 0xc], ebx
mov eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov ecx, dword [ebp - 4]
mov dword [edi + 0x20], eax
mov eax, dword [ecx]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
mov dword [edi + 0x14], ebx
test dl, dl
je 0xe56fb2
mov edx, dword [ebp - 0xc]
jmp 0xe56f00
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0xe56fdf
mov eax, dword [ebp - 0xc]
cmp ebx, eax
jbe 0xe56fdf
mov edx, dword [ecx]
sub ebx, eax
add edx, eax
jne 0xe56fd0
xor eax, eax
jmp 0xe56fdc
mov ecx, dword [esi + 0x30]
push ebx
call fcn.00e56140
add esp, 4
mov dword [esi + 0x30], eax
mov dword [edi + 0x20], 0
mov ecx, dword [ebp - 8]
mov eax, edi
add eax, 0xc
mov dword [edi + 4], 0x5b
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], eax
jmp 0xe5700f
lea eax, [edi + 0xc]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0xc], eax
cmp edx, 0x5b
jne 0xe57116
mov eax, dword [ecx]
cmp dword [eax + 0x24], 0
je 0xe5710a
mov edx, dword [edi + 0x14]
mov ebx, edx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x1c]
cmp ebx, dword [eax]
jne 0xe570ab
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0xe57055
cmp ebx, edx
jbe 0xe57055
mov eax, dword [ecx]
sub ebx, edx
add eax, edx
je 0xe57052
mov ecx, dword [esi + 0x30]
mov edx, eax
push ebx
call fcn.00e56140
add esp, 4
mov dword [esi + 0x30], eax
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x18], ebx
call fcn.00e5c970
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0xe5709d
mov eax, dword [ebp - 0x18]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov ecx, dword [ebp - 0x18]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0xe5709d
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov ebx, dword [edi + 0x14]
test ebx, ebx
jne 0xe5745b
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp - 8]
mov ecx, dword [edi + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov ecx, dword [ebp - 4]
mov dword [edi + 0x20], eax
mov eax, dword [ecx]
mov byte [ebx + eax], dl
mov ebx, dword [edi + 0x14]
inc ebx
mov dword [edi + 0x14], ebx
test dl, dl
je 0xe570da
mov edx, dword [ebp - 0x14]
jmp 0xe57026
mov eax, dword [ebp - 8]
mov eax, dword [eax]
cmp dword [eax + 0x2c], 0
je 0xe57107
mov eax, dword [ebp - 0x14]
cmp ebx, eax
jbe 0xe57107
mov edx, dword [ecx]
sub ebx, eax
add edx, eax
jne 0xe570f8
xor eax, eax
jmp 0xe57104
mov ecx, dword [esi + 0x30]
push ebx
call fcn.00e56140
add esp, 4
mov dword [esi + 0x30], eax
mov ecx, dword [ebp - 8]
mov ebx, dword [ebp - 4]
mov dword [edi + 4], 0x67
jmp 0xe5711f
cmp edx, 0x67
jne 0xe57210
mov eax, dword [ecx]
cmp dword [eax + 0x2c], 0
je 0xe571b2
mov edx, dword [edi + 0x14]
mov ecx, dword [ebp - 0xc]
lea eax, [edx + 2]
cmp eax, dword [ecx]
jbe 0xe57190
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x1c], eax
call fcn.00e5c970
mov edx, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x18], ecx
test ecx, ecx
je 0xe57185
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov eax, dword [ebp - 0x18]
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0xe57185
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov edx, dword [edi + 0x14]
test edx, edx
jne 0xe5745b
mov ecx, dword [ebx]
movzx eax, byte [esi + 0x30]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0x31]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov dword [esi + 0x30], 0
mov dword [edi + 4], 0x71
mov eax, dword [esi + 0x1c]
mov ecx, eax
mov dword [ebp - 0x1c], eax
call fcn.00e5c970
mov edx, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x18], ecx
test ecx, ecx
je 0xe57206
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov eax, dword [ebp - 0x18]
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0xe57206
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [edi + 0x14], 0
jne 0xe5745b
cmp dword [esi + 4], 0
mov edx, dword [ebp - 0x10]
jne 0xe57234
cmp dword [edi + 0x74], 0
jne 0xe57234
test edx, edx
je 0xe57462
cmp dword [edi + 4], 0x29a
je 0xe5730b
mov eax, dword [edi + 0x84]
test eax, eax
jne 0xe57247
push edx
push edi
call fcn.00e57900
jmp 0xe57277
mov ecx, dword [edi + 0x88]
cmp ecx, 2
jne 0xe5725b
mov ecx, edi
call fcn.00e58a30
jmp 0xe5727a
cmp ecx, 3
jne 0xe57269
mov ecx, edi
call fcn.00e586d0
jmp 0xe5727a
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x95b730]
push edx
push edi
call eax
add esp, 8
cmp eax, 2
je 0xe57284
cmp eax, 3
jne 0xe5728b
mov dword [edi + 4], 0x29a
test eax, eax
je 0xe57455
cmp eax, 2
je 0xe57455
cmp eax, 1
jne 0xe57308
push 0
push 0
xor edx, edx
mov ecx, edi
call fcn.00e5c080
mov eax, dword [esi + 0x1c]
add esp, 8
mov ecx, eax
mov dword [ebp - 0x1c], eax
call fcn.00e5c970
mov edx, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x10]
cmp dword [edx + 0x14], ecx
cmovbe ecx, dword [edx + 0x14]
mov dword [ebp - 0x18], ecx
test ecx, ecx
je 0xe572fe
push ecx
push dword [edx + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov eax, dword [ebp - 0x18]
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
add dword [esi + 0xc], eax
add dword [ecx + 0x10], eax
add dword [esi + 0x14], eax
sub dword [esi + 0x10], eax
sub dword [ecx + 0x14], eax
jne 0xe572fe
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
cmp dword [esi + 0x10], 0
je 0xe5745b
mov edx, dword [ebp - 0x10]
cmp edx, 4
jne 0xe57462
mov eax, dword [edi + 0x18]
test eax, eax
jg 0xe57325
pop ebx
pop edi
lea eax, [edx - 3]
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0xe573a5
mov edx, dword [edi + 0x14]
movzx eax, byte [esi + 0x30]
mov ecx, dword [ebx]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x31]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x32]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 0x33]
mov byte [edx + ecx], al
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
inc edx
mov dword [edi + 0x14], edx
movzx eax, byte [esi + 8]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 9]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0xa]
mov byte [edx + ecx], al
inc dword [edi + 0x14]
mov edx, dword [edi + 0x14]
mov ecx, dword [ebx]
movzx eax, byte [esi + 0xb]
mov byte [edx + ecx], al
jmp 0xe573ef
movzx ebx, word [esi + 0x32]
mov ecx, dword [edi + 0x14]
mov edx, ebx
mov eax, dword [ebp - 4]
shr edx, 8
mov eax, dword [eax]
mov byte [ecx + eax], dl
mov ecx, dword [edi + 0x14]
mov eax, dword [ebp - 4]
inc ecx
mov dword [edi + 0x14], ecx
mov eax, dword [eax]
mov byte [ecx + eax], bl
mov edx, dword [edi + 0x14]
mov eax, dword [ebp - 4]
inc edx
mov dword [edi + 0x14], edx
movzx ebx, word [esi + 0x30]
mov ecx, ebx
mov eax, dword [eax]
shr ecx, 8
mov byte [edx + eax], cl
mov eax, dword [ebp - 4]
mov ecx, dword [edi + 0x14]
inc ecx
mov dword [edi + 0x14], ecx
mov eax, dword [eax]
mov byte [ecx + eax], bl
inc dword [edi + 0x14]
mov ebx, dword [esi + 0x1c]
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
call fcn.00e5c970
mov eax, dword [ebx + 0x14]
mov ebx, dword [esi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0xe5743a
mov eax, dword [ebp - 0x1c]
push ebx
push dword [eax + 0x10]
push dword [esi + 0xc]
call fcn.00eb31e0
mov ecx, dword [ebp - 0x1c]
add esp, 0xc
add dword [esi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [esi + 0x14], ebx
sub dword [esi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0xe5743a
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x18]
test eax, eax
jle 0xe57446
neg eax
mov dword [edi + 0x18], eax
xor eax, eax
cmp dword [edi + 0x14], eax
pop ebx
pop edi
sete al
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x10], 0
jne 0xe57462
mov dword [edi + 0x28], 0xffffffff
pop ebx
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x18], 0x962a18
pop edi
mov eax, 0xfffffffe
pop esi
mov esp, ebp
pop ebp
ret