#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef scalar_t__ uint8_t;
typedef int /*<<< orphan*/ uint32_t;

/* Variables and functions */
void ECC_initialize(uint32_t *pWorkzone) {
  *((uint32_t **)0x20000138) = (uint32_t *)0x100257d4;
  ;
  *((uint32_t **)0x2000013c) = (uint32_t *)0x100257f8;
  ;
  *((uint32_t **)0x20000140) = (uint32_t *)0x1002581c;
  ;
  *((uint32_t **)0x20000144) = (uint32_t *)0x10025840;
  ;
  *((uint32_t **)0x2000012c) = (uint32_t *)0x10025864;
  ;
  *((uint32_t **)0x20000130) = (uint32_t *)0x10025888;
  ;
  *((uint8_t *)0x20000148) = (uint8_t)3;
  *((uint32_t **)0x20000134) = (uint32_t *)pWorkzone;
}


x86 assembly (clang, -O0):
<ECC_initialize>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    $0x20000138,%eax
mov    $0x100257d4,%ecx
mov    %rcx,(%rax)
mov    $0x2000013c,%eax
mov    $0x100257f8,%ecx
mov    %rcx,(%rax)
mov    $0x20000140,%eax
mov    $0x1002581c,%ecx
mov    %rcx,(%rax)
mov    $0x20000144,%eax
mov    $0x10025840,%ecx
mov    %rcx,(%rax)
mov    $0x2000012c,%eax
mov    $0x10025864,%ecx
mov    %rcx,(%rax)
mov    $0x20000130,%eax
mov    $0x10025888,%ecx
mov    %rcx,(%rax)
mov    $0x20000148,%eax
movq   $0x3,(%rax)
mov    -0x8(%rbp),%rcx
mov    $0x20000134,%eax
mov    %rcx,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<ECC_initialize>:
movq   $0x100257d4,0x20000138
20 d4 57 02 10
movq   $0x100257f8,0x2000013c
20 f8 57 02 10
movq   $0x1002581c,0x20000140
20 1c 58 02 10
movq   $0x10025840,0x20000144
20 40 58 02 10
movq   $0x10025864,0x2000012c
20 64 58 02 10
movq   $0x10025888,0x20000130
20 88 58 02 10
movq   $0x3,0x20000148
mov    %rdi,0x20000134
20
ret

LLVM IR (-O0):
define void @ECC_initialize(i32* %0) {
%2 = alloca i32*
store i32* %0, i32** %2
store i32* inttoptr (i64 268589012 to i32*), i32** inttoptr (i64 536871224 to i32**)
store i32* inttoptr (i64 268589048 to i32*), i32** inttoptr (i64 536871228 to i32**)
store i32* inttoptr (i64 268589084 to i32*), i32** inttoptr (i64 536871232 to i32**)
store i32* inttoptr (i64 268589120 to i32*), i32** inttoptr (i64 536871236 to i32**)
store i32* inttoptr (i64 268589156 to i32*), i32** inttoptr (i64 536871212 to i32**)
store i32* inttoptr (i64 268589192 to i32*), i32** inttoptr (i64 536871216 to i32**)
store i64 3, i64* inttoptr (i64 536871240 to i64*)
%3 = load i32*, i32** %2
store i32* %3, i32** inttoptr (i64 536871220 to i32**)
ret void
}

LLVM IR (-O2):
define void @ECC_initialize(i32* %0) {
store i32* inttoptr (i64 268589012 to i32*), i32** inttoptr (i64 536871224 to i32**)
store i32* inttoptr (i64 268589048 to i32*), i32** inttoptr (i64 536871228 to i32**)
store i32* inttoptr (i64 268589084 to i32*), i32** inttoptr (i64 536871232 to i32**)
store i32* inttoptr (i64 268589120 to i32*), i32** inttoptr (i64 536871236 to i32**)
store i32* inttoptr (i64 268589156 to i32*), i32** inttoptr (i64 536871212 to i32**)
store i32* inttoptr (i64 268589192 to i32*), i32** inttoptr (i64 536871216 to i32**)
store i64 3, i64* inttoptr (i64 536871240 to i64*)
store i32* %0, i32** inttoptr (i64 536871220 to i32**)
ret void
}