void GPIOPadConfigSet(unsigned long ulPort, unsigned char ucPins,
                      unsigned long ulStrength, unsigned long ulPinType) {
  ;

  ;

  (*((volatile unsigned long *)(ulPort + 0x00000500))) =
      ((ulStrength & 1)
           ? ((*((volatile unsigned long *)(ulPort + 0x00000500))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x00000500))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x00000504))) =
      ((ulStrength & 2)
           ? ((*((volatile unsigned long *)(ulPort + 0x00000504))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x00000504))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x00000508))) =
      ((ulStrength & 4)
           ? ((*((volatile unsigned long *)(ulPort + 0x00000508))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x00000508))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x00000518))) =
      ((ulStrength & 8)
           ? ((*((volatile unsigned long *)(ulPort + 0x00000518))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x00000518))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x0000050C))) =
      ((ulPinType & 1)
           ? ((*((volatile unsigned long *)(ulPort + 0x0000050C))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x0000050C))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x00000510))) =
      ((ulPinType & 2)
           ? ((*((volatile unsigned long *)(ulPort + 0x00000510))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x00000510))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x00000514))) =
      ((ulPinType & 4)
           ? ((*((volatile unsigned long *)(ulPort + 0x00000514))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x00000514))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x0000051C))) =
      ((ulPinType & 8)
           ? ((*((volatile unsigned long *)(ulPort + 0x0000051C))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x0000051C))) &
              ~(ucPins)));
  (*((volatile unsigned long *)(ulPort + 0x00000528))) =
      ((ulPinType == 0x00000000)
           ? ((*((volatile unsigned long *)(ulPort + 0x00000528))) | ucPins)
           : ((*((volatile unsigned long *)(ulPort + 0x00000528))) &
              ~(ucPins)));
}


x86 assembly (clang, -O0):
<GPIOPadConfigSet>:
push   %rbp
mov    %rsp,%rbp
mov    %sil,%al
mov    %rdi,-0x8(%rbp)
mov    %al,-0x9(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    -0x18(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
je     1143 <GPIOPadConfigSet+0x43>
mov    -0x8(%rbp),%rax
mov    0x500(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x28(%rbp)
jmp    115f <GPIOPadConfigSet+0x5f>
mov    -0x8(%rbp),%rax
mov    0x500(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x500(%rax)
mov    -0x18(%rbp),%rax
and    $0x2,%rax
cmp    $0x0,%rax
je     119b <GPIOPadConfigSet+0x9b>
mov    -0x8(%rbp),%rax
mov    0x504(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x30(%rbp)
jmp    11b7 <GPIOPadConfigSet+0xb7>
mov    -0x8(%rbp),%rax
mov    0x504(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x504(%rax)
mov    -0x18(%rbp),%rax
and    $0x4,%rax
cmp    $0x0,%rax
je     11f3 <GPIOPadConfigSet+0xf3>
mov    -0x8(%rbp),%rax
mov    0x508(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    120f <GPIOPadConfigSet+0x10f>
mov    -0x8(%rbp),%rax
mov    0x508(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x508(%rax)
mov    -0x18(%rbp),%rax
and    $0x8,%rax
cmp    $0x0,%rax
je     124b <GPIOPadConfigSet+0x14b>
mov    -0x8(%rbp),%rax
mov    0x518(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x40(%rbp)
jmp    1267 <GPIOPadConfigSet+0x167>
mov    -0x8(%rbp),%rax
mov    0x518(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x518(%rax)
mov    -0x20(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
je     12a3 <GPIOPadConfigSet+0x1a3>
mov    -0x8(%rbp),%rax
mov    0x50c(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x48(%rbp)
jmp    12bf <GPIOPadConfigSet+0x1bf>
mov    -0x8(%rbp),%rax
mov    0x50c(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x50c(%rax)
mov    -0x20(%rbp),%rax
and    $0x2,%rax
cmp    $0x0,%rax
je     12fb <GPIOPadConfigSet+0x1fb>
mov    -0x8(%rbp),%rax
mov    0x510(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x50(%rbp)
jmp    1317 <GPIOPadConfigSet+0x217>
mov    -0x8(%rbp),%rax
mov    0x510(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x510(%rax)
mov    -0x20(%rbp),%rax
and    $0x4,%rax
cmp    $0x0,%rax
je     1353 <GPIOPadConfigSet+0x253>
mov    -0x8(%rbp),%rax
mov    0x514(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x58(%rbp)
jmp    136f <GPIOPadConfigSet+0x26f>
mov    -0x8(%rbp),%rax
mov    0x514(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x514(%rax)
mov    -0x20(%rbp),%rax
and    $0x8,%rax
cmp    $0x0,%rax
je     13ab <GPIOPadConfigSet+0x2ab>
mov    -0x8(%rbp),%rax
mov    0x51c(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x60(%rbp)
jmp    13c7 <GPIOPadConfigSet+0x2c7>
mov    -0x8(%rbp),%rax
mov    0x51c(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x51c(%rax)
cmpq   $0x0,-0x20(%rbp)
jne    13fc <GPIOPadConfigSet+0x2fc>
mov    -0x8(%rbp),%rax
mov    0x528(%rax),%rax
movzbl -0x9(%rbp),%ecx
or     %rcx,%rax
mov    %rax,-0x68(%rbp)
jmp    1418 <GPIOPadConfigSet+0x318>
mov    -0x8(%rbp),%rax
mov    0x528(%rax),%rax
movzbl -0x9(%rbp),%ecx
xor    $0xffffffff,%ecx
movslq %ecx,%rcx
and    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x528(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<GPIOPadConfigSet>:
mov    0x500(%rdi),%rax
mov    %esi,%r8d
mov    %r8,%r9
not    %r9
mov    %rax,%rsi
and    %r9,%rsi
or     %r8,%rax
test   $0x1,%dl
cmove  %rsi,%rax
mov    %rax,0x500(%rdi)
mov    0x504(%rdi),%rax
mov    %rax,%rsi
and    %r9,%rsi
or     %r8,%rax
test   $0x2,%dl
cmove  %rsi,%rax
mov    %rax,0x504(%rdi)
mov    0x508(%rdi),%rax
mov    %rax,%rsi
and    %r9,%rsi
or     %r8,%rax
test   $0x4,%dl
cmove  %rsi,%rax
mov    %rax,0x508(%rdi)
mov    0x518(%rdi),%rax
mov    %rax,%rsi
and    %r9,%rsi
or     %r8,%rax
test   $0x8,%dl
cmove  %rsi,%rax
mov    %rax,0x518(%rdi)
mov    0x50c(%rdi),%rax
mov    %rax,%rdx
and    %r9,%rdx
or     %r8,%rax
test   $0x1,%cl
cmove  %rdx,%rax
mov    %rax,0x50c(%rdi)
mov    0x510(%rdi),%rax
mov    %rax,%rdx
and    %r9,%rdx
or     %r8,%rax
test   $0x2,%cl
cmove  %rdx,%rax
mov    %rax,0x510(%rdi)
mov    0x514(%rdi),%rax
mov    %rax,%rdx
and    %r9,%rdx
or     %r8,%rax
test   $0x4,%cl
cmove  %rdx,%rax
mov    %rax,0x514(%rdi)
mov    0x51c(%rdi),%rdx
test   $0x8,%cl
jne    120e <GPIOPadConfigSet+0x10e>
mov    %r8,%r9
not    %r9
and    %r9,%rdx
mov    %rdx,0x51c(%rdi)
test   %rcx,%rcx
jne    1218 <GPIOPadConfigSet+0x118>
or     0x528(%rdi),%r8
add    $0x528,%rdi
mov    %r8,(%rdi)
ret
or     %r8,%rdx
mov    %rdx,0x51c(%rdi)
and    0x528(%rdi),%r9
add    $0x528,%rdi
mov    %r9,(%rdi)
ret

LLVM IR (-O0):
define void @GPIOPadConfigSet(i64 %0, i8 zeroext %1, i64 %2, i64 %3) {
%5 = alloca i64
%6 = alloca i8
%7 = alloca i64
%8 = alloca i64
store i64 %0, i64* %5
store i8 %1, i8* %6
store i64 %2, i64* %7
store i64 %3, i64* %8
%9 = load i64, i64* %7
%10 = and i64 %9, 1
%11 = icmp ne i64 %10, 0
br i1 %11, label %12, label %20
12: ; preds = %4
%13 = load i64, i64* %5
%14 = add i64 %13, 1280
%15 = inttoptr i64 %14 to i64*
%16 = load volatile i64, i64* %15
%17 = load i8, i8* %6
%18 = zext i8 %17 to i64
%19 = or i64 %16, %18
br label %30
20: ; preds = %4
%21 = load i64, i64* %5
%22 = add i64 %21, 1280
%23 = inttoptr i64 %22 to i64*
%24 = load volatile i64, i64* %23
%25 = load i8, i8* %6
%26 = zext i8 %25 to i32
%27 = xor i32 %26, -1
%28 = sext i32 %27 to i64
%29 = and i64 %24, %28
br label %30
30: ; preds = %20, %12
%31 = phi i64 [ %19, %12 ], [ %29, %20 ]
%32 = load i64, i64* %5
%33 = add i64 %32, 1280
%34 = inttoptr i64 %33 to i64*
store volatile i64 %31, i64* %34
%35 = load i64, i64* %7
%36 = and i64 %35, 2
%37 = icmp ne i64 %36, 0
br i1 %37, label %38, label %46
38: ; preds = %30
%39 = load i64, i64* %5
%40 = add i64 %39, 1284
%41 = inttoptr i64 %40 to i64*
%42 = load volatile i64, i64* %41
%43 = load i8, i8* %6
%44 = zext i8 %43 to i64
%45 = or i64 %42, %44
br label %56
46: ; preds = %30
%47 = load i64, i64* %5
%48 = add i64 %47, 1284
%49 = inttoptr i64 %48 to i64*
%50 = load volatile i64, i64* %49
%51 = load i8, i8* %6
%52 = zext i8 %51 to i32
%53 = xor i32 %52, -1
%54 = sext i32 %53 to i64
%55 = and i64 %50, %54
br label %56
56: ; preds = %46, %38
%57 = phi i64 [ %45, %38 ], [ %55, %46 ]
%58 = load i64, i64* %5
%59 = add i64 %58, 1284
%60 = inttoptr i64 %59 to i64*
store volatile i64 %57, i64* %60
%61 = load i64, i64* %7
%62 = and i64 %61, 4
%63 = icmp ne i64 %62, 0
br i1 %63, label %64, label %72
64: ; preds = %56
%65 = load i64, i64* %5
%66 = add i64 %65, 1288
%67 = inttoptr i64 %66 to i64*
%68 = load volatile i64, i64* %67
%69 = load i8, i8* %6
%70 = zext i8 %69 to i64
%71 = or i64 %68, %70
br label %82
72: ; preds = %56
%73 = load i64, i64* %5
%74 = add i64 %73, 1288
%75 = inttoptr i64 %74 to i64*
%76 = load volatile i64, i64* %75
%77 = load i8, i8* %6
%78 = zext i8 %77 to i32
%79 = xor i32 %78, -1
%80 = sext i32 %79 to i64
%81 = and i64 %76, %80
br label %82
82: ; preds = %72, %64
%83 = phi i64 [ %71, %64 ], [ %81, %72 ]
%84 = load i64, i64* %5
%85 = add i64 %84, 1288
%86 = inttoptr i64 %85 to i64*
store volatile i64 %83, i64* %86
%87 = load i64, i64* %7
%88 = and i64 %87, 8
%89 = icmp ne i64 %88, 0
br i1 %89, label %90, label %98
90: ; preds = %82
%91 = load i64, i64* %5
%92 = add i64 %91, 1304
%93 = inttoptr i64 %92 to i64*
%94 = load volatile i64, i64* %93
%95 = load i8, i8* %6
%96 = zext i8 %95 to i64
%97 = or i64 %94, %96
br label %108
98: ; preds = %82
%99 = load i64, i64* %5
%100 = add i64 %99, 1304
%101 = inttoptr i64 %100 to i64*
%102 = load volatile i64, i64* %101
%103 = load i8, i8* %6
%104 = zext i8 %103 to i32
%105 = xor i32 %104, -1
%106 = sext i32 %105 to i64
%107 = and i64 %102, %106
br label %108
108: ; preds = %98, %90
%109 = phi i64 [ %97, %90 ], [ %107, %98 ]
%110 = load i64, i64* %5
%111 = add i64 %110, 1304
%112 = inttoptr i64 %111 to i64*
store volatile i64 %109, i64* %112
%113 = load i64, i64* %8
%114 = and i64 %113, 1
%115 = icmp ne i64 %114, 0
br i1 %115, label %116, label %124
116: ; preds = %108
%117 = load i64, i64* %5
%118 = add i64 %117, 1292
%119 = inttoptr i64 %118 to i64*
%120 = load volatile i64, i64* %119
%121 = load i8, i8* %6
%122 = zext i8 %121 to i64
%123 = or i64 %120, %122
br label %134
124: ; preds = %108
%125 = load i64, i64* %5
%126 = add i64 %125, 1292
%127 = inttoptr i64 %126 to i64*
%128 = load volatile i64, i64* %127
%129 = load i8, i8* %6
%130 = zext i8 %129 to i32
%131 = xor i32 %130, -1
%132 = sext i32 %131 to i64
%133 = and i64 %128, %132
br label %134
134: ; preds = %124, %116
%135 = phi i64 [ %123, %116 ], [ %133, %124 ]
%136 = load i64, i64* %5
%137 = add i64 %136, 1292
%138 = inttoptr i64 %137 to i64*
store volatile i64 %135, i64* %138
%139 = load i64, i64* %8
%140 = and i64 %139, 2
%141 = icmp ne i64 %140, 0
br i1 %141, label %142, label %150
142: ; preds = %134
%143 = load i64, i64* %5
%144 = add i64 %143, 1296
%145 = inttoptr i64 %144 to i64*
%146 = load volatile i64, i64* %145
%147 = load i8, i8* %6
%148 = zext i8 %147 to i64
%149 = or i64 %146, %148
br label %160
150: ; preds = %134
%151 = load i64, i64* %5
%152 = add i64 %151, 1296
%153 = inttoptr i64 %152 to i64*
%154 = load volatile i64, i64* %153
%155 = load i8, i8* %6
%156 = zext i8 %155 to i32
%157 = xor i32 %156, -1
%158 = sext i32 %157 to i64
%159 = and i64 %154, %158
br label %160
160: ; preds = %150, %142
%161 = phi i64 [ %149, %142 ], [ %159, %150 ]
%162 = load i64, i64* %5
%163 = add i64 %162, 1296
%164 = inttoptr i64 %163 to i64*
store volatile i64 %161, i64* %164
%165 = load i64, i64* %8
%166 = and i64 %165, 4
%167 = icmp ne i64 %166, 0
br i1 %167, label %168, label %176
168: ; preds = %160
%169 = load i64, i64* %5
%170 = add i64 %169, 1300
%171 = inttoptr i64 %170 to i64*
%172 = load volatile i64, i64* %171
%173 = load i8, i8* %6
%174 = zext i8 %173 to i64
%175 = or i64 %172, %174
br label %186
176: ; preds = %160
%177 = load i64, i64* %5
%178 = add i64 %177, 1300
%179 = inttoptr i64 %178 to i64*
%180 = load volatile i64, i64* %179
%181 = load i8, i8* %6
%182 = zext i8 %181 to i32
%183 = xor i32 %182, -1
%184 = sext i32 %183 to i64
%185 = and i64 %180, %184
br label %186
186: ; preds = %176, %168
%187 = phi i64 [ %175, %168 ], [ %185, %176 ]
%188 = load i64, i64* %5
%189 = add i64 %188, 1300
%190 = inttoptr i64 %189 to i64*
store volatile i64 %187, i64* %190
%191 = load i64, i64* %8
%192 = and i64 %191, 8
%193 = icmp ne i64 %192, 0
br i1 %193, label %194, label %202
194: ; preds = %186
%195 = load i64, i64* %5
%196 = add i64 %195, 1308
%197 = inttoptr i64 %196 to i64*
%198 = load volatile i64, i64* %197
%199 = load i8, i8* %6
%200 = zext i8 %199 to i64
%201 = or i64 %198, %200
br label %212
202: ; preds = %186
%203 = load i64, i64* %5
%204 = add i64 %203, 1308
%205 = inttoptr i64 %204 to i64*
%206 = load volatile i64, i64* %205
%207 = load i8, i8* %6
%208 = zext i8 %207 to i32
%209 = xor i32 %208, -1
%210 = sext i32 %209 to i64
%211 = and i64 %206, %210
br label %212
212: ; preds = %202, %194
%213 = phi i64 [ %201, %194 ], [ %211, %202 ]
%214 = load i64, i64* %5
%215 = add i64 %214, 1308
%216 = inttoptr i64 %215 to i64*
store volatile i64 %213, i64* %216
%217 = load i64, i64* %8
%218 = icmp eq i64 %217, 0
br i1 %218, label %219, label %227
219: ; preds = %212
%220 = load i64, i64* %5
%221 = add i64 %220, 1320
%222 = inttoptr i64 %221 to i64*
%223 = load volatile i64, i64* %222
%224 = load i8, i8* %6
%225 = zext i8 %224 to i64
%226 = or i64 %223, %225
br label %237
227: ; preds = %212
%228 = load i64, i64* %5
%229 = add i64 %228, 1320
%230 = inttoptr i64 %229 to i64*
%231 = load volatile i64, i64* %230
%232 = load i8, i8* %6
%233 = zext i8 %232 to i32
%234 = xor i32 %233, -1
%235 = sext i32 %234 to i64
%236 = and i64 %231, %235
br label %237
237: ; preds = %227, %219
%238 = phi i64 [ %226, %219 ], [ %236, %227 ]
%239 = load i64, i64* %5
%240 = add i64 %239, 1320
%241 = inttoptr i64 %240 to i64*
store volatile i64 %238, i64* %241
ret void
}

LLVM IR (-O2):
define void @GPIOPadConfigSet(i64 %0, i8 zeroext %1, i64 %2, i64 %3) {
%5 = and i64 %2, 1
%6 = icmp eq i64 %5, 0
%7 = add i64 %0, 1280
%8 = inttoptr i64 %7 to i64*
%9 = load volatile i64, i64* %8
%10 = zext i8 %1 to i64
%11 = xor i64 %10, -1
%12 = and i64 %9, %11
%13 = or i64 %9, %10
%14 = select i1 %6, i64 %12, i64 %13
store volatile i64 %14, i64* %8
%15 = and i64 %2, 2
%16 = icmp eq i64 %15, 0
%17 = add i64 %0, 1284
%18 = inttoptr i64 %17 to i64*
%19 = load volatile i64, i64* %18
%20 = zext i8 %1 to i64
%21 = xor i64 %20, -1
%22 = and i64 %19, %21
%23 = or i64 %19, %20
%24 = select i1 %16, i64 %22, i64 %23
store volatile i64 %24, i64* %18
%25 = and i64 %2, 4
%26 = icmp eq i64 %25, 0
%27 = add i64 %0, 1288
%28 = inttoptr i64 %27 to i64*
%29 = load volatile i64, i64* %28
%30 = zext i8 %1 to i64
%31 = xor i64 %30, -1
%32 = and i64 %29, %31
%33 = or i64 %29, %30
%34 = select i1 %26, i64 %32, i64 %33
store volatile i64 %34, i64* %28
%35 = and i64 %2, 8
%36 = icmp eq i64 %35, 0
%37 = add i64 %0, 1304
%38 = inttoptr i64 %37 to i64*
%39 = load volatile i64, i64* %38
%40 = zext i8 %1 to i64
%41 = xor i64 %40, -1
%42 = and i64 %39, %41
%43 = or i64 %39, %40
%44 = select i1 %36, i64 %42, i64 %43
store volatile i64 %44, i64* %38
%45 = and i64 %3, 1
%46 = icmp eq i64 %45, 0
%47 = add i64 %0, 1292
%48 = inttoptr i64 %47 to i64*
%49 = load volatile i64, i64* %48
%50 = zext i8 %1 to i64
%51 = xor i64 %50, -1
%52 = and i64 %49, %51
%53 = or i64 %49, %50
%54 = select i1 %46, i64 %52, i64 %53
store volatile i64 %54, i64* %48
%55 = and i64 %3, 2
%56 = icmp eq i64 %55, 0
%57 = add i64 %0, 1296
%58 = inttoptr i64 %57 to i64*
%59 = load volatile i64, i64* %58
%60 = zext i8 %1 to i64
%61 = xor i64 %60, -1
%62 = and i64 %59, %61
%63 = or i64 %59, %60
%64 = select i1 %56, i64 %62, i64 %63
store volatile i64 %64, i64* %58
%65 = and i64 %3, 4
%66 = icmp eq i64 %65, 0
%67 = add i64 %0, 1300
%68 = inttoptr i64 %67 to i64*
%69 = load volatile i64, i64* %68
%70 = zext i8 %1 to i64
%71 = xor i64 %70, -1
%72 = and i64 %69, %71
%73 = or i64 %69, %70
%74 = select i1 %66, i64 %72, i64 %73
store volatile i64 %74, i64* %68
%75 = and i64 %3, 8
%76 = icmp eq i64 %75, 0
%77 = add i64 %0, 1308
%78 = inttoptr i64 %77 to i64*
%79 = load volatile i64, i64* %78
%80 = zext i8 %1 to i64
br i1 %76, label %84, label %81
81: ; preds = %4
%82 = or i64 %79, %80
store volatile i64 %82, i64* %78
%83 = xor i64 %80, -1
br label %93
84: ; preds = %4
%85 = xor i64 %80, -1
%86 = and i64 %79, %85
store volatile i64 %86, i64* %78
%87 = icmp eq i64 %3, 0
br i1 %87, label %88, label %93
88: ; preds = %84
%89 = add i64 %0, 1320
%90 = inttoptr i64 %89 to i64*
%91 = load volatile i64, i64* %90
%92 = or i64 %91, %80
br label %99
93: ; preds = %81, %84
%94 = phi i64 [ %83, %81 ], [ %85, %84 ]
%95 = add i64 %0, 1320
%96 = inttoptr i64 %95 to i64*
%97 = load volatile i64, i64* %96
%98 = and i64 %97, %94
br label %99
99: ; preds = %93, %88
%100 = phi i64* [ %96, %93 ], [ %90, %88 ]
%101 = phi i64 [ %98, %93 ], [ %92, %88 ]
store volatile i64 %101, i64* %100
ret void
}