#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 **)0x20004f48) = (uint32_t *)0x10018b0c;
  ;
  *((uint32_t **)0x20004f4c) = (uint32_t *)0x10018b30;
  ;
  *((uint32_t **)0x20004f50) = (uint32_t *)0x10018b54;
  ;
  *((uint32_t **)0x20004fa8) = (uint32_t *)0x10018b78;
  ;
  *((uint32_t **)0x20004fa0) = (uint32_t *)0x10018b9c;
  ;
  *((uint32_t **)0x20004fa4) = (uint32_t *)0x10018bc0;
  ;
  *((uint8_t *)0x20004f40) = (uint8_t)3;
  *((uint32_t **)0x20004f44) = (uint32_t *)pWorkzone;
}


x86 assembly (clang, -O0):
<ECC_initialize>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    $0x20004f48,%eax
mov    $0x10018b0c,%ecx
mov    %rcx,(%rax)
mov    $0x20004f4c,%eax
mov    $0x10018b30,%ecx
mov    %rcx,(%rax)
mov    $0x20004f50,%eax
mov    $0x10018b54,%ecx
mov    %rcx,(%rax)
mov    $0x20004fa8,%eax
mov    $0x10018b78,%ecx
mov    %rcx,(%rax)
mov    $0x20004fa0,%eax
mov    $0x10018b9c,%ecx
mov    %rcx,(%rax)
mov    $0x20004fa4,%eax
mov    $0x10018bc0,%ecx
mov    %rcx,(%rax)
mov    $0x20004f40,%eax
movq   $0x3,(%rax)
mov    -0x8(%rbp),%rcx
mov    $0x20004f44,%eax
mov    %rcx,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<ECC_initialize>:
movq   $0x10018b0c,0x20004f48
20 0c 8b 01 10
movq   $0x10018b30,0x20004f4c
20 30 8b 01 10
movq   $0x10018b54,0x20004f50
20 54 8b 01 10
movq   $0x10018b78,0x20004fa8
20 78 8b 01 10
movq   $0x10018b9c,0x20004fa0
20 9c 8b 01 10
movq   $0x10018bc0,0x20004fa4
20 c0 8b 01 10
movq   $0x3,0x20004f40
mov    %rdi,0x20004f44
20
ret

LLVM IR (-O0):
define void @ECC_initialize(i32* %0) {
%2 = alloca i32*
store i32* %0, i32** %2
store i32* inttoptr (i64 268536588 to i32*), i32** inttoptr (i64 536891208 to i32**)
store i32* inttoptr (i64 268536624 to i32*), i32** inttoptr (i64 536891212 to i32**)
store i32* inttoptr (i64 268536660 to i32*), i32** inttoptr (i64 536891216 to i32**)
store i32* inttoptr (i64 268536696 to i32*), i32** inttoptr (i64 536891304 to i32**)
store i32* inttoptr (i64 268536732 to i32*), i32** inttoptr (i64 536891296 to i32**)
store i32* inttoptr (i64 268536768 to i32*), i32** inttoptr (i64 536891300 to i32**)
store i64 3, i64* inttoptr (i64 536891200 to i64*)
%3 = load i32*, i32** %2
store i32* %3, i32** inttoptr (i64 536891204 to i32**)
ret void
}

LLVM IR (-O2):
define void @ECC_initialize(i32* %0) {
store i32* inttoptr (i64 268536588 to i32*), i32** inttoptr (i64 536891208 to i32**)
store i32* inttoptr (i64 268536624 to i32*), i32** inttoptr (i64 536891212 to i32**)
store i32* inttoptr (i64 268536660 to i32*), i32** inttoptr (i64 536891216 to i32**)
store i32* inttoptr (i64 268536696 to i32*), i32** inttoptr (i64 536891304 to i32**)
store i32* inttoptr (i64 268536732 to i32*), i32** inttoptr (i64 536891296 to i32**)
store i32* inttoptr (i64 268536768 to i32*), i32** inttoptr (i64 536891300 to i32**)
store i64 3, i64* inttoptr (i64 536891200 to i64*)
store i32* %0, i32** inttoptr (i64 536891204 to i32**)
ret void
}