// File: boomanaiden154[P]HTTPClientHPP/./client.hpp
// Function: HTTPClient::parseURI(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
static struct uri parseURI(std::string uri)
    {
        struct uri toReturn;
        toReturn.port = -1;
        int index = 0;
        while(uri[index] != ':')
        {
            toReturn.protocol += uri[index];
            index++;
        }
        index += 3;
        while(uri[index] != ':' && uri[index] != '/' && index < uri.size())
        {
            toReturn.domain += uri[index];
            index++;
        }
        if(uri[index] == ':')
        {
            index++;
            std::string portTemp;
            while(uri[index] != '/' && index < uri.size())
            {
                portTemp += uri[index];
                index++;
            }
            toReturn.port = std::stoi(portTemp);
        }
        else
        {
            if(toReturn.protocol == "http")
            {
                toReturn.port = 80;
            }
            else if(toReturn.protocol == "https")
            {
                toReturn.port = 443;
            }
        }
        while(index < uri.size())
        {
            toReturn.path += uri[index];
            index++;
        }
        return toReturn;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rsi, -0x60(%rbp)
movq %rdi, -0x50(%rbp)
movq %rdi, %rax
movq %rax, -0x58(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x11(%rbp)
callq 0x5ec0
movq -0x50(%rbp), %rdi
movl $0xffffffff, 0x60(%rdi) # imm = 0xFFFFFFFF
movl $0x0, -0x18(%rbp)
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0x68(%rbp)
jmp 0x4390
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
je 0x43dd
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0x70(%rbp)
jmp 0x43af
movq -0x50(%rbp), %rdi
movq -0x70(%rbp), %rax
movsbl (%rax), %esi
callq 0x31b0
jmp 0x43c1
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x437d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x46a7
movl -0x18(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x18(%rbp)
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0x78(%rbp)
jmp 0x43f9
movq -0x78(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x3a, %ecx
movb %al, -0x79(%rbp)
je 0x445b
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0x88(%rbp)
jmp 0x4420
movq -0x88(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x2f, %ecx
movb %al, -0x79(%rbp)
je 0x445b
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
callq 0x31e0
movq %rax, %rcx
movq -0x90(%rbp), %rax
cmpq %rcx, %rax
setb %al
movb %al, -0x79(%rbp)
movb -0x79(%rbp), %al
testb $0x1, %al
jne 0x4464
jmp 0x44a1
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0x98(%rbp)
jmp 0x447a
movq -0x50(%rbp), %rdi
movq -0x98(%rbp), %rax
movsbl (%rax), %esi
addq $0x20, %rdi
callq 0x31b0
jmp 0x4493
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x43e6
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0xa0(%rbp)
jmp 0x44b7
movq -0xa0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x45c4
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x33c0
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0xa8(%rbp)
jmp 0x44f2
movq -0xa8(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x2f, %ecx
movb %al, -0xa9(%rbp)
je 0x4533
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
callq 0x31e0
movq %rax, %rcx
movq -0xb8(%rbp), %rax
cmpq %rcx, %rax
setb %al
movb %al, -0xa9(%rbp)
movb -0xa9(%rbp), %al
testb $0x1, %al
jne 0x453f
jmp 0x4592
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0xc0(%rbp)
jmp 0x4555
movq -0xc0(%rbp), %rax
movsbl (%rax), %esi
leaq -0x48(%rbp), %rdi
callq 0x31b0
jmp 0x456a
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x44dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x31a0
jmp 0x46a7
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
movl $0xa, %edx
callq 0x5f00
movl %eax, -0xc4(%rbp)
jmp 0x45ac
movq -0x50(%rbp), %rax
movl -0xc4(%rbp), %ecx
movl %ecx, 0x60(%rax)
leaq -0x48(%rbp), %rdi
callq 0x31a0
jmp 0x4628
movq -0x50(%rbp), %rdi
leaq 0x4a72(%rip), %rsi      # 0x9041
callq 0x4800
movb %al, -0xc5(%rbp)
jmp 0x45dc
movb -0xc5(%rbp), %al
testb $0x1, %al
jne 0x45e8
jmp 0x45f5
movq -0x50(%rbp), %rax
movl $0x50, 0x60(%rax)
jmp 0x4626
movq -0x50(%rbp), %rdi
leaq 0x4a3b(%rip), %rsi      # 0x903b
callq 0x4800
movb %al, -0xc6(%rbp)
jmp 0x460d
movb -0xc6(%rbp), %al
testb $0x1, %al
jne 0x4619
jmp 0x4624
movq -0x50(%rbp), %rax
movl $0x1bb, 0x60(%rax)      # imm = 0x1BB
jmp 0x4626
jmp 0x4628
jmp 0x462a
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rax
movq %rax, -0xd0(%rbp)
callq 0x31e0
movq %rax, %rcx
movq -0xd0(%rbp), %rax
cmpq %rcx, %rax
jae 0x4687
movq -0x60(%rbp), %rdi
movslq -0x18(%rbp), %rsi
callq 0x34d0
movq %rax, -0xd8(%rbp)
jmp 0x4663
movq -0x50(%rbp), %rdi
movq -0xd8(%rbp), %rax
movsbl (%rax), %esi
addq $0x40, %rdi
callq 0x31b0
jmp 0x467c
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x462a
movb $0x1, -0x11(%rbp)
testb $0x1, -0x11(%rbp)
jne 0x469a
movq -0x50(%rbp), %rdi
callq 0x5e80
movq -0x58(%rbp), %rax
addq $0xe0, %rsp
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x5e80
movq -0x20(%rbp), %rdi
callq 0x3440
nopl (%rax)