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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov ebp, dword [esp + 0x70]
test ebp, ebp
je 0x594c75
mov ebx, dword [esp + 0x70]
mov edi, dword [ebx + 0x20]
test edi, edi
je 0x594c75
mov esi, dword [ebx + 0x24]
test esi, esi
je 0x594c75
mov ebp, dword [ebx + 0x1c]
test ebp, ebp
je 0x594c75
cmp ebx, dword [ebp]
je 0x594c84
mov eax, 0xfffffffe
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 4]
cmp eax, 0x2a
je 0x594cb4
cmp eax, 0x39
je 0x594cb4
cmp eax, 0x45
je 0x594cb4
cmp eax, 0x49
je 0x594cb4
cmp eax, 0x5b
je 0x594cb4
cmp eax, 0x67
je 0x594cb4
cmp eax, 0x71
je 0x594cb4
cmp eax, 0x29a
jne 0x594c75
lea esi, [esi]
cmp dword [esp + 0x74], 5
jg 0x594c75
mov ecx, dword [esp + 0x74]
test ecx, ecx
js 0x594c75
mov ebx, dword [esp + 0x70]
mov edx, dword [ebx + 0xc]
test edx, edx
je 0x5950bf
mov edx, dword [ebx + 4]
test edx, edx
je 0x594ce3
mov edi, dword [ebx]
test edi, edi
je 0x5950bf
cmp eax, 0x29a
je 0x5950b4
mov ebx, dword [esp + 0x70]
mov esi, dword [ebx + 0x10]
test esi, esi
je 0x59511f
mov ecx, dword [ebp + 0x28]
mov ebx, dword [esp + 0x74]
mov dword [ebp + 0x28], ebx
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jne 0x5950d8
test edx, edx
jne 0x594d4a
mov ebx, dword [esp + 0x74]
shl ebx, 1
xor edx, edx
cmp dword [esp + 0x74], 5
sete dl
lea edx, [edx + edx*8]
sub ebx, edx
lea esi, [ecx + ecx]
xor edx, edx
cmp ecx, 5
setge dl
lea edx, [edx + edx*8]
sub esi, edx
cmp ebx, esi
jg 0x594d4a
cmp dword [esp + 0x74], 4
jne 0x595d96
cmp eax, 0x29a
je 0x595110
cmp eax, 0x2a
je 0x595134
cmp eax, 0x39
je 0x5956c4
cmp eax, 0x45
je 0x595274
cmp eax, 0x49
je 0x595af4
cmp eax, 0x5b
je 0x595e82
cmp eax, 0x67
je 0x595e8a
mov ebx, dword [esp + 0x70]
mov eax, dword [ebx + 4]
test eax, eax
jne 0x594db4
mov eax, dword [ebp + 0x74]
test eax, eax
jne 0x594db4
mov edi, dword [esp + 0x74]
test edi, edi
je 0x594e15
cmp dword [ebp + 4], 0x29a
je 0x59500f
nop
mov eax, dword [ebp + 0x84]
test eax, eax
je 0x59525c
mov edx, dword [ebp + 0x88]
cmp edx, 2
je 0x594e82
cmp edx, 3
je 0x59584c
lea eax, [eax + eax*2]
mov ebx, dword [esp + 0x74]
mov dword [esp + 4], ebx
mov dword [esp], ebp
call dword [eax*4 + 0x632ca8]
lea edx, [eax - 2]
cmp edx, 1
jbe 0x594ff8
test eax, eax
jne 0x594fff
mov ebx, dword [esp + 0x70]
mov eax, dword [ebx + 0x10]
test eax, eax
jne 0x594e15
mov dword [ebp + 0x28], 0xffffffff
xor eax, eax
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 0x5c]
sub ecx, eax
test eax, eax
js 0x595cdc
add eax, dword [ebp + 0x38]
mov dword [esp + 0xc], 0
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], ebp
call fcn.0059bb6c
mov eax, dword [ebp + 0x6c]
mov dword [ebp + 0x5c], eax
mov ebx, dword [ebp]
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
mov dword [esp + 0x1c], eax
call fcn.0059b9b4
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0x14]
mov edx, dword [ebx + 0x10]
cmp edx, ecx
jbe 0x594e70
mov edx, ecx
test edx, edx
jne 0x595c5b
mov eax, dword [ebp]
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x594e03
mov edx, dword [ebp + 0x74]
jmp 0x594ee0
mov dword [ebp + 0x60], 0
mov edx, dword [ebp + 0x38]
mov eax, dword [ebp + 0x6c]
movzx edx, byte [edx + eax]
mov eax, dword [ebp + 0x16a0]
mov ecx, dword [ebp + 0x16a4]
mov word [ecx + eax*2], 0
mov ecx, dword [ebp + 0x1698]
mov byte [ecx + eax], dl
inc eax
mov dword [ebp + 0x16a0], eax
inc word [ebp + edx*4 + 0x94]
mov ebx, dword [ebp + 0x169c]
dec ebx
mov edx, dword [ebp + 0x74]
dec edx
mov dword [ebp + 0x74], edx
mov ecx, dword [ebp + 0x6c]
inc ecx
mov dword [ebp + 0x6c], ecx
cmp eax, ebx
je 0x594e20
test edx, edx
jne 0x594e88
mov eax, ebp
call fcn.0059305c
mov esi, dword [ebp + 0x74]
test esi, esi
jne 0x594e88
mov ebx, dword [esp + 0x74]
test ebx, ebx
je 0x594e03
mov dword [ebp + 0x16b4], 0
cmp dword [esp + 0x74], 4
je 0x594f8e
mov eax, dword [ebp + 0x16a0]
test eax, eax
je 0x595b34
mov edx, dword [ebp + 0x5c]
mov eax, dword [ebp + 0x6c]
sub eax, edx
test edx, edx
js 0x595e92
add edx, dword [ebp + 0x38]
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ebp
call fcn.0059bb6c
mov eax, dword [ebp + 0x6c]
mov dword [ebp + 0x5c], eax
mov edx, dword [ebp]
mov ebx, dword [edx + 0x1c]
mov dword [esp], ebx
mov dword [esp + 0x1c], edx
call fcn.0059b9b4
mov ecx, dword [ebx + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x10]
cmp eax, ecx
jbe 0x594f70
mov eax, ecx
test eax, eax
jne 0x595e58
mov eax, dword [ebp]
mov eax, dword [eax + 0x10]
test eax, eax
setne al
movzx eax, al
lea edx, [eax - 2]
jmp 0x594df2
mov edx, dword [ebp + 0x5c]
mov eax, dword [ebp + 0x6c]
sub eax, edx
test edx, edx
js 0x595f1d
add edx, dword [ebp + 0x38]
mov dword [esp + 0xc], 1
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ebp
call fcn.0059bb6c
mov eax, dword [ebp + 0x6c]
mov dword [ebp + 0x5c], eax
mov edx, dword [ebp]
mov ebx, dword [edx + 0x1c]
mov dword [esp], ebx
mov dword [esp + 0x1c], edx
call fcn.0059b9b4
mov ecx, dword [ebx + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x10]
cmp eax, ecx
jbe 0x594fe1
mov eax, ecx
test eax, eax
jne 0x595e99
mov eax, dword [ebp]
cmp dword [eax + 0x10], 1
sbb eax, eax
add eax, 3
lea esi, [esi]
mov dword [ebp + 4], 0x29a
cmp eax, 2
je 0x594e03
dec eax
je 0x595b34
cmp dword [esp + 0x74], 4
jne 0x594e15
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x595d8c
cmp eax, 2
je 0x595be0
mov ebx, dword [esp + 0x70]
mov edx, dword [ebx + 0x30]
mov ecx, edx
shr ecx, 0x10
mov eax, dword [ebp + 0x14]
mov ebx, dword [ebp + 8]
shr edx, 0x18
mov byte [ebx + eax], dl
mov edx, dword [ebp + 8]
mov byte [edx + eax + 1], cl
lea ecx, [eax + 2]
mov dword [ebp + 0x14], ecx
mov ebx, dword [esp + 0x70]
mov ebx, dword [ebx + 0x30]
movzx edx, bx
mov esi, dword [ebp + 8]
mov ebx, edx
shr ebx, 8
mov byte [esi + eax + 2], bl
mov ecx, dword [ebp + 8]
mov byte [ecx + eax + 3], dl
add eax, 4
mov dword [ebp + 0x14], eax
mov esi, dword [esp + 0x70]
mov ebx, dword [esi + 0x1c]
mov dword [esp], ebx
call fcn.0059b9b4
mov edx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp eax, edx
jbe 0x595091
mov eax, edx
test eax, eax
jne 0x595ce3
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x5950a5
neg eax
mov dword [ebp + 0x18], eax
xor eax, eax
mov ebp, dword [ebp + 0x14]
test ebp, ebp
sete al
jmp 0x594c7a
cmp dword [esp + 0x74], 4
je 0x594cee
mov eax, dword [str.stream_error]
mov ebx, dword [esp + 0x70]
mov dword [ebx + 0x18], eax
mov eax, 0xfffffffe
jmp 0x594c7a
mov dword [esp], ebp
call fcn.0059b9b4
mov ecx, dword [ebp + 0x14]
mov ebx, dword [esp + 0x70]
mov edx, dword [ebx + 0x10]
mov eax, edx
cmp edx, ecx
jbe 0x5950f2
mov eax, ecx
test eax, eax
jne 0x595684
test edx, edx
je 0x594e0e
mov eax, dword [ebp + 4]
cmp eax, 0x29a
jne 0x594d55
mov ebx, dword [esp + 0x70]
mov eax, dword [ebx + 4]
test eax, eax
je 0x594d8b
mov eax, dword [str.buffer_error]
mov dword [ebx + 0x18], eax
mov eax, 0xfffffffb
jmp 0x594c7a
mov eax, dword [ebp + 0x30]
shl eax, 0xc
sub eax, 0x7800
cmp dword [ebp + 0x88], 1
jle 0x595230
xor ecx, ecx
or ecx, eax
mov eax, dword [ebp + 0x6c]
test eax, eax
je 0x59515a
or ecx, 0x20
mov ebx, 0x1f
mov eax, ecx
xor edx, edx
div ebx
lea eax, [ecx + 0x1f]
sub eax, edx
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
mov ebx, eax
shr ebx, 8
mov byte [ecx + edx], bl
mov ecx, dword [ebp + 8]
mov byte [ecx + edx + 1], al
lea eax, [edx + 2]
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0x6c]
test eax, eax
je 0x5951d2
mov ebx, dword [esp + 0x70]
mov ecx, dword [ebx + 0x30]
mov ebx, ecx
shr ebx, 0x10
mov esi, dword [ebp + 8]
shr ecx, 0x18
mov byte [esi + edx + 2], cl
mov eax, dword [ebp + 8]
mov byte [eax + edx + 3], bl
lea ecx, [edx + 4]
mov dword [ebp + 0x14], ecx
mov ebx, dword [esp + 0x70]
mov ebx, dword [ebx + 0x30]
movzx eax, bx
mov esi, dword [ebp + 8]
mov ebx, eax
shr ebx, 8
mov byte [esi + edx + 4], bl
mov ecx, dword [ebp + 8]
mov byte [ecx + edx + 5], al
add edx, 6
mov dword [ebp + 0x14], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0059a2d4
mov ebx, dword [esp + 0x70]
mov dword [ebx + 0x30], eax
mov dword [ebp + 4], 0x71
mov esi, ebx
mov ebx, dword [ebx + 0x1c]
mov dword [esp], ebx
call fcn.0059b9b4
mov edx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp eax, edx
jbe 0x595215
mov eax, edx
test eax, eax
jne 0x595814
mov eax, dword [ebp + 0x14]
test eax, eax
jne 0x594e0e
mov eax, dword [ebp + 4]
jmp 0x594d5e
mov edx, dword [ebp + 0x84]
cmp edx, 1
jle 0x59514c
cmp edx, 5
jle 0x595d45
cmp edx, 6
je 0x595f06
mov ecx, 0xc0
jmp 0x59514e
mov ebx, dword [esp + 0x74]
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.005937fc
lea edx, [eax - 2]
jmp 0x594df2
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x5953db
mov edx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x20]
mov eax, dword [eax + 0x14]
and eax, 0xffff
sub eax, esi
mov dword [esp + 0x48], eax
mov ebx, dword [ebp + 0xc]
add eax, edx
cmp ebx, eax
jae 0x59538b
mov eax, ebx
mov ebx, edx
mov edx, dword [esp + 0x70]
jmp 0x5952db
mov esi, dword [ebp + 0x14]
test esi, esi
jne 0x594e0e
mov ecx, dword [esp + 0x44]
sub dword [esp + 0x48], ecx
mov eax, dword [ebp + 0xc]
cmp eax, dword [esp + 0x48]
jae 0x595380
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 0x10]
mov esi, dword [ebp + 0x20]
xor ebx, ebx
sub eax, ebx
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 8]
add eax, ebx
add esi, ecx
mov edi, eax
mov ecx, dword [esp + 0x44]
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0xc]
mov dword [ebp + 0x14], eax
mov ecx, dword [ebp + 0x1c]
mov edi, dword [ecx + 0x2c]
test edi, edi
je 0x595304
cmp eax, ebx
ja 0x595358
mov ecx, dword [esp + 0x44]
add dword [ebp + 0x20], ecx
mov ebx, dword [edx + 0x1c]
mov dword [esp], ebx
mov dword [esp + 0x1c], edx
call fcn.0059b9b4
mov ecx, dword [ebx + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x10]
cmp eax, ecx
jbe 0x59532a
mov eax, ecx
test eax, eax
je 0x5952b0
mov esi, dword [ebx + 0x10]
mov edi, dword [edx + 0xc]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x5952b0
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x5952b0
sub eax, ebx
mov dword [esp + 8], eax
add ebx, dword [ebp + 8]
mov dword [esp + 4], ebx
mov eax, dword [edx + 0x30]
mov dword [esp], eax
mov dword [esp + 0x1c], edx
call fcn.00599f2c
mov edx, dword [esp + 0x1c]
mov dword [edx + 0x30], eax
jmp 0x595304
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 0x10]
mov esi, dword [ebp + 0x20]
xor edx, edx
mov eax, dword [ebp + 8]
add eax, edx
add esi, ecx
mov edi, eax
mov ecx, dword [esp + 0x48]
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x48]
add ecx, dword [ebp + 0x14]
mov dword [ebp + 0x14], ecx
mov eax, dword [ebp + 0x1c]
mov ebx, dword [eax + 0x2c]
test ebx, ebx
je 0x5953d4
cmp ecx, edx
jbe 0x5953d4
sub ecx, edx
mov dword [esp + 8], ecx
add edx, dword [ebp + 8]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x70]
mov eax, dword [ebx + 0x30]
mov dword [esp], eax
call fcn.00599f2c
mov dword [ebx + 0x30], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp + 0x20], 0
mov dword [ebp + 4], 0x49
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x5954a3
mov ebx, dword [ebp + 0x14]
mov ecx, ebx
mov edx, dword [esp + 0x70]
jmp 0x595416
mov esi, dword [ebp + 0x20]
mov eax, dword [eax + 0x1c]
mov al, byte [eax + esi]
inc esi
mov dword [ebp + 0x20], esi
mov esi, dword [ebp + 8]
mov byte [esi + ecx], al
inc ecx
mov dword [ebp + 0x14], ecx
test al, al
je 0x595468
mov eax, dword [ebp + 0x1c]
cmp dword [ebp + 0xc], ecx
jne 0x5953f8
mov esi, dword [eax + 0x2c]
test esi, esi
je 0x59542a
cmp ebx, ecx
jb 0x595c8c
mov ebx, dword [edx + 0x1c]
mov dword [esp], ebx
mov dword [esp + 0x1c], edx
call fcn.0059b9b4
mov ecx, dword [ebx + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x10]
cmp eax, ecx
jbe 0x595449
mov eax, ecx
test eax, eax
jne 0x59562c
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jne 0x594e0e
mov eax, dword [ebp + 0x1c]
xor ecx, ecx
xor ebx, ebx
jmp 0x5953f8
mov edx, ecx
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 0x2c]
test ecx, ecx
je 0x59549c
cmp ebx, edx
jae 0x59549c
sub edx, ebx
mov dword [esp + 8], edx
add ebx, dword [ebp + 8]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x70]
mov eax, dword [ebx + 0x30]
mov dword [esp], eax
call fcn.00599f2c
mov dword [ebx + 0x30], eax
mov eax, dword [ebp + 0x1c]
nop
mov dword [ebp + 0x20], 0
mov dword [ebp + 4], 0x5b
mov edi, dword [eax + 0x24]
test edi, edi
je 0x595564
mov ebx, dword [ebp + 0x14]
mov ecx, ebx
mov edx, dword [esp + 0x70]
jmp 0x5954de
mov esi, dword [ebp + 0x20]
mov eax, dword [eax + 0x24]
mov al, byte [eax + esi]
inc esi
mov dword [ebp + 0x20], esi
mov esi, dword [ebp + 8]
mov byte [esi + ecx], al
inc ecx
mov dword [ebp + 0x14], ecx
test al, al
je 0x595530
mov eax, dword [ebp + 0x1c]
cmp dword [ebp + 0xc], ecx
jne 0x5954c0
mov esi, dword [eax + 0x2c]
test esi, esi
je 0x5954f2
cmp ebx, ecx
jb 0x595cb4
mov ebx, dword [edx + 0x1c]
mov dword [esp], ebx
mov dword [esp + 0x1c], edx
call fcn.0059b9b4
mov ecx, dword [ebx + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x10]
cmp eax, ecx
jbe 0x595511
mov eax, ecx
test eax, eax
jne 0x595658
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jne 0x594e0e
mov eax, dword [ebp + 0x1c]
xor ecx, ecx
xor ebx, ebx
jmp 0x5954c0
mov edx, ecx
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 0x2c]
test ecx, ecx
je 0x595564
cmp ebx, edx
jae 0x595564
sub edx, ebx
mov dword [esp + 8], edx
add ebx, dword [ebp + 8]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x70]
mov eax, dword [ebx + 0x30]
mov dword [esp], eax
call fcn.00599f2c
mov dword [ebx + 0x30], eax
mov eax, dword [ebp + 0x1c]
nop
mov dword [ebp + 4], 0x67
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x5955f0
mov eax, dword [ebp + 0x14]
lea ecx, [eax + 2]
cmp ecx, dword [ebp + 0xc]
jbe 0x5955b4
mov esi, dword [esp + 0x70]
mov ebx, dword [esi + 0x1c]
mov dword [esp], ebx
call fcn.0059b9b4
mov edx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp eax, edx
ja 0x595ba3
test eax, eax
jne 0x595baa
mov eax, dword [ebp + 0x14]
test eax, eax
jne 0x594e0e
mov ecx, 2
xor eax, eax
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 0x70]
mov edx, dword [esi + 0x30]
mov byte [ebx + eax], dl
mov ebx, dword [ebp + 8]
mov edx, dword [esi + 0x30]
shr edx, 8
mov byte [ebx + eax + 1], dl
mov dword [ebp + 0x14], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00599f2c
mov dword [esi + 0x30], eax
mov dword [ebp + 4], 0x71
mov edi, dword [esp + 0x70]
mov ebx, dword [edi + 0x1c]
mov dword [esp], ebx
call fcn.0059b9b4
mov edx, dword [ebx + 0x14]
mov eax, dword [edi + 0x10]
cmp eax, edx
jbe 0x595612
mov eax, edx
test eax, eax
jne 0x595afc
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x594d8b
jmp 0x594e0e
mov esi, dword [ebx + 0x10]
mov edi, dword [edx + 0xc]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x595451
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x595451
mov esi, dword [ebx + 0x10]
mov edi, dword [edx + 0xc]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x595519
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x595519
mov ebx, dword [esp + 0x70]
mov ebx, dword [ebx + 0xc]
mov dword [esp + 0x40], ebx
mov esi, dword [ebp + 0x10]
mov edi, ebx
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
mov ebx, dword [esp + 0x70]
add dword [ebx + 0xc], eax
add dword [ebp + 0x10], eax
add dword [ebx + 0x14], eax
mov edx, dword [ebx + 0x10]
sub edx, eax
mov dword [ebx + 0x10], edx
sub dword [ebp + 0x14], eax
jne 0x5950fa
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
jmp 0x5950fa
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00599f2c
mov ebx, dword [esp + 0x70]
mov dword [ebx + 0x30], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
mov byte [eax + edx], 0x1f
mov eax, dword [ebp + 8]
mov byte [eax + edx + 1], 0x8b
mov eax, dword [ebp + 8]
mov byte [eax + edx + 2], 8
lea ebx, [edx + 3]
mov dword [ebp + 0x14], ebx
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x595dac
add ebx, dword [ebp + 8]
mov esi, dword [eax]
test esi, esi
setne cl
mov esi, ecx
cmp dword [eax + 0x2c], 1
sbb ecx, ecx
not ecx
and ecx, 2
add esi, ecx
cmp dword [eax + 0x10], 1
sbb ecx, ecx
not ecx
and ecx, 4
add esi, ecx
cmp dword [eax + 0x1c], 1
sbb ecx, ecx
not ecx
and ecx, 8
add ecx, esi
cmp dword [eax + 0x24], 1
sbb eax, eax
not eax
and eax, 0x10
add eax, ecx
mov byte [ebx], al
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 4]
mov byte [eax + edx + 4], cl
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 4]
shr eax, 8
mov byte [ecx + edx + 5], al
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x1c]
movzx ecx, word [ecx + 6]
mov byte [eax + edx + 6], cl
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x1c]
movzx ecx, byte [ecx + 7]
mov byte [eax + edx + 7], cl
lea eax, [edx + 8]
mov dword [ebp + 0x14], eax
add eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x84]
cmp ecx, 9
je 0x595d3e
cmp dword [ebp + 0x88], 1
jle 0x595c4d
mov cl, 4
mov byte [eax], cl
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 0xc]
mov byte [eax + edx + 9], cl
lea ecx, [edx + 0xa]
mov dword [ebp + 0x14], ecx
mov eax, dword [ebp + 0x1c]
mov ebx, dword [eax + 0x10]
test ebx, ebx
je 0x5957f5
mov ebx, dword [ebp + 8]
mov eax, dword [eax + 0x14]
mov byte [ebx + ecx], al
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x14]
shr eax, 8
mov byte [ecx + edx + 0xb], al
lea ecx, [edx + 0xc]
mov dword [ebp + 0x14], ecx
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax + 0x2c]
test edx, edx
jne 0x595d19
mov dword [ebp + 0x20], 0
mov dword [ebp + 4], 0x45
jmp 0x595277
mov edi, dword [esp + 0x70]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x38], edi
mov esi, dword [ebx + 0x10]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x70]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x59521d
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x59521d
movzx ebx, byte [0x635a00]
mov eax, dword [ebp + 0x74]
mov dword [esp + 0x18], ebx
jmp 0x5958d5
mov dword [ebp + 0x60], 0
mov edx, dword [ebp + 0x6c]
mov ecx, dword [ebp + 0x38]
test edx, edx
je 0x595883
lea esi, [ecx + edx - 1]
movzx edi, byte [esi]
mov dword [esp + 0x44], edi
mov bl, byte [esi]
cmp byte [esi + 1], bl
je 0x595920
movzx edx, byte [ecx + edx]
mov eax, dword [ebp + 0x16a0]
mov ecx, dword [ebp + 0x16a4]
mov word [ecx + eax*2], 0
mov ecx, dword [ebp + 0x1698]
mov byte [ecx + eax], dl
inc eax
mov dword [ebp + 0x16a0], eax
inc word [ebp + edx*4 + 0x94]
mov edx, dword [ebp + 0x169c]
dec edx
xor ecx, ecx
cmp eax, edx
sete cl
mov eax, dword [ebp + 0x74]
dec eax
mov dword [ebp + 0x74], eax
mov edx, dword [ebp + 0x6c]
inc edx
mov dword [ebp + 0x6c], edx
test ecx, ecx
jne 0x595a54
cmp eax, 0x102
ja 0x59585c
mov eax, ebp
call fcn.0059305c
mov eax, dword [ebp + 0x74]
cmp eax, 0x102
ja 0x59585c
mov edx, dword [esp + 0x74]
test edx, edx
je 0x594e03
test eax, eax
je 0x594efe
mov dword [ebp + 0x60], 0
cmp eax, 2
ja 0x595863
mov ecx, dword [ebp + 0x38]
mov edx, dword [ebp + 0x6c]
jmp 0x595883
movzx edi, byte [esi + 2]
cmp dword [esp + 0x44], edi
jne 0x595883
movzx edi, byte [esi + 3]
cmp dword [esp + 0x44], edi
jne 0x595883
lea edi, [esi + 3]
lea esi, [ecx + edx + 0x102]
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], ebp
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x18]
jmp 0x5959b8
movzx ebp, byte [edi + 2]
cmp esi, ebp
jne 0x595f5b
movzx ebp, byte [edi + 3]
cmp esi, ebp
jne 0x595f7b
movzx ebp, byte [edi + 4]
cmp esi, ebp
jne 0x595f6b
movzx ebp, byte [edi + 5]
cmp esi, ebp
jne 0x595f4b
movzx ebp, byte [edi + 6]
cmp esi, ebp
jne 0x595f3b
movzx ebp, byte [edi + 7]
cmp esi, ebp
jne 0x595f2b
add edi, 8
movzx ebp, byte [edi]
cmp esi, ebp
jne 0x595ec3
cmp edi, dword [esp + 0x48]
jae 0x595ec3
movzx ebp, byte [edi + 1]
cmp esi, ebp
je 0x595958
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
inc edi
sub edi, dword [esp + 0x48]
lea esi, [edi + 0x102]
mov dword [ebp + 0x60], esi
cmp eax, esi
jae 0x595e4a
mov dword [ebp + 0x60], eax
mov esi, eax
lea edx, [esi - 3]
mov eax, dword [ebp + 0x16a0]
mov ecx, dword [ebp + 0x16a4]
mov word [ecx + eax*2], 1
mov ecx, dword [ebp + 0x1698]
mov byte [ecx + eax], dl
inc eax
mov dword [ebp + 0x16a0], eax
movzx edx, dl
movzx edx, byte [edx + 0x635900]
inc word [ebp + edx*4 + 0x498]
mov edi, dword [esp + 0x18]
inc word [ebp + edi*4 + 0x988]
mov edx, dword [ebp + 0x169c]
dec edx
xor ecx, ecx
cmp eax, edx
sete cl
mov edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x74]
sub eax, edx
mov dword [ebp + 0x74], eax
add edx, dword [ebp + 0x6c]
mov dword [ebp + 0x6c], edx
mov dword [ebp + 0x60], 0
test ecx, ecx
je 0x5958d5
mov ebx, dword [esp + 0x18]
mov eax, dword [ebp + 0x5c]
sub edx, eax
test eax, eax
js 0x595c85
add eax, dword [ebp + 0x38]
mov dword [esp + 0xc], 0
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], ebp
call fcn.0059bb6c
mov eax, dword [ebp + 0x6c]
mov dword [ebp + 0x5c], eax
mov eax, dword [ebp]
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x44], edx
mov dword [esp], edx
mov dword [esp + 0x1c], eax
call fcn.0059b9b4
mov edx, dword [esp + 0x44]
mov ecx, dword [edx + 0x14]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x10]
cmp edx, ecx
jbe 0x595ab0
mov edx, ecx
test edx, edx
jne 0x595ac8
mov eax, dword [ebp]
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x595853
jmp 0x594e03
mov ecx, dword [esp + 0x44]
mov esi, dword [ecx + 0x10]
mov edi, dword [eax + 0xc]
mov ecx, edx
rep movsb byte es:[edi], byte [esi]
add dword [eax + 0xc], edx
mov esi, dword [esp + 0x44]
add dword [esi + 0x10], edx
add dword [eax + 0x14], edx
sub dword [eax + 0x10], edx
sub dword [esi + 0x14], edx
jne 0x595ab4
mov edx, dword [esi + 8]
mov dword [esi + 0x10], edx
jmp 0x595ab4
mov eax, dword [ebp + 0x1c]
jmp 0x5953e2
mov edx, dword [esp + 0x70]
mov edx, dword [edx + 0xc]
mov dword [esp + 0x2c], edx
mov esi, dword [ebx + 0x10]
mov edi, edx
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x70]
add dword [ecx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [ecx + 0x14], eax
sub dword [ecx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x59561a
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x59561a
cmp dword [esp + 0x74], 1
je 0x595f10
cmp dword [esp + 0x74], 5
je 0x595b71
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], ebp
call fcn.0059b88c
cmp dword [esp + 0x74], 3
je 0x595f8b
mov esi, dword [esp + 0x70]
mov ebx, dword [esi + 0x1c]
mov dword [esp], ebx
call fcn.0059b9b4
mov ecx, dword [ebx + 0x14]
mov edx, dword [esi + 0x10]
mov eax, edx
cmp edx, ecx
jbe 0x595b8e
mov eax, ecx
test eax, eax
jne 0x595d4f
test edx, edx
jne 0x59500f
jmp 0x594e0e
mov eax, edx
jmp 0x59559a
mov edi, dword [esp + 0x70]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x30], edi
mov esi, dword [ebx + 0x10]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x70]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x5955a2
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x5955a2
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
mov ebx, dword [esp + 0x70]
mov edx, dword [ebx + 0x30]
mov byte [ecx + eax], dl
mov ecx, dword [ebp + 8]
mov edx, dword [ebx + 0x30]
shr edx, 8
mov byte [ecx + eax + 1], dl
mov edx, dword [ebp + 8]
movzx ecx, word [ebx + 0x32]
mov byte [edx + eax + 2], cl
mov edx, dword [ebp + 8]
movzx ecx, byte [ebx + 0x33]
mov byte [edx + eax + 3], cl
mov ecx, dword [ebp + 8]
mov edx, dword [ebx + 8]
mov byte [ecx + eax + 4], dl
mov ecx, dword [ebp + 8]
mov edx, dword [ebx + 8]
shr edx, 8
mov byte [ecx + eax + 5], dl
mov edx, dword [ebp + 8]
movzx ecx, word [ebx + 0xa]
mov byte [edx + eax + 6], cl
mov edx, dword [ebp + 8]
movzx ecx, byte [ebx + 0xb]
mov byte [edx + eax + 7], cl
add eax, 8
mov dword [ebp + 0x14], eax
mov esi, ebx
jmp 0x59507a
dec ecx
jle 0x5957b2
xor ecx, ecx
jmp 0x5957b4
mov esi, dword [eax + 0x10]
mov edi, dword [ebx + 0xc]
mov ecx, edx
rep movsb byte es:[edi], byte [esi]
add dword [ebx + 0xc], edx
add dword [eax + 0x10], edx
add dword [ebx + 0x14], edx
sub dword [ebx + 0x10], edx
sub dword [eax + 0x14], edx
jne 0x594e78
mov edx, dword [eax + 8]
mov dword [eax + 0x10], edx
jmp 0x594e78
xor eax, eax
jmp 0x595a68
sub ecx, ebx
mov dword [esp + 8], ecx
add ebx, dword [ebp + 8]
mov dword [esp + 4], ebx
mov eax, dword [edx + 0x30]
mov dword [esp], eax
mov dword [esp + 0x1c], edx
call fcn.00599f2c
mov edx, dword [esp + 0x1c]
mov dword [edx + 0x30], eax
jmp 0x59542a
sub ecx, ebx
mov dword [esp + 8], ecx
add ebx, dword [ebp + 8]
mov dword [esp + 4], ebx
mov eax, dword [edx + 0x30]
mov dword [esp], eax
mov dword [esp + 0x1c], edx
call fcn.00599f2c
mov edx, dword [esp + 0x1c]
mov dword [edx + 0x30], eax
jmp 0x5954f2
xor eax, eax
jmp 0x594e30
mov edi, dword [esp + 0x70]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x20], edi
mov esi, dword [ebx + 0x10]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x70]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x595099
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x595099
mov dword [esp + 8], ecx
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov ebx, dword [esp + 0x70]
mov eax, dword [ebx + 0x30]
mov dword [esp], eax
call fcn.00599f2c
mov dword [ebx + 0x30], eax
mov eax, dword [ebp + 0x1c]
jmp 0x595800
mov cl, 2
jmp 0x5957b4
mov ecx, 0x40
jmp 0x59514e
mov edi, dword [esp + 0x70]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x28], edi
mov esi, dword [ebx + 0x10]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x70]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
mov ecx, edx
mov edx, dword [edx + 0x10]
sub edx, eax
mov dword [ecx + 0x10], edx
sub dword [ebx + 0x14], eax
jne 0x595b96
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x595b96
mov eax, 1
jmp 0x594c7a
mov eax, dword [str.buffer_error]
mov ebx, dword [esp + 0x70]
mov dword [ebx + 0x18], eax
mov eax, 0xfffffffb
jmp 0x594c7a
mov eax, dword [ebp + 8]
mov byte [eax + ebx], 0
mov eax, dword [ebp + 8]
mov byte [eax + edx + 4], 0
mov eax, dword [ebp + 8]
mov byte [eax + edx + 5], 0
mov eax, dword [ebp + 8]
mov byte [eax + edx + 6], 0
mov eax, dword [ebp + 8]
mov byte [eax + edx + 7], 0
lea eax, [edx + 8]
mov dword [ebp + 0x14], eax
add eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x84]
cmp ecx, 9
je 0x595f24
cmp dword [ebp + 0x88], 1
jle 0x595e43
mov cl, 4
mov byte [eax], cl
mov eax, dword [ebp + 8]
mov byte [eax + edx + 9], 0xa
add edx, 0xa
mov dword [ebp + 0x14], edx
mov dword [ebp + 4], 0x71
mov esi, dword [esp + 0x70]
mov ebx, dword [esi + 0x1c]
mov dword [esp], ebx
call fcn.0059b9b4
mov edx, dword [ebx + 0x14]
mov eax, dword [esi + 0x10]
cmp eax, edx
jbe 0x595e28
mov eax, edx
test eax, eax
jne 0x595ed0
mov edi, dword [ebp + 0x14]
test edi, edi
jne 0x594e0e
mov eax, dword [ebp + 4]
jmp 0x594d67
dec ecx
jle 0x595df4
xor ecx, ecx
jmp 0x595df6
cmp esi, 2
ja 0x5959e3
jmp 0x595883
mov esi, dword [ebx + 0x10]
mov edi, dword [edx + 0xc]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x594f78
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x594f78
mov eax, dword [ebp + 0x1c]
jmp 0x5954aa
mov eax, dword [ebp + 0x1c]
jmp 0x59556b
xor edx, edx
jmp 0x594f30
mov esi, dword [ebx + 0x10]
mov edi, dword [edx + 0xc]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x594fe9
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x594fe9
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
jmp 0x5959c9
mov edi, dword [esp + 0x70]
mov edi, dword [edi + 0xc]
mov dword [esp + 0x34], edi
mov esi, dword [ebx + 0x10]
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x70]
add dword [edx + 0xc], eax
add dword [ebx + 0x10], eax
add dword [edx + 0x14], eax
sub dword [edx + 0x10], eax
sub dword [ebx + 0x14], eax
jne 0x595e30
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
jmp 0x595e30
mov ecx, pe_nt_image_headers32
jmp 0x59514e
mov dword [esp], ebp
call fcn.0059ba28
jmp 0x595b71
xor edx, edx
jmp 0x594fa1
mov cl, 2
jmp 0x595df6
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
add edi, 7
jmp 0x5959c9
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
add edi, 6
jmp 0x5959c9
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
add edi, 5
jmp 0x5959c9
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
add edi, 2
jmp 0x5959c9
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
add edi, 4
jmp 0x5959c9
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x18], ebx
add edi, 3
jmp 0x5959c9
mov edx, dword [ebp + 0x44]
mov eax, dword [ebp + 0x4c]
mov word [edx + eax*2 - 2], 0
lea ecx, [eax + eax - 2]
xor eax, eax
mov edi, edx
rep stosb byte es:[edi], al
mov eax, dword [ebp + 0x74]
test eax, eax
jne 0x595b71
mov dword [ebp + 0x6c], 0
mov dword [ebp + 0x5c], 0
mov dword [ebp + 0x16b4], 0
jmp 0x595b71