// File: /workspace/github_c_makefile_star2_O0/vanhauser-thc[P]vulntest/andreas.cpp
// Function: WebRequest(WebRequestForm const&)
void WebRequest(const WebRequestForm &request) {
  static std::string username = "";
  static std::string password = "";
  static double amount_of_money = 0.0;
  bool is_input_valid = IsValidString(request.username) && IsValidString(request.password) && IsMoneyInRange(request.amount_of_money);
  if (is_input_valid) {
    username = request.username;
    password = request.password;
    amount_of_money = request.amount_of_money;
  } else
    ReponseToClient("You must provide a valid username and a valid password and a valid "
                    "amount as input!");
  if (is_input_valid && LoginUser(username, password)) {
    // here we do stuff ...
    LogoutUser(username);
    ReponseToClient("Successfully did weird stuff with the money");
  }
  LoggingReponseToClient("Called the service with username = " + username + " and password = " + password);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
cmpb $0x0, 0x3caa(%rip)      # 0x61a0
jne 0x2564
leaq 0x3ca1(%rip), %rdi      # 0x61a0
callq 0x2270
cmpl $0x0, %eax
je 0x2564
leaq -0x9(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x2250
movq -0xd8(%rbp), %rdx
leaq 0x3c59(%rip), %rdi      # 0x6180
leaq 0x1c00(%rip), %rsi      # 0x412e
callq 0x2c40
jmp 0x2535
leaq -0x9(%rbp), %rdi
callq 0x21a0
movq 0x3a83(%rip), %rdi      # 0x5fc8
leaq 0x3c34(%rip), %rsi      # 0x6180
leaq 0x3c0d(%rip), %rdx      # 0x6160
callq 0x2150
leaq 0x3c41(%rip), %rdi      # 0x61a0
callq 0x20e0
cmpb $0x0, 0x3c5d(%rip)      # 0x61c8
jne 0x25d9
leaq 0x3c54(%rip), %rdi      # 0x61c8
callq 0x2270
cmpl $0x0, %eax
je 0x25d9
leaq -0x1d(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x2250
movq -0xe0(%rbp), %rdx
leaq 0x3c0c(%rip), %rdi      # 0x61a8
leaq 0x1b8b(%rip), %rsi      # 0x412e
callq 0x2c40
jmp 0x25aa
leaq -0x1d(%rbp), %rdi
callq 0x21a0
movq 0x3a0e(%rip), %rdi      # 0x5fc8
leaq 0x3be7(%rip), %rsi      # 0x61a8
leaq 0x3b98(%rip), %rdx      # 0x6160
callq 0x2150
leaq 0x3bf4(%rip), %rdi      # 0x61c8
callq 0x20e0
movq -0x8(%rbp), %rdi
callq 0x23f0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xe1(%rbp)
jne 0x25f3
jmp 0x2625
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
callq 0x23f0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xe1(%rbp)
jne 0x2611
jmp 0x2625
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
callq 0x2410
movb %al, -0xe1(%rbp)
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1e(%rbp)
testb $0x1, -0x1e(%rbp)
je 0x26c0
movq -0x8(%rbp), %rsi
leaq 0x3b3b(%rip), %rdi      # 0x6180
callq 0x2030
movq -0x8(%rbp), %rsi
addq $0x20, %rsi
leaq 0x3b4f(%rip), %rdi      # 0x61a8
callq 0x2030
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
movsd %xmm0, 0x3b61(%rip)     # 0x61d0
jmp 0x2739
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x9(%rbp), %rdi
callq 0x21a0
leaq 0x3b10(%rip), %rdi      # 0x61a0
callq 0x20d0
jmp 0x28c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1d(%rbp), %rdi
callq 0x21a0
leaq 0x3b12(%rip), %rdi      # 0x61c8
callq 0x20d0
jmp 0x28c4
leaq -0x41(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x2250
movq -0xf0(%rbp), %rdx
leaq 0x1951(%rip), %rsi      # 0x402f
leaq -0x40(%rbp), %rdi
callq 0x2c40
jmp 0x26e9
leaq -0x40(%rbp), %rdi
callq 0x2460
jmp 0x26f4
leaq -0x40(%rbp), %rdi
callq 0x22b8
leaq -0x41(%rbp), %rdi
callq 0x21a0
jmp 0x2739
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x272b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x22b8
leaq -0x41(%rbp), %rdi
callq 0x21a0
jmp 0x28c4
testb $0x1, -0x1e(%rbp)
je 0x27e4
leaq 0x3a36(%rip), %rdi      # 0x6180
leaq 0x3a57(%rip), %rsi      # 0x61a8
callq 0x2430
testb $0x1, %al
jne 0x275f
jmp 0x27e4
leaq 0x3a1a(%rip), %rdi      # 0x6180
callq 0x2450
leaq -0x69(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x2250
movq -0xf8(%rbp), %rdx
leaq 0x18fa(%rip), %rsi      # 0x4083
leaq -0x68(%rbp), %rdi
callq 0x2c40
jmp 0x2794
leaq -0x68(%rbp), %rdi
callq 0x2460
jmp 0x279f
leaq -0x68(%rbp), %rdi
callq 0x22b8
leaq -0x69(%rbp), %rdi
callq 0x21a0
jmp 0x27e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x27d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x22b8
leaq -0x69(%rbp), %rdi
callq 0x21a0
jmp 0x28c4
leaq 0x18c4(%rip), %rsi      # 0x40af
leaq 0x398e(%rip), %rdx      # 0x6180
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x2d90
movq -0x100(%rbp), %rsi
leaq 0x18c0(%rip), %rdx      # 0x40d3
leaq -0xb0(%rbp), %rdi
callq 0x2d40
jmp 0x2821
leaq 0x3980(%rip), %rdx      # 0x61a8
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2cf0
jmp 0x283d
leaq -0x90(%rbp), %rdi
callq 0x24a0
jmp 0x284b
leaq -0x90(%rbp), %rdi
callq 0x22b8
leaq -0xb0(%rbp), %rdi
callq 0x22b8
leaq -0xd0(%rbp), %rdi
callq 0x22b8
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x28b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x28ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x22b8
leaq -0xb0(%rbp), %rdi
callq 0x22b8
leaq -0xd0(%rbp), %rdi
callq 0x22b8
movq -0x18(%rbp), %rdi
callq 0x2240
nopl (%rax)