Function at 0x585240
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x24
push ebx
mov ebx, dword [esp + 0x2c]
push ebp
mov ebp, dword [esp + 0x38]
push esi
mov ebx, dword [ebx]
push edi
mov eax, dword [ebp + 0x19c]
mov ecx, dword [ebp + 0x190]
mov edx, dword [ebp + 0x194]
mov esi, dword [ebp + 0x198]
mov edi, dword [ebp + 0x18c]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x1a0]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp + 0x184]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], ecx
mov ecx, dword [ebp + 0x78]
shr ecx, 0xd
movzx eax, byte [eax + 8]
and ecx, 1
mov dword [esp + 0x30], eax
cmp eax, 6
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], ebx
ja case.0x5852e5.3
mov ebp, dword [esp + 0x30]
jmp dword [ebp*4 + 0x586420]
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
movzx ecx, byte [ecx + 9]
dec ecx
cmp ecx, 0xf
ja case.0x5852e5.3
movzx ecx, byte [ecx + 0x586454]
jmp dword [ecx*4 + 0x58643c]
mov ecx, 7
mov dword [esp + 0x40], ecx
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
mov dh, byte [eax]
mov dl, dh
shr dl, cl
and dl, 1
movzx ecx, dl
cmp cx, si
jne 0x58533d
mov dl, byte [ebp + 0x16c]
mov ecx, 7
sub ecx, dword [esp + 0x40]
mov ebx, 0x7f7f
sar ebx, cl
mov ecx, dword [esp + 0x40]
and bl, dh
shl dl, cl
or bl, dl
mov byte [eax], bl
mov ebx, dword [esp + 0x10]
jmp 0x585341
mov ecx, dword [esp + 0x40]
test ecx, ecx
jne 0x58534d
mov ecx, 7
inc eax
jmp 0x58534e
dec ecx
sub ebx, 1
mov dword [esp + 0x40], ecx
mov dword [esp + 0x10], ebx
jne 0x585304
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test edi, edi
je 0x585426
mov edx, 6
mov dword [esp + 0x38], edx
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
mov cl, byte [eax]
mov byte [esp + 0x40], cl
mov ecx, 6
sub ecx, edx
mov edx, 0x3f3f
sar edx, cl
movzx ecx, byte [esp + 0x38]
mov dword [esp + 0x2c], edx
mov dh, byte [esp + 0x40]
mov dl, dh
shr dl, cl
and dl, 3
movzx ecx, dl
cmp cx, si
jne 0x5853c7
mov dl, byte [ebp + 0x16c]
mov ecx, dword [esp + 0x38]
shl dl, cl
mov ecx, dword [esp + 0x2c]
and cl, dh
jmp 0x5853fa
mov cl, byte [esp + 0x38]
movzx edx, dh
shr edx, cl
and edx, 3
lea ecx, [edx*4]
or ecx, edx
shl ecx, 2
or ecx, edx
shl ecx, 2
or ecx, edx
mov dl, byte [ecx + edi]
mov ecx, dword [esp + 0x38]
shr dl, 6
shl dl, cl
mov ecx, dword [esp + 0x2c]
and cl, byte [esp + 0x40]
or dl, cl
mov byte [eax], dl
mov edx, dword [esp + 0x38]
test edx, edx
jne 0x58540e
mov edx, 6
inc eax
jmp 0x585411
sub edx, 2
mov dword [esp + 0x38], edx
sub ebx, 1
jne 0x585383
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov ecx, 6
mov dword [esp + 0x40], ecx
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
nop
mov dh, byte [eax]
mov dl, dh
shr dl, cl
and dl, 3
movzx ecx, dl
cmp cx, si
jne 0x585479
mov dl, byte [ebp + 0x16c]
mov ecx, 6
sub ecx, dword [esp + 0x40]
mov ebx, 0x3f3f
sar ebx, cl
mov ecx, dword [esp + 0x40]
and bl, dh
shl dl, cl
or bl, dl
mov byte [eax], bl
mov ebx, dword [esp + 0x10]
jmp 0x58547d
mov ecx, dword [esp + 0x40]
test ecx, ecx
jne 0x585489
mov ecx, 6
inc eax
jmp 0x58548c
sub ecx, 2
sub ebx, 1
mov dword [esp + 0x40], ecx
mov dword [esp + 0x10], ebx
jne 0x585440
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test edi, edi
je 0x585558
mov edx, 4
mov dword [esp + 0x38], edx
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
mov cl, byte [eax]
mov byte [esp + 0x40], cl
mov ecx, 4
sub ecx, edx
mov edx, 0xf0f
sar edx, cl
movzx ecx, byte [esp + 0x38]
mov dword [esp + 0x2c], edx
mov dh, byte [esp + 0x40]
mov dl, dh
shr dl, cl
and dl, 0xf
movzx ecx, dl
cmp cx, si
jne 0x585505
mov dl, byte [ebp + 0x16c]
mov ecx, dword [esp + 0x38]
shl dl, cl
mov ecx, dword [esp + 0x2c]
and cl, dh
jmp 0x58552c
mov cl, byte [esp + 0x38]
movzx edx, dh
shr edx, cl
and edx, 0xf
mov ecx, edx
shl ecx, 4
or ecx, edx
mov dl, byte [ecx + edi]
mov ecx, dword [esp + 0x38]
shr dl, 4
shl dl, cl
mov ecx, dword [esp + 0x2c]
and cl, byte [esp + 0x40]
or dl, cl
mov byte [eax], dl
mov edx, dword [esp + 0x38]
test edx, edx
jne 0x585540
mov edx, 4
inc eax
jmp 0x585543
sub edx, 4
mov dword [esp + 0x38], edx
sub ebx, 1
jne 0x5854c1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov ecx, 4
mov dword [esp + 0x40], ecx
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
mov dh, byte [eax]
mov dl, dh
shr dl, cl
and dl, 0xf
movzx ecx, dl
cmp cx, si
jne 0x5855a9
mov dl, byte [ebp + 0x16c]
mov ecx, 4
sub ecx, dword [esp + 0x40]
mov ebx, 0xf0f
sar ebx, cl
mov ecx, dword [esp + 0x40]
and bl, dh
shl dl, cl
or bl, dl
mov byte [eax], bl
mov ebx, dword [esp + 0x10]
jmp 0x5855ad
mov ecx, dword [esp + 0x40]
test ecx, ecx
jne 0x5855b9
mov ecx, 4
inc eax
jmp 0x5855bc
sub ecx, 4
sub ebx, 1
mov dword [esp + 0x40], ecx
mov dword [esp + 0x10], ebx
jne 0x585570
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test edi, edi
je 0x58560c
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
mov dl, byte [eax]
movzx ecx, dl
cmp cx, si
jne 0x5855f6
mov cl, byte [ebp + 0x16c]
jmp 0x5855fc
movzx ecx, dl
mov cl, byte [ecx + edi]
mov byte [eax], cl
inc eax
sub ebx, 1
jne 0x5855e4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test ebx, ebx
je case.0x5852e5.3
movzx edx, word [ebp + 0x1bc]
nop dword [eax + eax]
movzx ecx, byte [eax]
cmp cx, dx
jne 0x585630
mov cl, byte [ebp + 0x16c]
mov byte [eax], cl
inc eax
sub ebx, 1
jne 0x585620
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
cmp dword [esp + 0x18], 0
je 0x5856ca
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
mov edi, 0x100
nop dword [eax]
mov cl, byte [eax]
mov dl, byte [eax + 1]
mov byte [esp + 0x40], dl
movzx edx, cl
imul edx, edi
mov byte [esp + 0x38], cl
movzx ecx, byte [esp + 0x40]
add dx, cx
cmp dx, si
jne 0x585689
movzx ecx, word [ebp + 0x16c]
jmp 0x5856ac
movzx ecx, byte [esp + 0x14]
movzx esi, byte [esp + 0x40]
movzx edx, byte [esp + 0x38]
shr esi, cl
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + esi*4]
movzx esi, word [ebp + 0x1bc]
movzx ecx, word [ecx + edx*2]
mov edx, ecx
shr cx, 8
movzx ecx, cx
mov byte [eax], cl
mov byte [eax + 1], dl
add eax, 2
sub ebx, 1
jne 0x585660
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test ebx, ebx
je case.0x5852e5.3
movzx esi, word [ebp + 0x1bc]
mov edi, 0x100
nop
movzx edx, byte [eax]
movzx ecx, byte [eax + 1]
imul edx, edi
add dx, cx
cmp dx, si
jne 0x585703
movzx edx, word [ebp + 0x16c]
mov ecx, edx
mov byte [eax + 1], dl
shr ecx, 8
mov byte [eax], cl
add eax, 2
sub ebx, 1
jne 0x5856e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
mov cl, byte [ecx + 9]
test ebx, ebx
je case.0x5852e5.3
cmp cl, 8
jne 0x585805
test edi, edi
je 0x5857ac
movzx esi, word [ebp + 0x1b6]
lea ecx, [eax + 1]
nop dword [eax]
mov dl, byte [ecx - 1]
movzx eax, dl
cmp ax, si
jne 0x58577f
movzx eax, byte [ecx]
cmp ax, word [ebp + 0x1b8]
jne 0x58577f
movzx eax, byte [ecx + 1]
cmp ax, word [ebp + 0x1ba]
jne 0x58577f
movzx eax, byte [ebp + 0x166]
mov byte [ecx - 1], al
movzx eax, byte [ebp + 0x168]
mov byte [ecx], al
mov al, byte [ebp + 0x16a]
jmp 0x585799
movzx eax, dl
movzx eax, byte [eax + edi]
mov byte [ecx - 1], al
movzx eax, byte [ecx]
movzx eax, byte [eax + edi]
mov byte [ecx], al
movzx eax, byte [ecx + 1]
mov al, byte [eax + edi]
mov byte [ecx + 1], al
add ecx, 3
sub ebx, 1
jne 0x585740
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
movzx edx, word [ebp + 0x1b6]
lea ecx, [eax + 2]
movzx eax, byte [ecx - 2]
cmp ax, dx
jne 0x5857f5
movzx eax, byte [ecx - 1]
cmp ax, word [ebp + 0x1b8]
jne 0x5857f5
movzx eax, byte [ecx]
cmp ax, word [ebp + 0x1ba]
jne 0x5857f5
movzx eax, byte [ebp + 0x166]
mov byte [ecx - 2], al
movzx eax, byte [ebp + 0x168]
mov byte [ecx - 1], al
movzx eax, byte [ebp + 0x16a]
mov byte [ecx], al
add ecx, 3
sub ebx, 1
jne 0x5857b6
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov edi, dword [esp + 0x18]
test edi, edi
je 0x58592e
lea esi, [eax + 2]
mov edx, 0x100
nop dword [eax]
mov al, byte [esi - 2]
mov cl, byte [esi - 1]
mov byte [esp + 0x40], cl
movzx ecx, al
mov byte [esp + 0x38], al
movzx eax, dx
imul ecx, eax
movzx eax, byte [esp + 0x40]
add cx, ax
movzx eax, word [ebp + 0x1b6]
cmp cx, ax
jne 0x5858aa
movzx ecx, byte [esi]
movzx eax, dx
imul ecx, eax
movzx eax, byte [esi + 1]
add cx, ax
cmp cx, word [ebp + 0x1b8]
jne 0x5858aa
movzx ecx, byte [esi + 2]
movzx eax, dx
imul ecx, eax
movzx eax, byte [esi + 3]
add cx, ax
cmp cx, word [ebp + 0x1ba]
jne 0x5858aa
movzx ecx, word [ebp + 0x166]
mov eax, ecx
mov byte [esi - 1], cl
movzx ecx, word [ebp + 0x168]
shr eax, 8
mov byte [esi - 2], al
mov eax, ecx
shr eax, 8
mov byte [esi], al
movzx eax, word [ebp + 0x16a]
mov byte [esi + 1], cl
jmp 0x585907
mov eax, dword [esp + 0x14]
movzx ebx, al
movzx eax, byte [esp + 0x40]
mov cl, bl
shr eax, cl
movzx ecx, byte [esp + 0x38]
movzx edx, byte [esi]
mov eax, dword [edi + eax*4]
movzx ecx, word [eax + ecx*2]
mov eax, ecx
mov byte [esi - 1], cl
shr eax, 8
mov cl, bl
mov byte [esi - 2], al
movzx eax, byte [esi + 1]
shr eax, cl
mov ebx, dword [esp + 0x10]
mov eax, dword [edi + eax*4]
movzx edx, word [eax + edx*2]
mov eax, edx
mov byte [esi + 1], dl
shr eax, 8
mov edx, 0x100
mov byte [esi], al
movzx eax, byte [esi + 3]
shr eax, cl
movzx ecx, byte [esi + 2]
mov eax, dword [edi + eax*4]
movzx eax, word [eax + ecx*2]
mov ecx, eax
shr ax, 8
movzx eax, ax
mov byte [esi + 2], al
mov byte [esi + 3], cl
add esi, 6
sub ebx, 1
mov dword [esp + 0x10], ebx
jne 0x585820
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
movzx edi, word [ebp + 0x1b6]
lea edx, [eax + 2]
mov esi, 0x100
nop dword [eax]
movzx ecx, byte [edx - 2]
movzx eax, byte [edx - 1]
imul ecx, esi
add cx, ax
cmp cx, di
jne 0x5859b5
movzx ecx, byte [edx]
movzx eax, byte [edx + 1]
imul ecx, esi
add cx, ax
cmp cx, word [ebp + 0x1b8]
jne 0x5859b5
movzx ecx, byte [edx + 2]
movzx eax, byte [edx + 3]
imul ecx, esi
add cx, ax
cmp cx, word [ebp + 0x1ba]
jne 0x5859b5
movzx ecx, word [ebp + 0x166]
mov eax, ecx
mov byte [edx - 1], cl
movzx ecx, word [ebp + 0x168]
shr eax, 8
mov byte [edx - 2], al
mov eax, ecx
shr eax, 8
mov byte [edx + 1], cl
movzx ecx, word [ebp + 0x16a]
mov byte [edx], al
mov eax, ecx
shr eax, 8
mov byte [edx + 2], al
mov byte [edx + 3], cl
add edx, 6
sub ebx, 1
jne 0x585940
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov ebp, dword [esp + 0x38]
cmp byte [ebp + 9], 8
mov ebp, dword [esp + 0x40]
jne 0x585b6f
test esi, esi
je 0x585b0a
test edx, edx
je 0x585b0a
test edi, edi
je 0x585b0a
test ebx, ebx
je case.0x5852e5.3
mov edx, 0xff
test ecx, ecx
jne 0x585a90
movzx esi, byte [eax + 1]
mov dword [esp + 0x40], esi
cmp si, dx
jne 0x585a19
movzx ecx, byte [eax]
mov cl, byte [ecx + edi]
jmp 0x585a76
test si, si
jne 0x585a26
mov cl, byte [ebp + 0x16c]
jmp 0x585a76
mov edx, dword [esp + 0x20]
movzx ecx, byte [eax]
movzx ecx, byte [ecx + edx]
movzx edx, si
mov esi, ecx
movzx ecx, word [ebp + 0x176]
imul esi, edx
mov edx, 0xff
sub edx, dword [esp + 0x40]
movzx edx, dx
imul edx, ecx
mov ecx, 0x80
add si, dx
add si, cx
movzx ecx, si
mov edx, ecx
shr edx, 8
add edx, ecx
shr edx, 8
movzx ecx, dl
mov edx, dword [esp + 0x2c]
mov cl, byte [ecx + edx]
mov edx, 0xff
mov byte [eax], cl
add eax, 2
sub ebx, 1
jne 0x585a04
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
movzx esi, byte [eax + 1]
mov dword [esp + 0x40], esi
cmp si, dx
jne 0x585aa5
movzx ecx, byte [eax]
mov dl, byte [ecx + edi]
jmp 0x585af3
test si, si
jne 0x585ab2
mov dl, byte [ebp + 0x16c]
jmp 0x585af3
mov edx, dword [esp + 0x20]
movzx ecx, byte [eax]
movzx ecx, byte [ecx + edx]
movzx edx, si
mov esi, ecx
movzx ecx, word [ebp + 0x176]
imul esi, edx
mov edx, 0xff
sub edx, dword [esp + 0x40]
movzx edx, dx
imul edx, ecx
mov ecx, 0x80
add si, dx
add si, cx
movzx ecx, si
mov edx, ecx
shr edx, 8
add edx, ecx
shr edx, 8
mov byte [eax], dl
add eax, 2
mov edx, 0xff
sub ebx, 1
jne 0x585a90
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test ebx, ebx
je case.0x5852e5.3
mov cl, byte [eax + 1]
test cl, cl
jne 0x585b23
mov cl, byte [ebp + 0x16c]
mov byte [eax], cl
jmp 0x585b5f
cmp cl, 0xff
jae 0x585b5f
movzx edi, byte [eax]
mov edx, 0xff
movzx esi, cl
movzx ecx, word [ebp + 0x16c]
sub edx, esi
movzx edx, dx
imul edx, ecx
mov ecx, 0x80
imul edi, esi
add di, dx
add di, cx
movzx ecx, di
mov edx, ecx
shr edx, 8
add edx, ecx
shr edx, 8
mov byte [eax], dl
add eax, 2
sub ebx, 1
jne 0x585b12
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
cmp dword [esp + 0x18], 0
je 0x585d57
cmp dword [esp + 0x28], 0
je 0x585d57
cmp dword [esp + 0x1c], 0
je 0x585d57
test ebx, ebx
je case.0x5852e5.3
lea edi, [eax + 1]
mov eax, 0x100
mov esi, 0xffff
test ecx, ecx
je 0x585c84
nop dword [eax]
movzx ecx, byte [edi + 1]
lea edx, [edi - 1]
movzx eax, ax
imul ecx, eax
movzx eax, byte [edi + 2]
add cx, ax
movzx eax, cx
cmp ax, si
jne 0x585bf3
mov cl, byte [esp + 0x14]
movzx eax, byte [edi]
mov ebp, dword [esp + 0x18]
shr eax, cl
movzx ecx, byte [edx]
mov eax, dword [ebp + eax*4]
mov ebp, dword [esp + 0x40]
movzx eax, word [eax + ecx*2]
mov ecx, eax
shr ax, 8
movzx eax, ax
jmp 0x585c67
mov dword [esp + 0x38], edx
test ax, ax
jne 0x585c0e
movzx eax, word [ebp + 0x16c]
mov ecx, eax
shr ax, 8
movzx eax, ax
jmp 0x585c67
mov cl, byte [esp + 0x14]
mov esi, eax
movzx eax, byte [edi]
shr eax, cl
movzx ecx, byte [edx]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + eax*4]
movzx edx, word [eax + ecx*2]
mov ecx, 0xffff
movzx eax, word [ebp + 0x176]
sub ecx, esi
imul eax, ecx
imul edx, esi
mov esi, 0xffff
add edx, 0x8000
add eax, edx
mov edx, dword [esp + 0x38]
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
mov eax, ecx
shr cx, 8
mov dword [esp + 0x30], eax
movzx eax, cx
mov ecx, dword [esp + 0x30]
mov byte [edx], al
mov eax, 0x100
mov byte [edi], cl
add edi, 4
sub ebx, 1
jne 0x585bb0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
movzx ecx, byte [edi + 1]
lea edx, [edi - 1]
movzx eax, ax
imul ecx, eax
movzx eax, byte [edi + 2]
add cx, ax
movzx eax, cx
cmp ax, si
jne 0x585cbe
mov cl, byte [esp + 0x14]
movzx eax, byte [edi]
mov ebp, dword [esp + 0x18]
shr eax, cl
movzx ecx, byte [edx]
mov eax, dword [ebp + eax*4]
mov ebp, dword [esp + 0x40]
movzx eax, word [eax + ecx*2]
jmp 0x585d31
mov dword [esp + 0x38], edx
test ax, ax
jne 0x585cd0
movzx eax, word [ebp + 0x16c]
jmp 0x585d31
movzx ecx, byte [esp + 0x14]
mov esi, eax
movzx eax, byte [edi]
shr eax, cl
movzx ecx, byte [edx]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + eax*4]
movzx edx, word [eax + ecx*2]
mov ecx, 0xffff
movzx eax, word [ebp + 0x176]
sub ecx, esi
imul edx, esi
mov esi, 0xffff
imul eax, ecx
movzx ecx, byte [esp + 0x14]
add edx, 0x8000
add eax, edx
mov edx, eax
shr edx, 0x10
add edx, eax
shr edx, 0x10
movzx eax, dl
shr eax, cl
mov ecx, dword [esp + 0x28]
shr edx, 8
mov eax, dword [ecx + eax*4]
movzx eax, word [eax + edx*2]
mov edx, dword [esp + 0x38]
mov ecx, eax
shr ax, 8
movzx eax, ax
mov byte [edx], al
mov eax, 0x100
mov byte [edi], cl
add edi, 4
sub ebx, 1
jne 0x585c84
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test ebx, ebx
je case.0x5852e5.3
lea edi, [eax + 1]
mov edx, 0xffff
mov eax, 0x100
nop dword [eax]
movzx ecx, byte [edi + 1]
movzx eax, ax
imul ecx, eax
movzx eax, byte [edi + 2]
add cx, ax
movzx eax, cx
test ax, ax
jne 0x585d92
movzx ecx, word [ebp + 0x16c]
jmp 0x585dcf
cmp ax, dx
jae 0x585dd9
movzx esi, byte [edi - 1]
mov edx, eax
movzx eax, byte [edi]
mov ecx, 0xffff
shl esi, 8
sub ecx, edx
add esi, eax
movzx eax, word [ebp + 0x16c]
imul eax, ecx
imul esi, edx
mov edx, 0xffff
add eax, 0x8000
add eax, esi
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
mov eax, ecx
mov byte [edi], cl
shr eax, 8
mov byte [edi - 1], al
add edi, 4
mov eax, 0x100
sub ebx, 1
jne 0x585d70
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
cmp byte [ecx + 9], 8
jne 0x586084
mov ecx, esi
test ecx, ecx
je 0x585f89
test edx, edx
je 0x585f89
test edi, edi
je 0x585f89
test ebx, ebx
je case.0x5852e5.3
lea esi, [eax + 1]
mov al, byte [esi + 2]
cmp al, 0xff
jne 0x585e4c
movzx eax, byte [esi - 1]
movzx eax, byte [eax + edi]
mov byte [esi - 1], al
movzx eax, byte [esi]
movzx eax, byte [eax + edi]
mov byte [esi], al
movzx eax, byte [esi + 1]
mov cl, byte [eax + edi]
jmp 0x585f6e
test al, al
jne 0x585e6e
movzx eax, byte [ebp + 0x166]
mov cl, byte [ebp + 0x16a]
mov byte [esi - 1], al
movzx eax, byte [ebp + 0x168]
mov byte [esi], al
jmp 0x585f6e
movzx edx, al
mov eax, 0xff
sub eax, edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x40], eax
movzx eax, byte [esi - 1]
movzx eax, byte [eax + ecx]
movzx ecx, dx
mov edx, eax
movzx eax, word [ebp + 0x170]
imul edx, ecx
mov ecx, dword [esp + 0x40]
movzx ecx, cx
imul ecx, eax
mov eax, 0x80
add dx, cx
add dx, ax
movzx eax, dx
mov ecx, eax
shr ecx, 8
add ecx, eax
shr ecx, 8
cmp dword [esp + 0x24], 0
jne 0x585eca
movzx eax, cl
mov ecx, dword [esp + 0x2c]
mov cl, byte [eax + ecx]
movzx eax, byte [esi]
mov byte [esi - 1], cl
mov ecx, dword [esp + 0x20]
movzx edx, byte [eax + ecx]
mov ecx, dword [esp + 0x38]
movzx eax, word [ebp + 0x172]
movzx ecx, cx
imul edx, ecx
mov ecx, dword [esp + 0x40]
movzx ecx, cx
imul ecx, eax
mov eax, 0x80
add dx, cx
add dx, ax
movzx eax, dx
mov ecx, eax
shr ecx, 8
add ecx, eax
shr ecx, 8
cmp dword [esp + 0x24], 0
jne 0x585f1c
movzx eax, cl
mov ecx, dword [esp + 0x2c]
mov cl, byte [eax + ecx]
movzx eax, byte [esi + 1]
mov byte [esi], cl
mov ecx, dword [esp + 0x20]
movzx edx, byte [eax + ecx]
mov ecx, dword [esp + 0x38]
movzx eax, word [ebp + 0x174]
movzx ecx, cx
imul edx, ecx
mov ecx, dword [esp + 0x40]
movzx ecx, cx
imul ecx, eax
mov eax, 0x80
add dx, cx
add dx, ax
movzx eax, dx
mov ecx, eax
shr ecx, 8
add ecx, eax
shr ecx, 8
cmp dword [esp + 0x24], 0
jne 0x585f6e
mov edx, dword [esp + 0x2c]
movzx eax, cl
mov cl, byte [eax + edx]
mov byte [esi + 1], cl
add esi, 4
mov ecx, dword [esp + 0x20]
sub ebx, 1
jne 0x585e25
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test ebx, ebx
je case.0x5852e5.3
lea ecx, [eax + 1]
mov dword [esp + 0x40], ecx
mov al, byte [ecx + 2]
test al, al
jne 0x585fc1
movzx eax, byte [ebp + 0x166]
mov byte [ecx - 1], al
movzx eax, byte [ebp + 0x168]
mov byte [ecx], al
movzx eax, byte [ebp + 0x16a]
mov byte [ecx + 1], al
jmp 0x58606c
cmp al, 0xff
jae 0x58606c
movzx edx, byte [ecx - 1]
mov edi, 0xff
movzx esi, al
movzx eax, word [ebp + 0x166]
sub edi, esi
imul edx, esi
movzx ecx, di
imul ecx, eax
mov eax, 0x80
add dx, cx
add dx, ax
movzx eax, dx
mov ecx, eax
shr ecx, 8
add ecx, eax
mov eax, dword [esp + 0x40]
shr ecx, 8
movzx edx, byte [eax]
mov byte [eax - 1], cl
movzx eax, word [ebp + 0x168]
imul edx, esi
movzx ecx, di
imul ecx, eax
mov eax, 0x80
add dx, cx
add dx, ax
movzx eax, dx
mov ecx, eax
shr ecx, 8
add ecx, eax
mov eax, dword [esp + 0x40]
shr ecx, 8
movzx edx, byte [eax + 1]
mov byte [eax], cl
movzx eax, word [ebp + 0x16a]
imul edx, esi
movzx ecx, di
imul ecx, eax
mov eax, 0x80
add dx, cx
add dx, ax
movzx eax, dx
mov ecx, eax
shr ecx, 8
add ecx, eax
mov eax, dword [esp + 0x40]
shr ecx, 8
mov byte [eax + 1], cl
mov ecx, eax
add ecx, 4
mov dword [esp + 0x40], ecx
sub ebx, 1
jne 0x585f98
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov edi, dword [esp + 0x18]
test edi, edi
je 0x5862f0
cmp dword [esp + 0x28], 0
je 0x5862f0
cmp dword [esp + 0x1c], 0
je 0x5862f0
test ebx, ebx
je case.0x5852e5.3
lea esi, [eax + 1]
mov edx, 0xffff
mov eax, 0x100
nop dword [eax + eax]
movzx ecx, byte [esi + 5]
movzx eax, ax
imul ecx, eax
movzx eax, byte [esi + 6]
add cx, ax
movzx ecx, cx
cmp cx, dx
jne 0x58613d
mov eax, dword [esp + 0x14]
movzx ebx, al
movzx eax, byte [esi]
mov cl, bl
shr eax, cl
movzx ecx, byte [esi - 1]
movzx edx, byte [esi + 1]
mov eax, dword [edi + eax*4]
movzx ecx, word [eax + ecx*2]
mov eax, ecx
mov byte [esi], cl
shr eax, 8
mov cl, bl
mov byte [esi - 1], al
movzx eax, byte [esi + 2]
shr eax, cl
mov ebx, dword [esp + 0x10]
mov eax, dword [edi + eax*4]
movzx edx, word [eax + edx*2]
mov eax, edx
mov byte [esi + 2], dl
shr eax, 8
mov byte [esi + 1], al
movzx eax, byte [esi + 4]
shr eax, cl
movzx ecx, byte [esi + 3]
mov eax, dword [edi + eax*4]
movzx eax, word [eax + ecx*2]
mov ecx, eax
shr ax, 8
movzx eax, ax
jmp 0x5862c8
test cx, cx
jne 0x58617a
movzx ecx, word [ebp + 0x166]
mov eax, ecx
mov byte [esi], cl
movzx ecx, word [ebp + 0x168]
shr eax, 8
mov byte [esi - 1], al
mov eax, ecx
shr eax, 8
mov byte [esi + 1], al
movzx eax, word [ebp + 0x16a]
mov byte [esi + 2], cl
mov ecx, eax
shr ax, 8
movzx eax, ax
jmp 0x5862cd
mov eax, dword [esp + 0x14]
mov edx, ecx
mov ebx, dword [esp + 0x1c]
mov edi, 0xffff
movzx eax, al
sub edi, edx
mov dword [esp + 0x40], eax
mov cl, byte [esp + 0x40]
movzx eax, byte [esi]
shr eax, cl
movzx ecx, byte [esi - 1]
mov dword [esp + 0x38], edx
mov eax, dword [ebx + eax*4]
movzx ecx, word [eax + ecx*2]
movzx eax, word [ebp + 0x170]
imul ecx, edx
imul eax, edi
add ecx, 0x8000
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
cmp dword [esp + 0x24], 0
jne 0x5861ed
mov edx, ecx
mov cl, byte [esp + 0x14]
movzx eax, dl
shr eax, cl
mov ecx, dword [esp + 0x28]
shr edx, 8
mov eax, dword [ecx + eax*4]
movzx ecx, word [eax + edx*2]
mov edx, dword [esp + 0x38]
mov eax, ecx
mov byte [esi], cl
mov cl, byte [esp + 0x40]
shr eax, 8
mov byte [esi - 1], al
movzx eax, byte [esi + 2]
shr eax, cl
movzx ecx, byte [esi + 1]
mov eax, dword [ebx + eax*4]
movzx ecx, word [eax + ecx*2]
movzx eax, word [ebp + 0x172]
imul ecx, edx
imul eax, edi
add ecx, 0x8000
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
cmp dword [esp + 0x24], 0
jne 0x58624f
mov edx, ecx
mov cl, byte [esp + 0x14]
movzx eax, dl
shr eax, cl
mov ecx, dword [esp + 0x28]
shr edx, 8
mov eax, dword [ecx + eax*4]
movzx ecx, word [eax + edx*2]
mov edx, dword [esp + 0x38]
mov eax, ecx
mov byte [esi + 2], cl
mov cl, byte [esp + 0x40]
shr eax, 8
mov byte [esi + 1], al
movzx eax, byte [esi + 4]
shr eax, cl
movzx ecx, byte [esi + 3]
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x10]
movzx ecx, word [eax + ecx*2]
movzx eax, word [ebp + 0x174]
imul ecx, edx
imul eax, edi
add ecx, 0x8000
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
cmp dword [esp + 0x24], 0
jne 0x5862b2
mov edx, ecx
mov cl, byte [esp + 0x14]
movzx eax, dl
shr eax, cl
mov ecx, dword [esp + 0x28]
shr edx, 8
mov eax, dword [ecx + eax*4]
movzx ecx, word [eax + edx*2]
mov edi, dword [esp + 0x18]
movzx eax, cx
shr cx, 8
mov dword [esp + 0x40], eax
movzx eax, cx
mov ecx, dword [esp + 0x40]
mov edx, 0xffff
mov byte [esi + 3], al
mov eax, 0x100
mov byte [esi + 4], cl
add esi, 8
sub ebx, 1
mov dword [esp + 0x10], ebx
jne 0x5860c0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
test ebx, ebx
je case.0x5852e5.3
lea edi, [eax + 1]
mov edx, 0xffff
mov eax, 0x100
movzx ecx, byte [edi + 5]
movzx eax, ax
imul ecx, eax
movzx eax, byte [edi + 6]
add cx, ax
movzx eax, cx
test ax, ax
jne 0x58634d
movzx ecx, word [ebp + 0x166]
mov eax, ecx
mov byte [edi], cl
movzx ecx, word [ebp + 0x168]
shr eax, 8
mov byte [edi - 1], al
mov eax, ecx
shr eax, 8
mov byte [edi + 2], cl
movzx ecx, word [ebp + 0x16a]
mov byte [edi + 1], al
jmp 0x5863fc
cmp ax, dx
jae 0x586407
movzx ecx, byte [edi - 1]
mov edx, eax
movzx eax, byte [edi]
mov esi, 0xffff
shl ecx, 8
sub esi, edx
add ecx, eax
movzx eax, word [ebp + 0x166]
imul ecx, edx
imul eax, esi
add ecx, 0x8000
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
mov eax, ecx
mov byte [edi], cl
movzx ecx, byte [edi + 1]
shl ecx, 8
shr eax, 8
mov byte [edi - 1], al
movzx eax, byte [edi + 2]
add ecx, eax
movzx eax, word [ebp + 0x168]
imul ecx, edx
imul eax, esi
add ecx, 0x8000
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
mov eax, ecx
mov byte [edi + 2], cl
movzx ecx, byte [edi + 3]
shr eax, 8
shl ecx, 8
mov byte [edi + 1], al
movzx eax, byte [edi + 4]
add ecx, eax
movzx eax, word [ebp + 0x16a]
imul ecx, edx
mov edx, 0xffff
imul eax, esi
add ecx, 0x8000
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add ecx, eax
shr ecx, 0x10
mov eax, ecx
mov byte [edi + 4], cl
shr eax, 8
mov byte [edi + 3], al
add edi, 8
mov eax, 0x100
sub ebx, 1
jne 0x586305
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret